Skip to the content
2 layers100 × 100 mmMotor subsystem, the printed circuit board in 3D

Motor subsystem

HenryLi-0/raven1

A spinning LED light display! (Made for Hack Club's Highway YSWS!)

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
39
Nets
28
Pads
89
Tracks, vias
123, 2
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
25 Jun 2025
Updated
19 Aug 2025

Overview

Motor subsystem is an open-source printed circuit board by HenryLi-0, from the HenryLi-0/raven repository on GitHub. It is a 2-layer board of 100 × 100 mm with 39 parts on 28 nets, routed with 123 tracks and 2 vias.

It is built around the 30SQ045. Its parts include 6 diodes, 6 inductors, 3 resistors and 2 ICs. It belongs with the robots and motor control boards and the ESP32 and RISC-V boards of this library.

Main components

1

README

README.md

Raven

by @HenryLi-0

banner

It's open sourced! Hardware licensed under CERN OHL S v2. Software licensed under GNU GPL v3.


Raven

Raven is an open source spinning LED light display, built for (and generously funded by) Hack Club's Highway!

Introduction

Since being introduced to an LED strip during FRC at the start of 2024, I realized I really like LEDs. Like a little too much. This could also be seen with the 10 LEDs from my Hackpad back in October 2024 and when I brought it on a robotics trip to BattleCry in June 2025 (iykyk). Simply, I kinda like LEDs a lot.

Now inspired by the lights at the venue of the aforementioned robotics trip (and the lights show that occured near the end of the event), that brings us here! Introducting Raven, a spinning LED display that uses 50 LEDs spread across 5 panels, spinning really fast. Using a Hall Effect Sensor for speed measurement, the measured values for angular prediction, and wireless control for wireless communications, Raven is capable of producing sector-based effects, rainbow gradients, strobes, and more, with a full 360 degree range of the room, or any sector of it! Apart from being an almost disco ball of sorts, the mechanism itself allows it to also act as an LED light display, almost looking like some sort of Vegas Sphere, except as a cylinder.

This project took over a hundred hours to make (with tons of redesigns!), and, retrospectively, I guess it's just because I think LEDs look pretty cool. The idea of replicating what happened in the venue really kept me going, and, now staring at what's been created, I think those hours were worth it! Learned lots a things along the way, such as reading datasheets, power in general, and implementing stuff from the ground up!

Long Description

Incase you wanted a full, long description, here it is!

Introducing Raven, an open source spinning LED light display! The system can be separated into three parts: the motor subsystem, the LED control subsystem, and the LED panels. But first, what exactly is the idea behind Raven? Inspired by the light effects done at BattleCry 2025 at WPI (2025BC), along with really liking LEDs for some reason, I wanted to create a LED display that lights up an entire room. But a stationary system wouldn't create the desired effect, the effect to slice up the room into different colors. For example, imagine the left side of the room being red and the right being blue.

This is accomplished by having 5 LED panels, each with 10 LEDs each, vertically stacked, pointing outwards. These 5 panels form a 180 degree circle, each panel spaced 45 degrees off the next. Arms connecting to the top and bottom of the LED panels attach to a center. Spacers keep these top and bottom arms in position. In the center, the top arms connect to the LED control PCB, which contains a XIAO ESP32-C3. This board is also equipped with a Hall Effect Sensor, used to be a simple way to measure RPM without an expensive encoder. This entire section spins on a shaft collar connected to a 775 motor. Additionally, a 18650 Li-ion battery is on this section, powering the whole thing without need for a power wire.

In order to save on costs, a slip ring was strongly avoided during design. Instead, the motor subsystem powers the motor with 4 Li-ion batteries, supplying a total of 14.8-16.8V @20A to the motor. 4 Li-ion batteries was choosen as a solution to the problem with finding suitable boost converters, which were either incapable of handling 20A, or are just really expensive. In fact, it is actually cheaper to use 4 Li-ion batteries than a single one of these boost converters. This solution also gave the benefit of having additional battery time, which was a nice side bonus. The motor subsystem is stationary, with the base being a copy of the LED control subsystem's PCB. This empty PCB is used as the FR-4 material of the PCB is likely stronger than PLA parts, while also being a smart way to reuse the multiple PCBs sent by JLCPCB. This is also the reason why there are 5 LED panels, as to minimize waste. The motor subsystem is also powered with a XIAO ESP32-C3, and has its own Hall Effect Sensor to measure the RPM of the LED subsystem.

The control system starts at the stationary motor subsystem microcontroller, which sends a constant ping to the LED subsystem's microcontroller. The LED subsystem reads this ping through the ESP32's bluetooth capabilities, and also sends a ping back. Both systems need to listen to each other in order to think they are operating properly. In the event that a ping isn't heard in a long time, the LED subsystem will stop operating and the motor subsystem will attempt to bring the motor to a stop. While operating properly, the LED subsystem uses a mix of data from the motor subsystem's Hall Effect Sensor and the LED subsystem's Hall Effect Sensor to calculate its speed and position, utilizing a model of the motor's speed. The motor subsystem will use PID control with a MOSFET to ensure that the LED subsystem reaches the proper spin.

This entire system is packaged inside a cylinderical shape with diameter of roughly 24 cm and a height of roughly 15 cm. The LED subsystem, weighing less than 2 pounds, plans to spin at anywhere from 1k-2k RPM, in order to achieve a speed where the LEDs essentially blend into a blur. The LED subsytem is loaded with almost 120 screws, in order to ensure that the LED subsystem stays in place. Additionally, all batteries are protected inside an over-discharge protection board and charged with a TP4056 module with protection (the TP4056 does NOT provide power to the system, it is only used for charging.).

And that's Raven, an open source spinning light display!

Directory

Wanna know more? Here's some quick places to get started!

  • CAD
    • We used OnShape for this, but you can grab files here too! (Although, poking around the CAD is probably better to have an idea of what things look like!)
  • PCB
    • We have three different PCBs, have a look at them! They were created in KiCad v8.0.8 (yeah I know I'm a whole major version behind.)
  • Firmware
    • We have two firmwares, one for each subsystem! (These firmwares are written for CircuitPython! Look here for deeper instructions!)
  • Journal
    • Wanna know the thought process behind stuff? Or just a really long read? Check out the journal! (or the updatelogs for everything in different files...)
  • BOM
    • Wanna make your own copy of Raven? Here's the BOM in CSV format! (You can look at BOM.md for a markdown version of it, but it won't be too descriptive!) (Or just scroll down.)


Assembly!

  1. First things first, it's recommended that you pull up the CAD and get familiar with how things look, and think of the order of steps. Special attention should be paid towards making sure that it is possible to put together, along with wires being able to "fit". Use logic to figure out whether a wire will be inside a part!
  2. We're gonna assemble all the PCBs first! Pull up the PCB on KiCad for the PCBs themselves. Where things should be placed should be clear in the drawing! Do NOT solder the Hall Effect Sensors on!
  3. Test the boards! It'll be easier now before it's in an awkward position!
  4. Back to the CAD, assemble the LED subsystem structure! This should be quite simple, but just very tedious, as there are are a lot of parts and screws.
  5. Assemble the shaft collar and the motor subsystem structure!
  6. Ok, place that all aside for now. It's time to do the power systems for both! While doing this, reference the electronics wiring drawn below! Also note the names of the nets in KiCad.
  7. Check solder joints!!! Everything on the LED subsystem MUST be ziptied (or you will risk something flying off). After this, start finding the center of gravity of the LED subsystem and try to balance it in the center (important).
  8. After this, assemble everything together! Note the CAD and the epic image above!
  9. Test that each system works individually! If so, head on over to the firmware and flash both of them!
  10. Enjoy and check back for any firmware/general updates!

BOM

The Bill of Materials for x1 unit of Raven!

Note: For this list, the prices are as of July 2025. Depending on certain actions on certain people, this may fluctuate over the next couple months/years. Current calculations have shipping and tax included, but if you want to see how much everything actual ended up costing me (as in, trying to use all the deals), look out for updatelogs during construction time! If you'd like a BOM where things are grouped by type, check out BOM.md. Check out 'BOM.csv` to also have descriptions of each item!

Try to use the AliExpress Welcome Deal on the 775 Motor and take advantage of a current sale on the batteries (drops all the batteries down to ~$26, including shipping and taxes)! (Batteries are currently calulated with the discount.)

PartPriceLink
M4 Screws (x20, 40mm)$2.85AliExpress
M4 Screws (x20, 30mm)$2.49AliExpress
M4 Screws (x80, 16mm)$7.96AliExpress
M4 Nuts (x125)$9.45AliExpress
3D Printed Parts$0.00(self print)
LED Panels (min 5)$2.10JLCPCB
LED Subsystem (min 5)$4.00JLCPCB
Motor Subsystem (min 5)$4.00JLCPCB
Shipping (to NYC)$10.20JLCPCB
XIAO ESP32-C3 (x2)$10.00Seeed Studio
Shipping (to NYC)$9.00Seeed Studio
A3144 (min 5)$1.18LCSC
30SQ045 (x3)$1.76LCSC
WS2812B (x65, mul 5)$4.28LCSC
1N4148 (x2, min 20)$0.51LCSC
PR01000101002JA100 (min 5)$0.60LCSC
MF1W-100Ω±1% T (min 10)$0.45LCSC
1N5822 (x2, min 5)$0.51LCSC
AOD424 (x1)$0.46LCSC
Handling Fee$3.00(LCSC)
Shipping (to NYC)$9.00(LCSC)
775 Motor (288W, 12k)$17.65AliExpress
Overdischarge (1S 16A)$1.26AliExpress
Overdischarge (4S 20A std.)$5.89AliExpress
LM2596 (x1, Step Down)$1.76AliExpress
XL6019 (x1, Step Up)$2.04AliExpress
TP4056 (x5, USB-C, safety)$2.70AliExpress
22 AWG wire (5m, 1 roll)$2.02AliExpress
10 AWG wire (1m, Black)$6.86AliExpress
Battery Holder (x2, 1B)$5.58AliExpress
Battery Holder (x1, 4B)$3.72AliExpress
Shipping (to NYC)$0.00(AliExpress)
Samsung 25R 18650...$15.00IMR Batteries
Shipping (to NYC)$9.13(IMR Batteries)
Taxes$2.07(IMR Batteries)
Buffer$5.00
TOTAL$164.51

Parts

39
QtyValueFootprintReferences
6LED_WS2812BScottoKeebs_Components:LED_WS2812BL1, L2, L3, L4, L5, L6
6LOGOLOGOG***, G***, G***, G***, G***, G***
4, , ,
330SQ045Resistor_THT:R_Axial_DIN0918_L18.0mm_D9.0mm_P25.40mm_HorizontalD2, D3, D6
2DiodeScottoKeebs_Components:Diode_DO-35D4, D5
2ResistorResistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_HorizontalR2, R3
11N5822Diode_THT:D_DO-201AD_P15.24mm_HorizontalD1
1MCU_Seeed_XIAO_ESP32-C3ScottoKeebs_MCU:Seeed_XIAO_RP2040U1
1ResistorResistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P12.70mm_HorizontalR1
1~STP55NF06L:AOD424U2

The 27 most common of 39 parts.

More from HenryLi-0/raven

2
  • 2 layers100 × 100 mmLed subsystem, the printed circuit board in 3D

    Led subsystem

    HenryLi-0/raven

    A spinning LED light display! (Made for Hack Club's Highway YSWS!)

    33 parts1
  • 2 layers18 × 99.9 mmLED panel, the printed circuit board in 3D

    LED panel

    HenryLi-0/raven

    A spinning LED light display! (Made for Hack Club's Highway YSWS!)

    13 parts1

Similar boards

  • 2 layers24.4 × 24.4 mmOSO SWAT B1, the printed circuit board in 3D

    OSO SWAT B1

    joeycastillo/Sensor-Watch

    A board replacement for the classic Casio F-91W wristwatch

    39 parts2.1k
  • 2 layers33 × 26 mmVL53L1x pwm, the printed circuit board in 3D

    VL53L1x pwm

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    39 parts915
  • 2 layers43.4 × 18.8 mmUsb sniffer lite, the printed circuit board in 3D

    Usb sniffer lite

    ataradov/usb-sniffer-lite

    A simple USB sniffer based on Raspberry Pi RP2040

    39 parts706BSD-3-Clause
  • 2 layers40 × 20 mmESP8266, the printed circuit board in 3D

    ESP8266

    windowsair/wireless-esp8266-dap

    CMSIS-DAP compatible wireless debugger for ESP8266/ESP32/ESP32C3/ESP32S3. Optional 40MHz SPI acceleration, etc. 适配多种ESP芯片的无线调试器

    39 parts690MIT
  • 2 layers100 × 70.3 mmModulAdapterMagnet, the printed circuit board in 3D

    ModulAdapterMagnet

    GaudiLabs/OpenDrop

    Open Source Digital Microfluidics Bio Lab

    39 parts492GPL-3.0
  • 2 layers81.3 × 53.3 mmRGB LED 1.4, the printed circuit board in 3D

    RGB LED 1.4

    lachlanA/eagle-to-kicad

    Eagle SCH/LIB to KiCad SCH/LIB ULP conversion script

    39 parts429GPL-2.0
  • 2 layers65.7 × 44.8 mmDock, the printed circuit board in 3D

    Dock

    mackieks/Kawaii

    Tiny, beautiful metal Wii keychain

    39 parts374

Questions

How big is the Motor subsystem PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Motor subsystem use?

39 parts, built around the 30SQ045. 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 Motor subsystem KiCad files?

From the HenryLi-0/raven repository on GitHub, at the commit this page was made from: the board is PCB/motor subsystem/motor subsystem.kicad_pcb and its schematic PCB/LED panel/LED panel.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Motor subsystem design in my own project?

Its repository states no licence, so its author keeps all rights: ask HenryLi-0 before reusing the design.