

Booth
Using 1000 NeoPixels with FastLED library we are controlling a custom built DJ booths lighting. The NeoPixels are organzied into rectangles on a DJ of which the light difuses around the rectnagle.
- Size
- 69 × 61 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 21
- Nets
- 11
- Pads
- 74
- Tracks, vias
- 70, 0
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 21 Apr 2025
- Updated
- 20 Apr 2026
Overview
Booth is an open-source printed circuit board by JCohner, from the JCohner/booth repository on GitHub. It is a 2-layer board of 69 × 61 mm with 21 parts on 11 nets, routed with 70 tracks and 0 vias.
It is built around the MAX485ED, RS485 and WS2811. Its parts include 8 resistors, 4 connectors, 2 capacitors, 2 ICs and 1 diode.
Main components
3MAX485ED
SOP-8-40℃~+85℃ 1 1 1mA 32 4.75V~5.25V 5Mbps Half-Duplex Transceiver ±8kV SOP-8 RS-485 / RS-422 ICs ROHSHTCRS-485 / RS-422 ICsRS485
SOP-81 1 1.2mA 2.5Mbps 256 5V Half-Duplex Transceiver ±4kV SOP-8 RS-485 / RS-422 ICs ROHSGRRS-485 / RS-422 ICsWS2811
SOP-8-25℃~+85℃ 16.5mA 20V 3 5V~24V 800kHz Over Voltage Protection、Short-Circuit Protection PWM SOP-8 LED Drivers ROHSWorldsemiLED Drivers
README
README.mdBooth Controller
Using ~1000 NeoPixels with FastLED library we are controlling a custom built DJ booths lighting. The NeoPixels are organzied into rectangles on a DJ of which the light difuses around the rectnagle. This is using the SAMD21 broken out via the arduino nano 33 iot board.
Code Organization
booth_controllercontains the arduino sketchbooth_controller.ino- instantiates the DMX receiver very inspired by this library
- instantiates the custom LightingArrayController object
- overrides the standard Serial1 handler SERCOM5 to specifically parse DMX inputs from the RS485 transciever
- sets up the dmx object and light controller
- grabs dmx data and passes it to the light controller to map to rectangles
- lighting_array_controller
- note in both .h and .cpp file there is auto generated code parsed from the csv that keeps the rectangles aligned with reality. See rect_gen.py for more.
- important holds array of CRGB leds from FastLED
- handles business logic of holding array of rectangles and passing dmx channels to their relevant rectangle
- critically calls FastLED.show()
- rectangle
- mechanisim to map global array of LEDs to given logical rectangle
- has rectangle specific dmx_update mechanism which takes mapped dmx channels and translates to LED CRGB values
- dmx
- does dmx things, neat protocol. thanks to claudeheintz
- requirements.txt, rect_gen.py, rects.csv
- all convinience things for autogenerating cpp code to map the rectangles
- Makefile
- compile - compiles 'primary' and 'secondary' to cover both arduinos
- deploy_[primary, secondary] - deploys relevant binary to MCU
TODO attach pictures it looks sweet take my word for it for now.
Notes:
Added: void SERCOM5_Handler() __attribute__((weak)); to the relevant variants.cpp file such that I could overwrite the SERCOM5 handler being used for Serial1 to parse out the DMX messages
It seems my one nano was just not powerful enough to write to all 1000+ LEDs, I put another on the DMX bus and mapped it to the channels my first couldn't meet.
Parts
21| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | Resistor_SMD:R_2010_5025Metric | R1, R2, R3, R4 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 2 | 20k | Resistor_SMD:R_2010_5025Metric | R6, R7 |
| 2 | RS485 | TerminalBlock_4Ucon:TerminalBlock_4Ucon_1x02_P3.50mm_Horizontal | J3, J4 |
| 1 | .1uF | Capacitor_SMD:C_1812_4532Metric | C2 |
| 1 | 10uF | Capacitor_SMD:C_1812_4532Metric | C1 |
| 1 | 120 | Resistor_SMD:R_2010_5025Metric | R8 |
| 1 | 1k | Resistor_SMD:R_2010_5025Metric | R5 |
| 1 | Barrel_Jack | Connector_BarrelJack:BarrelJack_CUI_PJ-102AH_Horizontal | J1 |
| 1 | LED | LED_SMD:LED_1812_4532Metric | D1 |
| 1 | MAX485E | Package_DIP:DIP-8_W7.62mm | U3 |
| 1 | WS2811 | TerminalBlock_4Ucon:TerminalBlock_4Ucon_1x03_P3.50mm_Horizontal | J2 |
| 1 | nano_33_iot | Module:Arduino_Nano | U2 |
Questions
How big is the Booth PCB?
It measures 69 × 61 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Booth use?
21 parts, built around the MAX485ED, RS485 and WS2811. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Booth KiCad files?
From the JCohner/booth repository on GitHub, at the commit this page was made from: the board is board/board.kicad_pcb and its schematic board/board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Booth design in my own project?
Its repository states no licence, so its author keeps all rights: ask JCohner before reusing the design.
Similar boards
- 2 layers40 × 50 mm

- 2 layers44.9 × 31.6 mm

Controller Window
crexodon/LED-Window-Matrix-Neo
Turning the campus building into a led display
28 partsMIT - 2 layers63 × 46 mm

Pi485
bvarner/pi485
An open-source TTL UART <-> RS485 converter, intended for a Raspberry Pi or Arduino
31 parts41MIT - 2 layers63.6 × 49 mm

- 2 layers

- 4 layers50 × 50 mm

- 2 layers100 × 60 mm

- 2 layers94 × 70 mm
