Introduction: ESP8266 – HomeKit NeoPixel Light Strip
I am so enthusiastic about this Software Development Kit, that I going to write a few blogs about this genius software. In each Blog I will address a other accessory that you can add to your HomeKit without the need of a bridge. Time to make a HomeKit NeoPixel Light Strip.
Step 1: HomeKit NeoPixel Light Strip
Epitomize comfort and class with the most sophisticated HomeKit-enabled LED strip the NeoPixel Light Strip. Perfected to produce true-to-life colors on command, The NeoPixel Light Strip put the brightest, most beautiful palette at your fingertips. It sets the benchmark for connected lighting of the highest caliber.
Evoke classic colors or easily create your very own favorites. The NeoPixel Light Strip lets you set the perfect atmosphere exactly how you envision it. All it takes is a quick tap or Siri voice command. And because The NeoPixel Light Strip connects directly to your iPhone, iPad or home hub via Wi-Fi, you’re spared the hassle of setting up a cumbersome bridge. So let’s start building!
Step 2: Software Preparation
We have to install esptool.py on our Mac in order to be able to flash our ESP module. To work with esptool.py, you’ll need either Python 2.7, Python 3.4 or a newer Python installation on your system. We recommend using the latest Python version, so go to Python’s website and install it in your computer.
With Python installed, open a Terminal window and install the latest stable esptool.py release with pip:
pip install esptool
Note: with some Python installations that command may not work and you’ll receive an error. If that’s the case, try to install esptool.py with:
pip3 install esptool
python -m pip install esptool
pip2 install esptool
After installing, you will have esptool.py installed into the default Python executables directory and you should be able to run it with the command esptool.py. In your Terminal window, run the following command:
With esptool.py installed in your computer, you can easily flash your ESP32 or ESP8266 boards with the firmware.
Step 3: Hardware Preparation
To Install our firmware to our esp we make our “standard” setup.
NOTE: This is an example of an RGB ws2812 i2s led strip. The ws2812 i2s library uses hardware I2S so output pin is GPIO3 and cannot be changed. On some ESP8266 such as the Wemos D1 mini, GPIO3 is the same pin used for serial comms.
Step 4: ESP OS Preparation
To run our ESP HomeKit device we need to install LCM And Open RTos.
Initial install, WiFi settings and over the air firmware upgrades for any ESP-open-RTos repository on GitHub.
A community developed open source FreeRTOS-based framework for ESP8266 WiFi-enabled microcontrollers. Intended for use in both commercial and open source projects.Originally based on, but substantially different from, the Espressif IOT RTOS SDK.
At first you need to download three bin files otaboot.bin, rboot.bin and blank_config.bin. The OTAboot.bin contains the Lifce-Cycle-Manager part. The rboot.bin contains the bootloader for the ESP8266. The blank_config.bin in just a blank config file. Now connect your device to your FTDI adapter in flash-mode.
File name: rboot.bin
File name: blank_config.bin
File name: OTABoot.bin
Putting Device Into Flash Mode
To enable ESP8266 firmware flashing GPIO0 pin must be pulled low before the device is reset. Conversely, for a normal boot, GPIO0 must be pulled high or floating. Start in FLASH MODE – Press both buttons, release the RESET button and then release the PROGRAM button.
Go to the directory you made where you put the previously downloaded Root.bin, Blank_config.bin and Otaboot.bin files (e.g Downloads)
Open the Terminal app. Click the Finder icon in your dock. Click Go. Click Utilities. Double-click Terminal. Change to the downloads directory.
Use esptool.py to flash it in your device. First, erase flash:
Normally, your ESPPort will be something like /dev/cu.usbserial-A50285BI. Then, set your device in flash-mode again, and flash the new firmware:
esptool.py -p /dev/cu.usbserial-A50285BI --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otaboot.bin
Note: If you use an old version of esptool, you must change -fs 1MB to -fs 8m.
You must configure wifi network and OTA repository. To configure wifi settings, device generates its own Wifi in AP mode. You must connect to it in order to setup your wifi network. Simply take your iOS device, go to Setting -> Wi-Fi, and search a SSID with LCM- followed of last MAC address, connect to it, and wait a few seconds until a web appears showing you all wifi networks that the device has found. Select yours, and enter password. Don’t touch Join button yet!!
Step 5: Software Installation
Now, you must configure OTA repository as well. It’s very important that you configure it right, because you can not change it in the future (If you make a mistake, you must erase and flash device again).
OTA binary file:
Normally there is only one Bin file to select. but in this case there are more flavours. The Neopixel strip comes in different lengts and different amount of LED’s. For more information read this guide: NeoPixel Uberguide. So the next step is to choos te correct amount of LED’s your stip has.
RGB NeoPixel Strips
Side-Light NeoPixel Strips
To finish initial setup, click Join button and wait about 7 minutes until process finish (While installation is working, device doesn’t show anything, and buttons don’t work). After that, LED turns on for a couple of seconds and you will be able to add your accessory to your HomeKit ecosystem using Home App. LCM will install your HomeKit device on your ESP.
Now you can add your HomeKit NeoPixel Light Strip by scanning the QR code. To make the connection between your ESP and homekit takes a few seconds.
Step 6: Testing the HomeKit NEOPIXEL LIGT STRIP
For more projects, visit my website: https://www.studiopieters.nl
Note: To produce and sell HomeKit compatible accessories, your company need to be certified for that (https://developer.apple.com/homekit/,If you’re interested in developing or manufacturing a HomeKit accessory that will be distributed or sold, your company must enroll in the MFi Program.) Espressif have their implementation of HomeKit framework, but it will give you it only if you have MFi certification (notice this text at the bottom of page you mentioned: Please note that the Espressif HomeKit SDK is available to MFi licensees only, and you need to provide the Account Number for verification purposes when requesting the SDK.).This project is a non-commercial implementation of HAP protocol, not meant for commercial use.
REFERENCE Maxim Kulkin, esp-wifi-config (2019), Library to bootstrap WiFi-enabled accessories WiFi config, https://github.com/maximkulkin/esp-wifi-config Paul Sokolovsky, esp-open-sdk (2019), Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips, https://github.com/maximkulkin/esp-wifi-config Espressif Systems, esptool (2019), ESP8266 and ESP32 serial bootloader utility, https://github.com/maximkulkin/esp-wifi-config HomeACcessoryKid, life-cycle-manager (2019), Initial install, WiFi settings and over the air firmware upgrades for any esp-open-rtos repository on GitHub, https://github.com/maximkulkin/esp-wifi-config
2 years ago
One of my favorite aspects of NeoPixels is the ability to program and animate the LEDs. Is there a way to still utilize those aspects with this approach, having HomeKit control over preprogrammed animation to any degree?
Reply 2 years ago
@jaxelsson Sure that's posible, look here: https://github.com/maximkulkin/esp-homekit-demo/tree/master/examples/led_strip_animation
Reply 2 years ago
Awesome! Thank you sir!
3 years ago
Where can i find the file otaboot.bin? The list is cracked.
Question 3 years ago
It seems that it doesn’t work with SK6812 RGBW?
Reply 3 years ago
@Mlody It's made for the WS2812 Integrated Light Source, so it's uses
just Red, green and blue LEDs. The use for RGBW is on my todo list.