VasilKalchev / PXLstick

Board for driving WS281x lights with ESP32 running Aircoookie's WLED firmware

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PXL stick v1.0

Board for driving WS281x lights with ESP32 running Aircoookie's WLED firmware

images of the 3D render of the board from different angles and of the PCB project

poor fabrication

The fabricated board from release v1.0 worked, but has significant problems.

❗ Browse repository releases for a better version.

WLED firmware

Note

If you haven't heard of WLED, it's best to check it out first.


Characteristics

The board is intended for mounting on some kind of vertical stick, that has a WS281x LED strip on it.

  • Runs a custom build of WLED on a ESP32-WROOM-32E module.
  • Physically controllable through 2 user configurable touch buttons and a rotary encoder for brightness and color.
  • It also has an infrared receiver for further flexibility.
  • Equipped with an I2S mic to enable WLED's audio reactive effects.
  • Level shifted WS281x data signal.
  • Narrow form factor: 25x100mm

How to use it?

Warning

This version of the board has problems discovered after the release. It's not recommended for use!

  1. PCB fabrication
  2. Assembly
  3. Wiring and mounting
  4. Firmware binary
  5. Flashing
  6. Configuration

1. PCB fabrication

The release includes Gerber and drill files, generated according to JLCPCB's instructions. Other fabricators may have different Gerber and drill files requirements, in which case you'll have to generate the files manually, according to their specification.

If you have made modifications to the PCB and want to regenerate the exports - you can use the scripts provided in /hw/export/.

2. Assembly

INMP441 mic

INMP441 variants

There are two footprints for the INMP441 mic. U3 is for its 9-terminal LGA_CAV package (located on the back of the PCB) and A1 is for its breakout board (can be soldered on either side). When using the breakout board - don't solder C7, R9 and R10.

Optional peripherals

  • IR receiver (U2, R8, C6)
  • rotary encoder (RE1, R2, R3, R4, C3, C4, C5)
  • microphone (U2/A1, R9, R10, C7)
  • power status LED (D1, R1)

3. Wiring and mounting

The board is powered with 5V by soldering wires to the through-hole pads marked with "5V" and the symbol for ground (located below ESP32-WROOM-32E).

WS281x's data wire is soldered to the through-hole pad marked with the LED graphic.

Holes H1 and H2 are used for mounting the board with 2mm screws.

4. Firmware binary

The release includes a customized WLED binary. This is required, because the WLED firmware supports rotary encoders when compiled with a "usermod".

If you want to customize your build further - you can use my fork of WLED which includes the configuration for the custom build.

5. Flashing

Flashing the firmware for the first time requires connecting to the board through a USB to serial adapter.

The programming pins are exposed on the left side of the board. You can avoid soldering a pin header and just put a header or jumper wires through the plated holes.

Tip

If you get an error while flashing firmware - try putting ESP32 in bootloader mode manually.

This is done by momentarily pulling pin "EN" low (restart) while pin "BOOT" is pulled low. Pins "EN" and "BOOT" are exposed as pads, "EN" is located to the left of the ESP32 module and "BOOT" is to the right. Shorting these pads - pulls the pins low.

Method A: Flashing directly with Espressif's esptool

  1. Follow the instructions to install esptool.
  2. Flash WLED's bootloader:
esptool.py write_flash 0x0 ./esp32_bootloader_v4.bin
  1. Flash the firmware binary:
esptool.py write_flash 0x10000 ./WLED_XXX.bin

If you experience issues - try erasing the flash first:

esptool.py erase_flash

Note

This method is taken from WLED's documentation web site.

Method B: Flashing with WLED's web installer and performing an OTA update

You can avoid installing esptool by using WLED's web installer to flash WLED's official firmware and then performing an OTA update with the provided custom binary.

6. Configuration

You can now continue with WLED's getting started guide to configure your board.

Tip

After connecting the board to your Wi-Fi network you can apply the provided base configuration by going to "Config" > "Security & Updates" > "Restore configuration" and uploading the provided base configuration file. Then you'll have to configure the Wi-Fi again.

Board connections:

ESP32 pin peripheral
GPIO 4 WS281x
GPIO 32 touch button "square"
GPIO 33 touch button "triangle"
GPIO 23 IR receiver
GPIO 27 rotary encoder 1
GPIO 16 rotary encoder 2
GPIO 17 rotary encoder button
GPIO 15 INMP441 SD
GPIO 13 INMP441 WS
GPIO 25 INMP441 SCK

About

Board for driving WS281x lights with ESP32 running Aircoookie's WLED firmware

License:MIT License


Languages

Language:KiCad Layout 79.5%Language:KiCad Schematic 20.5%Language:Shell 0.1%