Today it’s something about actual hardware, not just software. For Christmas I took a long LED-strip and hooked it up to an Arduino One to create some animations. But not having WiFi was a bit of a shame, because this meant you couldn’t control it from a smartphone. So I dug around and found this: Atom Lite ESP32 which is a nice little controller including WiFi, USB-C, a 4-pin cable with +5V, GND, and two data pins, as well as 6 other pin-IOs. It’s based on the ESP32 controller and you can program it from the Arduino IDE. It also has bluetooth and Infrared, but I didn’t try this out.
It took me some time to get all the libraries correctly loaded, and then finding the good examples. Of course I spent 1h with nothing working, only to discover that
- If you connect to Data Out of the LED-strip to send your commands through, it fails – use Data In
- One of the cables was badly soldered and didn’t make contact
But after that the libraries allow you to create a nice REST interface using callbacks, in C, nonetheless.
// Setting up WiFi WiFi.begin(ssid, password); // Handling requests server.on("/", handleRoot); server.on(UriBraces("/led/{}"), handleLed); server.begin();
This is all for the setup. The handleRoot is sending out just a static website, while the handleLED takes part of the path as an argument:
void handleLed() { String led = server.pathArg(0);
So really easy. Just for the demonstration I made a small animations of the 8 leds in the stripe, and using the web-interface you can add a green or a red led to it:
Now for next Christmas I can take the rest of the 5m stripe and add a WiFi interface…
— Linus