This shows you the differences between two versions of the page.
iothings:proiecte:2025sric:ledstrip [2025/05/29 00:22] andrei.besliu [Code Snippets] |
iothings:proiecte:2025sric:ledstrip [2025/05/29 00:48] (current) andrei.besliu [ESP32 Web-based LED strip] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== ESP32 Web-based LED strip ====== | + | ====== ESP32 BLE-based LED strip ====== |
* Author: Besliu Andrei-Cornel | * Author: Besliu Andrei-Cornel | ||
Line 5: | Line 5: | ||
* Master: SCPD | * Master: SCPD | ||
* Video Link: https://youtu.be/Q6bHqYo0OGY | * Video Link: https://youtu.be/Q6bHqYo0OGY | ||
- | * Source Code: TBD | + | * Source Code: {{:iothings:proiecte:2025sric:besliu_andrei_iot.zip}} |
====== Introduction ====== | ====== Introduction ====== | ||
Line 12: | Line 12: | ||
====== Hardware ====== | ====== Hardware ====== | ||
- | * ESP32-WROOM-32: 1 x ESP32 Sparrow development board | + | * **ESP32-WROOM-32:** 1 x ESP32 Sparrow development board |
- | * NeoPixel LED Strip: 1 x 5m NeoPixel LED strip, 300 LED's. | + | * **NeoPixel LED Strip:** 1 x 5m NeoPixel LED strip, 300 LED's. |
- | * Breadboard: 1x Breadboard for securing connections. | + | * **Breadboard:** 1x Breadboard for securing connections. |
- | * Connecting Cables | + | * **Connecting Cables** |
- | * USB-A to micro USB cable | + | * **USB-A to micro USB cable** |
====== Diagram ====== | ====== Diagram ====== | ||
Line 154: | Line 153: | ||
====== Challenges ====== | ====== Challenges ====== | ||
- | ====== References ====== | + | Not having proper soldering tools leads to bad electrical contacts and makes it a nightmare to debug any issues. Thankfully, jamming a wire through the ESP32 DevBoard pins worked brilliantly, just don't ask me to move it anywhere. |
+ | Initially I wanted to use both BLE and a webpage hosted on the ESP32 itself to allow control of the LED strip from multiple sources but due to memory constraints on the ESP32 I had to choose only one (91% memory usage with the BLE implementation alone). | ||
+ | I find it very annoying how BLE handles characteristics, only having a predefined set of BLEUUID's available to pick and choose from. For example, the was no readily available UUID for brightness or color, just a generic "LED Array" or "Led Strip". | ||
+ | |||
+ | I choose BLE due to the easy implementaion as baking-in a HTML page in the Arduino IDE seems janky to me. The right way to approach would be by installing a lightweight RTOS such as NuttX or freeRTOS and ditching the BLE for a more customizable webpage, as in our case battery and power constraints are irrelevant. | ||
+ | |||
+ | ====== References ====== | ||
+ | * Adafruit_NeoPixel: https://github.com/adafruit/Adafruit_NeoPixel | ||
+ | * ArduinoBle: https://docs.arduino.cc/libraries/arduinoble/ | ||
+ | * Our OCW labs. | ||
+ | * Some helpful StackOverflow threads. |