Skip to the content
PCBKitNew board
2 layers69 × 61 mmBooth, the printed circuit board in 3D

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

3

README

README.md

Booth 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_controller contains the arduino sketch
    • booth_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
QtyValueFootprintReferences
410kResistor_SMD:R_2010_5025MetricR1, R2, R3, R4
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
220kResistor_SMD:R_2010_5025MetricR6, R7
2RS485TerminalBlock_4Ucon:TerminalBlock_4Ucon_1x02_P3.50mm_HorizontalJ3, J4
1.1uFCapacitor_SMD:C_1812_4532MetricC2
110uFCapacitor_SMD:C_1812_4532MetricC1
1120Resistor_SMD:R_2010_5025MetricR8
11kResistor_SMD:R_2010_5025MetricR5
1Barrel_JackConnector_BarrelJack:BarrelJack_CUI_PJ-102AH_HorizontalJ1
1LEDLED_SMD:LED_1812_4532MetricD1
1MAX485EPackage_DIP:DIP-8_W7.62mmU3
1WS2811TerminalBlock_4Ucon:TerminalBlock_4Ucon_1x03_P3.50mm_HorizontalJ2
1nano_33_iotModule:Arduino_NanoU2

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 mmWS2811 3W, the printed circuit board in 3D

    WS2811 3W

    Techbeard/RS485_WS2811_10W

    RS485 WS2811 10W RGB LED Treiber

    53 parts1
  • 2 layers44.9 × 31.6 mmController Window, the printed circuit board in 3D

    Controller Window

    crexodon/LED-Window-Matrix-Neo

    Turning the campus building into a led display

    28 partsMIT
  • 2 layers63 × 46 mmPi485, the printed circuit board in 3D

    Pi485

    bvarner/pi485

    An open-source TTL UART <-> RS485 converter, intended for a Raspberry Pi or Arduino

    31 parts41MIT
  • 2 layers63.6 × 49 mmFrontend, the printed circuit board in 3D

    Frontend

    bullestock/acsv2

    Rewrite of Access Control System in Django

    56 parts2GPL-3.0
  • 2 layersCommunication brain, the printed circuit board in 3D

    Communication brain

    crodar33/CommandPoint

    ESP8266, Daly smart bms, HYD6000-ES

    24 parts2Apache-2.0
  • 4 layers50 × 50 mmKleverLogger, the printed circuit board in 3D

    KleverLogger

    charclo/KleverLogger

    Logger for Klever Speedpedelec

    75 parts
  • 2 layers100 × 60 mmGatewayPlus V1.4, the printed circuit board in 3D

    GatewayPlus V1.4

    maivananh111/PCB_GatewayPlus_V1.4

    278 parts
  • 2 layers94 × 70 mmCore, the printed circuit board in 3D

    Core

    stanislavstarcha/powerbox

    Add paths to your bash/zsh rc for convenience

    77 parts