Unfortunately, I don't have much time to describe the project in all details (not to mention it's not fully finished yet). Anyway, I would like to put here some information for the record.
As the WiFI chip I chose a well-known ESP8266. I have it as a module in variant "ESP-03" so there is at least one GPIO free for use and enough Flash and RAM to implement all control features directly on the ESP (no need for external MCU). As the actual control element I used triac instead of relay because of the following reasons:
- In the future I would like to make a dimmer.
- It's smaller.
- It makes no sound.
The circuit for the triac is pretty much standard and looks more or less like this:
The prototype was made on the breadboard:
In the picture above, there is a power supply converter for breadboards connected to the bench-top power supply. However currently I supply the module directly from mains. I disassembled an old wall charger, which is 5V/500mA, and connected a 3.3V regulator to it. Works very well. I also ordered a 3.3V 600mA AC-DC Power Supply Buck Converter Step Down Module which should be a better solution (no need for breaking wall chargers). I haven't tested it though.
By the way: I connect a 60W bulb, so there is absolutely no need for a heat sink for the triac (even if there is a cover). Without the cover, in theory it's safe to connect even 180W of resistive load to it. However, for anything above 150W I would probably consider adding some piece of metal.
In terms of software: on the ESP8266 I created a _very_very_ simple HTTP server that parses GET messages for "light_on" and "light_off" resources (yep, it should be POST or PUT method). Having the HTTP server I can control the light from the browser. I also made a simple widget for Android device.
There are a lot of TODOs regarding this project:
- Make a dimmer.
- Fix Android widget (currently it needs to be reloaded sometimes).
- Make a plastic cover.
- Implement more HTTP methods.
- Enable mDNS.
- Implement some kind of WiFi provisioning (currently router credentials are hard-coded).
That's it, YAIP (Yet Another IoT Project)!