Skip to the content
PCBKitNew board
2 layers40 × 18 mmSensor module, the printed circuit board in 3D

Sensor module

VeeT23/SPECTRAL

Performance line following robot submitted to Southwork Robotics 2026

Size
40 × 18 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
27
Pads
114
Tracks, vias
482, 44
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
31 Dec 2025
Updated
18 Aug 2026

Overview

Sensor module 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 40 × 18 mm with 20 parts on 27 nets, routed with 482 tracks and 44 vias.

It is built around the SN74LV4051APWR-M, SMF05C and TCRT5000. Its parts include 4 resistors, 3 ICs, 2 capacitors and 1 connector. It belongs with the robots and motor control and sensors and measurement boards and the ESP32 boards of this library.

Main components

3

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

20
QtyValueFootprintReferences
8TCRT5000OptoDevice:TCRT5000-MINIT1, T2, T3, T4, T5, T6, T7, T8
34.7KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3
20.1 ufCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2
2SN74LV4051APWRSN74LV4051APWR:PW16U1, U2
1100Resistor_SMD:R_Array_Convex_4x0612RN1
156Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4
16p-IDCSM06B_GHS_TB:CONN_SM06B-GHS-TB_JSTJ1
1R_Pack08RES_EXB2HV:RES_EXB2HVRN2
1SMF05CPackage_TO_SOT_SMD:SOT-363_SC-70-6_HandsolderingU3

Questions

How big is the Sensor module PCB?

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

What parts does the Sensor module use?

20 parts, built around the SN74LV4051APWR-M, SMF05C and TCRT5000. 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 Sensor module KiCad files?

From the VeeT23/SPECTRAL repository on GitHub, at the commit this page was made from: the board is hardware/sensor_module/sensor_module.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 Sensor module 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 mmSPECTRAL, the printed circuit board in 3D

    SPECTRAL

    VeeT23/SPECTRAL

    Performance line following robot submitted to Southwork Robotics 2026

    56 partsGPL-3.0
  • 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

Similar boards

  • 2 layers100 × 116 mmQPCR main, the printed circuit board in 3D

    QPCR main

    hisashin/qNinja

    Open source Real-Time Quantitative PCR Implementation

    152 parts48GPL-3.0
  • 6 layers317.6 × 131.8 mm75he, the printed circuit board in 3D

    75he

    Fefe-Nayz/kbhe-monorepo

    TIPE 2026 - 75% Hall effect keyboard ISO layout - Monorepo: Firmware, PCB, 3D Models, PC Software

    669 parts11
  • 6 layers32.5 × 33.8 mmControl card, the printed circuit board in 3D

    Control card

    johonkanen/agilex3_control_card

    FPGA control card (Altera Agilex 3 A3CZ065, B18A) in KiCad 10: schematic, 6-layer board, generator scripts

    164 partsMIT
  • 2 layers79.2 × 59.2 mmGpstracker, the printed circuit board in 3D

    Gpstracker

    blemasle/gpstracker-pcb

    Connected GPS tracker PCB

    205 parts33MIT
  • 2 layers78 × 40 mmNode base, the printed circuit board in 3D

    Node base

    LanternD/NB-Scope

    Hardware and software design for NB-Scope.

    79 parts6Apache-2.0
  • 2 layers102 × 81 mmCzujnikiRpi3b, the printed circuit board in 3D

    CzujnikiRpi3b

    adamkaliszan/FreeRtosOnAvr

    An alternative for arduino. Multitasking firmware provides great flexibility.

    157 parts2GPL-3.0