Skip to the content
PCBKitNew board
2 layers60 × 40 mmSPECTRAL, the printed circuit board in 3D

Performance line following robot submitted to Southwork Robotics 2026

Size
60 × 40 mm
Copper layers
2
Thickness
1.6 mm
Parts
56
Nets
50
Pads
225
Tracks, vias
392, 67
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
31 Dec 2025
Updated
18 Aug 2026

Overview

SPECTRAL is an open-source printed circuit board by VeeT23, from the VeeT23/SPECTRAL repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 60 × 40 mm with 56 parts on 50 nets, routed with 392 tracks and 67 vias.

It is built around the ATA6561-GAQW-N and BSS138. Its parts include 18 resistors, 13 capacitors, 12 connectors, 2 ICs and 2 transistors. It belongs with the robots and motor control boards and the ESP32 boards of this library.

Main components

2

README

README.md

SPECTRAL

Short description of the embedded system and what it does.

Overview

SPECTRAL is a performance line following robot

Hardware

Main Components

ComponentPart NumberDescription
MCUESP32-WROOM-32UEMain microcontroller
Orientation SensorBNO0559-DoF absolute orientation sensor with accelerometer, gyroscope, and magnetometer
Motor ControllerODrive Micro100 W BLDC motor controller
MotorFlash Hobby D42154215 650 KV BLDC motor, 3S–6S
CAN TransceiverATA6561CAN transceiver for motor controller communication

Pinout

Pin Definitions

GPIOFunctionInterfaceNotes
16A0Sensor AddressSensor address select
17A1Sensor AddressSensor address select
18A2Sensor AddressSensor address select
32S0Sensor OutputSensor output
33S1Sensor OutputSensor output
34S2Sensor OutputSensor output
35S3Sensor OutputSensor output
39S4Sensor OutputSensor output
19CAN_STBYCANCAN transceiver standby control
4CAN_RXCANCAN receive
5CAN_TXCANCAN transmit
22SDAI2CI2C data
21SCLI2CI2C clock
25BUZZERGPIOBuzzer control
26NEOPIXELGPIOExposed on board; currently unused
27FAN_PWMPWMExposed on board; currently unused

Software

Toolchain

  • Platform: Espressif32
  • MCU: ESP32-WROOM-32UE
  • Framework: Arduino
  • Build System: PlatformIO
  • IDE: Visual Studio Code + PlatformIO

Repository Structure

text
SPECTRAL/
├── firmware/
│   ├── common/
│   ├── control_station_firmware/
│   └── spectral_firmware/
├── hardware/
│   ├── main_board/
│   ├── power_module/
│   └── sensor_module/
├── .gitignore
└── README.md

Configuration

ParameterValueDescription
Control Frequency1000 HzMain control loop frequency
Display Update Period40 msPeriod between display updates
Wheel Spacing104 mmDistance between drive wheels
Wheel Diameter60 mmDrive wheel diameter
Wheel Circumference0.1885 mCalculated wheel circumference
Line Following Kp1.0Proportional gain
Line Following Ki0.01Integral gain
Line Following Kd0.01Derivative gain
Number of Sensor Modules5Number of IR sensor modules
Sensors per Module8Number of sensors on each module
Total IR Sensors40Total number of IR sensors
IR Threshold2000Sensor threshold used for line detection
Controller MACD8:3B:DA:46:57:80MAC address of the remote controller
Radio RX Timeout1000 msMaximum time without receiving controller data
Telemetry Frequency120 HzTelemetry transmission frequency
Radio DebugDisabledEnables/disables radio debug output
CAN Bitrate500 kbit/sCAN bus communication speed
CAN TX Timeout40 msMaximum time to wait for CAN transmission
Serial Baud Rate115200Serial communication baud rate
ODrive Heartbeat Timeout200 msMaximum time without receiving an ODrive heartbeat
Motors EnabledYesEnables motor operation

ODrive Commands

The following CAN command IDs are used to communicate with the ODrive motor controller:

CommandCAN IDDescription
Heartbeat0x01ODrive heartbeat
Emergency Stop0x02Trigger emergency stop
Set Axis State0x07Change ODrive axis state
Get Encoder Estimate0x09Request encoder position/velocity estimate
Set Input Velocity0x0DSet motor velocity command
Clear Errors0x18Clear ODrive errors

ODrive Axis States

StateValueDescription
Idle1Motor disabled / idle
Closed Loop8Motor enabled for closed-loop control

Power

Spectral uses a 450 mAh 3s 75C lipo Running power is unknown however the circuit supports up to 10A continous. Idle power is measured to be ~140ma

WARNING: AS IT STANDS CURRENTLY, SPECTRAL LACKS OVER DISCHARGE PROTECTION, MONITOR BATTERY VOLTAGE BETWEEN RUNS TO AVOID DAMAGE TO THE BATTERY

Communication

  • UART - Serial debugging/flashing
  • I2C - Display screen
  • CAN - Motor controllers
  • ESP-NOW - Base station communication

Known Issues

  • Dynamic velocity control has no smoothing between setpoints
  • Power module lacks battery monitoring for undervoltage

Future Work

This project is closed, however I will add documentation/clean up issues on request.

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE.

Author

Veronica Tobias

GitHub

Parts

56
QtyValueFootprintReferences
9100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R5, R6, R7, R15, R16, R17, R18
94.7KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R8, R9, R10, R11, R12, R13, R14
51nfCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C4, C5, C6, C7
30.1ufCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C8, C10
310ufCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C9, C11
2100ufCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC12, C13
2BSS138Package_TO_SOT_SMD:SOT-23Q1, Q4
13V3TestPoint:TestPoint_Pad_D2.0mmTP3
15VTestPoint:TestPoint_Pad_D2.0mmTP4
1ATA6561-GAQW-NPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1BOOTSW_PTS636_CNK:SW_PTS636_CNKSW1
1BOOTTestPoint:TestPoint_Pad_D2.0mmTP1
1BuzzerPS1240P02CT3:XDCR_PS1240P02CT3BZ1
1CANConnector_JST:JST_GH_SM04B-GHS-TB_1x04-1MP_P1.25mm_HorizontalJ6
1ENTestPoint:TestPoint_Pad_D2.0mmTP2
1ESP32-WROOM-32UE_M113EH6400UH3Q0_RF_Module:ESP32-WROOM-32UEU1
1GNDTestPoint:TestPoint_Keystone_5005-5009_CompactTP5
1IMUConnector_JST:JST_GH_SM04B-GHS-TB_1x04-1MP_P1.25mm_HorizontalJ7
1NEOPIXELConnector_JST:JST_GH_SM03B-GHS-TB_1x03-1MP_P1.25mm_HorizontalJ12
1OLEDConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ8
1PWMConnector_JST:JST_GH_SM03B-GHS-TB_1x03-1MP_P1.25mm_HorizontalJ11
1PowerConnector_JST:JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_VerticalJ9
1REDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD1
1RESETSW_PTS636_CNK:SW_PTS636_CNKSW2
1Sensor 1Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_HorizontalJ1
1Sensor 2Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_HorizontalJ2
1Sensor 3Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_HorizontalJ3
1Sensor 4Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_HorizontalJ4
1Sensor 5Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_HorizontalJ5
1UARTConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ10

Questions

How big is the SPECTRAL PCB?

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

What parts does the SPECTRAL use?

56 parts, built around the ATA6561-GAQW-N and BSS138. 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 SPECTRAL KiCad files?

From the VeeT23/SPECTRAL repository on GitHub, at the commit this page was made from: the board is hardware/main_board/main.kicad_pcb and its schematic hardware/main_board/main.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SPECTRAL design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from VeeT23/SPECTRAL

2
  • 2 layers60 × 40 mmPower board, the printed circuit board in 3D

    Power board

    VeeT23/SPECTRAL

    Performance line following robot submitted to Southwork Robotics 2026

    29 partsGPL-3.0
  • 2 layers40 × 18 mmSensor module, the printed circuit board in 3D

    Sensor module

    VeeT23/SPECTRAL

    Performance line following robot submitted to Southwork Robotics 2026

    20 partsGPL-3.0

Similar boards

  • 4 layers90 × 45 mmBMS LV 2022, the printed circuit board in 3D

    BMS LV 2022

    PUT-Motorsport/PUTM_EV_BMS_LV

    174 parts8Apache-2.0
  • 4 layers86 × 29.9 mmGeiger probe, the printed circuit board in 3D

    Geiger probe

    bartkepl/CanGeigerProbe

    Polowa sonda promieniowania jonizującego z miniaturową lampą Geigera-Müllera, komunikująca się cyfrowo przez CAN 2.0B.

    116 partsMIT
  • 4 layers76 × 29.9 mmGnss node, the printed circuit board in 3D

    Gnss node

    bartkepl/CanGnssNode

    Polowy węzeł pozycyjny z modułem GNSS Quectel L76-L (GPS/GLONASS/Galileo/QZSS) i czujnikiem orientacji (akcelerometr + magnetometr), komunikujący się cyfrowo przez CAN 2.0B.

    141 partsMIT
  • 4 layers120 × 75 mmControlPanel, the printed circuit board in 3D

    ControlPanel

    bartkepl/ControlPanelV3S

    V3S CAN-bus control panel - KiCad hardware

    327 partsMIT
  • 4 layers160 × 73.2 mmMainPCB, the printed circuit board in 3D

    MainPCB

    doppelgrau/esp32-f9p-io-board

    An IO-PCB (two motor-driver/H-bridge, CAN, RS232, ADS1115, relay, ethernet, ardusimple f9p compatible connector) with an ESP32 for 12V power, three 15V tolerant analog inputs, three 5V tolerant inputs.

    162 parts39
  • 2 layers62.9 × 47 mmESP32 CAN, the printed circuit board in 3D

    ESP32 CAN

    FL0WL0W/ESP32C3-CAN-Extender

    This module uses an ESP32C3 with WiFi and BLE. It has 3 configurable outputs (5V push pull, Open Drain, 12V pullup), 4 analog or digital inputs, CAN transceiver, and an automotive power supply so it can be installed…

    72 parts20GPL-3.0
  • 2 layers109.5 × 51 mmCANBOB (MAGE CANBOB-003), the printed circuit board in 3D

    CANBOB (MAGE CANBOB-003)

    Mage-Control-Systems-Ltd/CANBOB

    A breakout board that enables USB or SPI to CAN communication using the MCP2515.

    98 parts8CC-BY-4.0
  • 2 layers57 × 70 mmFlexray harness, the printed circuit board in 3D

    Flexray harness

    I-CAN-hack/flexray-harness

    64 parts5MIT