
SPECTRAL
VeeT23/SPECTRAL
Performance line following robot submitted to Southwork Robotics 2026

Performance line following robot submitted to Southwork Robotics 2026
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.
Short description of the embedded system and what it does.
SPECTRAL is a performance line following robot
| Component | Part Number | Description |
|---|---|---|
| MCU | ESP32-WROOM-32UE | Main microcontroller |
| Orientation Sensor | BNO055 | 9-DoF absolute orientation sensor with accelerometer, gyroscope, and magnetometer |
| Motor Controller | ODrive Micro | 100 W BLDC motor controller |
| Motor | Flash Hobby D4215 | 4215 650 KV BLDC motor, 3S–6S |
| CAN Transceiver | ATA6561 | CAN transceiver for motor controller communication |
| GPIO | Function | Interface | Notes |
|---|---|---|---|
| 16 | A0 | Sensor Address | Sensor address select |
| 17 | A1 | Sensor Address | Sensor address select |
| 18 | A2 | Sensor Address | Sensor address select |
| 32 | S0 | Sensor Output | Sensor output |
| 33 | S1 | Sensor Output | Sensor output |
| 34 | S2 | Sensor Output | Sensor output |
| 35 | S3 | Sensor Output | Sensor output |
| 39 | S4 | Sensor Output | Sensor output |
| 19 | CAN_STBY | CAN | CAN transceiver standby control |
| 4 | CAN_RX | CAN | CAN receive |
| 5 | CAN_TX | CAN | CAN transmit |
| 22 | SDA | I2C | I2C data |
| 21 | SCL | I2C | I2C clock |
| 25 | BUZZER | GPIO | Buzzer control |
| 26 | NEOPIXEL | GPIO | Exposed on board; currently unused |
| 27 | FAN_PWM | PWM | Exposed on board; currently unused |
SPECTRAL/
├── firmware/
│ ├── common/
│ ├── control_station_firmware/
│ └── spectral_firmware/
├── hardware/
│ ├── main_board/
│ ├── power_module/
│ └── sensor_module/
├── .gitignore
└── README.md| Parameter | Value | Description |
|---|---|---|
| Control Frequency | 1000 Hz | Main control loop frequency |
| Display Update Period | 40 ms | Period between display updates |
| Wheel Spacing | 104 mm | Distance between drive wheels |
| Wheel Diameter | 60 mm | Drive wheel diameter |
| Wheel Circumference | 0.1885 m | Calculated wheel circumference |
| Line Following Kp | 1.0 | Proportional gain |
| Line Following Ki | 0.01 | Integral gain |
| Line Following Kd | 0.01 | Derivative gain |
| Number of Sensor Modules | 5 | Number of IR sensor modules |
| Sensors per Module | 8 | Number of sensors on each module |
| Total IR Sensors | 40 | Total number of IR sensors |
| IR Threshold | 2000 | Sensor threshold used for line detection |
| Controller MAC | D8:3B:DA:46:57:80 | MAC address of the remote controller |
| Radio RX Timeout | 1000 ms | Maximum time without receiving controller data |
| Telemetry Frequency | 120 Hz | Telemetry transmission frequency |
| Radio Debug | Disabled | Enables/disables radio debug output |
| CAN Bitrate | 500 kbit/s | CAN bus communication speed |
| CAN TX Timeout | 40 ms | Maximum time to wait for CAN transmission |
| Serial Baud Rate | 115200 | Serial communication baud rate |
| ODrive Heartbeat Timeout | 200 ms | Maximum time without receiving an ODrive heartbeat |
| Motors Enabled | Yes | Enables motor operation |
The following CAN command IDs are used to communicate with the ODrive motor controller:
| Command | CAN ID | Description |
|---|---|---|
| Heartbeat | 0x01 | ODrive heartbeat |
| Emergency Stop | 0x02 | Trigger emergency stop |
| Set Axis State | 0x07 | Change ODrive axis state |
| Get Encoder Estimate | 0x09 | Request encoder position/velocity estimate |
| Set Input Velocity | 0x0D | Set motor velocity command |
| Clear Errors | 0x18 | Clear ODrive errors |
| State | Value | Description |
|---|---|---|
| Idle | 1 | Motor disabled / idle |
| Closed Loop | 8 | Motor enabled for closed-loop control |
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
This project is closed, however I will add documentation/clean up issues on request.
This project is licensed under the GNU GENERAL PUBLIC LICENSE.
Veronica Tobias
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | TCRT5000 | OptoDevice:TCRT5000-MINI | T1, T2, T3, T4, T5, T6, T7, T8 |
| 3 | 4.7K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R3 |
| 2 | 0.1 uf | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C2 |
| 2 | SN74LV4051APWR | SN74LV4051APWR:PW16 | U1, U2 |
| 1 | 100 | Resistor_SMD:R_Array_Convex_4x0612 | RN1 |
| 1 | 56 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4 |
| 1 | 6p-IDC | SM06B_GHS_TB:CONN_SM06B-GHS-TB_JST | J1 |
| 1 | R_Pack08 | RES_EXB2HV:RES_EXB2HV | RN2 |
| 1 | SMF05C | Package_TO_SOT_SMD:SOT-363_SC-70-6_Handsoldering | U3 |
It measures 40 × 18 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

VeeT23/SPECTRAL
Performance line following robot submitted to Southwork Robotics 2026

VeeT23/SPECTRAL
Performance line following robot submitted to Southwork Robotics 2026


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

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


adamkaliszan/FreeRtosOnAvr
An alternative for arduino. Multitasking firmware provides great flexibility.

