This software is meant to be flashed on an esp8266, connected with an RGB LED strip. It is able to drive all colors of the strip from 0 to 100% dimmable via multichannel pwm.
No bridge is required. Instead, this project uses the esp-homekit implementation found here: https://github.com/maximkulkin/esp-homekit to directly connect with homekit controller devices.
- Install esp-open-sdk, build it with
make toolchain esptool libhal STANDALONE=n
, then edit your PATH and add the generated toolchain bin directory. The path will be something like /path/to/esp-open-sdk/xtensa-lx106-elf/bin. - Install esptool.py and make it available on your PATH. If you used esp-open-sdk then this is done already.
- Checkout esp-open-rtos and set SDK_PATH environment variable pointing to it.
- Clone esp-homekit-demo (for archive purposes forked here) and initialize all submodules (recursively):
git clone https://github.com/maximkulkin/esp-homekit-demo
cd esp-homekit-demo
git submodule update --init --recursive
- Copy wifi.h.sample -> wifi.h and edit it with correct WiFi SSID and password:
cp wifi.h.sample wifi.h
vi wifi.h
- Clone this project into the examples subfolder and copy config.h.sample -> config.h. Set correct config options afterwards:
cd examples
git clone https://github.com/DominikHorn/esp8266-rgb-led-strip.git
cd esp8266-rgb-led-strip
cp config.h.sample config.h
vi config.h
- Configure settings:
- If you use ESP8266 with 4MB of flash (32m bit), then you're fine. If you have 1MB chip, you need to set following environment variables:
export FLASH_SIZE=8 export HOMEKIT_SPI_FLASH_BASE_ADDR=0x7a000
- If you're debugging stuff, or have troubles and want to file issue and attach log, please enable DEBUG output:
export HOMEKIT_DEBUG=1
- Depending on your device, it might be required to change the flash mode:
(see issue #80)export FLASH_MODE=dout
- Build:
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
make -C . all
- Set ESPPORT environment variable pointing to USB device your ESP8266 is attached to (assuming your device is at /dev/tty.SLAB_USBtoUART):
export ESPPORT=/dev/tty.SLAB_USBtoUART
- To prevent any effects from previous firmware (e.g. firmware crashing right at start), highly recommend to erase flash:
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
make -C . erase_flash
- Upload firmware to ESP:
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
make -C . test
or
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
make -C flash
make -C monitor
or
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
./build.sh
- Open Home app on your device, and click '+'. If Home does not recognize the ESP8266, proceed to adding device anyways by entering code.
Try to monitor the ESP8266 while it's executing the software:
cd esp-homekit-demo/examples/esp8266-rgb-led-strip
make -C . monitor
It is often also a good idea to reset the ESP (cutoff power).
Bare in mind that I have not studied electronics engineering an am merely a software engineer with hobby interests in the subject. As far as I can tell my setup allows for max 3A at 12V, meaning with the LED Strip I used, 3m is the maximum possible length!
I roughly followed ideas from this tutorial/project.
- 1x esp8266. I prefer the NodeMCU version because it's PCB comes with a USB controlling unit and port built in. This allows for fast debugging and most importantly you may reflash easily even after soldering. Alternatively you can use a standard ESP8266 with a programmer unit, and solder only a mount to your custom pcb.
- 1x RGB LED Strip
- 1x DC Power Supply (12V, x Amps). Make sure this delivers enough power to drive you LED Strip length and doesn't exceed the maximum 3A at which the transistor, dc jack and step down module are rated!
- 1x DC 12V 3A power jack female
- 1x DC DC step-down module for driving esp8266 from 12V power supply
- insulated electric wire (preferably multiple colors, makes your life easier)
- 3x IRF3205 TO220 Hexfet power mosfet transistors
- 1x prototype PCB
Optional
- 1x SMD button if you wish to physically turn the strip on/off
I ordered my components from aliexpress.com. Bellow is a list of all things I ordered:
- esp8266
- RGB LED Strip
- Power supply NOTE: I've notived that this power supply makes a humming sound when the LED Strip draws power. This might be because of the PWM but I'm unsure. Maybe consider a different power supply or add a ferrite to the circuit.
- Power Jack
- DC DC Stepdown
- Wire
- Transistors
- SMD Button
- PCB NOTE: I highly recommend you order something different, but this is what I used.