To start this blog I decided to design an LED light controller. This was planned for lighting during the holidays. The controller should be able to control addressable LEDs. These are usually controlled either with only one data line in which the clock is also encoded or with two separate lines for data and clock. In a first step we want to control LEDs of the type WS2811. These use only one line for data transmission. The RISC-V based ESP32-C3 is used as controller for the LEDs. This also allows to receive control commands via WiFi. In addition, the settings can be changed via a 5-way joystick in conjunction with a small display.
The power is supplied via USB-C. The two 5.1 kΩ resistors connect the CC1/CC2 pins of the USB-C socket to ground. As far as I understand, this signals to the other side that up to 3 amps may be supplied. The 5 volts are also routed directly to the 4-pin 2mm socket J2, where the addressable LEDs can be connected. The two 180 Ω protection resistors R5/R6 are optional. The power supply for the controller is provided by the AP2112K LDO.
The ESP32-C3 used in this project is already integrated in a module. The ESP32-C3-WROOM-02 contains the actual controller, the FLASH memory, quartz, some passive components and the PCB antenna. Thus, only a few additional external components are necessary. With the button SW2 the controller can be restarted. The pins GPIO2 and GPIO8 must be high during startup. This is ensured by the two 10 k pull-up resistors R8/R9. StudioPieters has written an excellent article about the pinout of the ESP32-C3.
The jojstick and display mentioned at the beginning are also connected to the module. The backlight of the display is controlled by the NMOS Q1.
In the next part of this, we’ll turn our attention to the design of the PCB.
Leave a Reply