
Relay shield
carlos-jenkins/relay-shield
Relay and current sensor shield for Spark Core

OPEN-01 - Omnidirectional Perception & Embedded Navigation. An open-source, low-cost ROS2 robot platform.
Open-01-pcb is an open-source printed circuit board by RonishNadar, from the RonishNadar/open-01 repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 50.4 × 75 mm with 64 parts on 73 nets, routed with 434 tracks and 276 vias.
It is built around the ESP32-S2-SOLO-N4R2, MP2393GTL-P and AMS1117-3.3, with the FSM8JH, MH3 and MH4 among its other parts. Its parts include 20 resistors, 18 capacitors, 12 connectors, 3 ICs and 3 diodes. It belongs with the robots and motor control boards and the ESP32 boards of this library.
OPEN-01 is an open-source, low-cost differential drive robot platform focused on embedded sensing, motion control, and autonomous navigation.
This repository contains the full stack:
OPEN-01 is designed as a low-cost, replicable alternative to the TurtleBot3. It is built around proven hardware and a clean layered architecture — embedded-first, with ROS2 as the autonomy layer on top.
The platform is structured around two compute nodes:
/scan (in progress)open01.service brings up the full stack on boot/odom + /imu/data → /odometry/filtered at 30Hz| Topic | Type | Source |
|---|---|---|
/odom | nav_msgs/Odometry | Serial bridge |
/imu/data | sensor_msgs/Imu | Serial bridge |
/battery_state | sensor_msgs/BatteryState | Serial bridge |
/tof/left | sensor_msgs/Range | Serial bridge |
/tof/right | sensor_msgs/Range | Serial bridge |
/tof/back | sensor_msgs/Range | Serial bridge |
/scan | sensor_msgs/LaserScan | Lidar node |
/joint_states | sensor_msgs/JointState | Serial bridge |
/odometry/filtered | nav_msgs/Odometry | EKF node |
/cmd_vel | geometry_msgs/Twist | Nav2 / teleop |
| Component | Part |
|---|---|
| Microcontroller | ESP32-S2 |
| Companion computer | Raspberry Pi 3B |
| Motors | FIT0441 brushless DC with encoders |
| IMU | MPU6500 |
| ToF sensors | 3x VL53L0X |
| Lidar | LDS-02 (via USB2LDS adapter, CP210x) |
| Battery | 3S Li-Ion (12.6V full, 9.0V cutoff) |
| Function | GPIO |
|---|---|
| I2C Bus 0 SDA (ToF) | GPIO14 |
| I2C Bus 0 SCL (ToF) | GPIO13 |
| I2C Bus 1 SDA (IMU) | GPIO5 |
| I2C Bus 1 SCL (IMU) | GPIO4 |
| XSHUT Left (0x30) | GPIO12 |
| XSHUT Back (0x31) | GPIO11 |
| XSHUT Right (0x32) | GPIO10 |
| UART TX | GPIO19 |
| UART RX | GPIO20 |
| Motor Right PWM | GPIO15 |
| Motor Right DIR | GPIO16 |
| Motor Right FG | GPIO17 |
| Motor Left PWM | GPIO21 |
| Motor Left DIR | GPIO33 |
| Motor Left FG | GPIO34 |
| Battery ADC | GPIO2 |
open-01/
├── robot_firmware/ # ESP32-S2 firmware (ESP-IDF v5.4)
│ └── main/
│ ├── config/ # GPIO, timing, robot geometry constants
│ ├── common/ # Shared robot state
│ ├── drivers/ # MPU6500, VL53L0X, motor drivers
│ ├── hal/ # Hardware abstraction layer
│ ├── services/ # PID, kinematics, odometry, comms
│ └── tasks/ # FreeRTOS tasks (IMU, ToF, motor, comms)
├── robot_ros2/
│ └── ros2_ws/
│ └── src/
│ ├── open01_serial_bridge/ # ESP32 <-> ROS2 bridge + lidar node
│ ├── open01_bringup/ # RPi launch files
│ ├── open01_description/ # URDF + STL meshes
│ └── open01_viz/ # Laptop RViz2 launch + EKF config
├── cad/
│ └── URDFs/ # SolidWorks URDF export (source)
├── scripts/
│ ├── setup_rpi.sh # One-command RPi setup
│ └── setup_laptop.sh # One-command laptop setup
├── tools/
│ ├── launcher.py # ESP-IDF GUI launcher
│ └── setup.sh # ESP-IDF toolchain setup
├── LICENSE
└── README.mdgit clone https://github.com/RonishNadar/open-01.git
cd open-01
sudo bash scripts/setup_rpi.sh
sudo rebootgit clone https://github.com/RonishNadar/open-01.git
cd open-01
sudo bash scripts/setup_laptop.sh
source ~/.bashrcchmod +x tools/setup.sh
./tools/setup.sh
python3 tools/launcher.pysudo systemctl start open01.service
sudo systemctl status open01.servicecd ~/open-01/robot_ros2/ros2_ws
source install/setup.bash
ros2 launch open01_bringup bringup.launch.pycd ~/open-01/robot_ros2/ros2_ws
source install/setup.bash
ros2 launch open01_viz viz.launch.pyros2 topic list
ros2 topic hz /odometry/filtered # should be ~30Hz
ros2 topic hz /odom # should be ~40Hz
ros2 topic hz /scan # should be ~5Hzros2 run tf2_tools view_framesESP32-S2 (firmware)
| UART 460800 baud (custom binary protocol, CRC16-CCITT)
v
Raspberry Pi 3B (ROS2 Humble)
|-- open01_serial_bridge -> /odom /imu/data /battery_state /tof/* /joint_states
|-- lidar_node -> /scan
|-- robot_state_publisher -> /tf /tf_static
| WiFi (DDS, ROS_DOMAIN_ID=0)
v
Laptop (ROS2 Jazzy)
|-- robot_localization EKF -> /odometry/filtered
|-- SLAM Toolbox -> /map (planned)
|-- Nav2 -> autonomous navigation (planned)
|-- RViz2 -> visualizationconfig/Central constants: GPIO assignments, I2C/UART config, task periods, robot geometry, PID defaults.
common/Shared robot state and data structures accessed across tasks.
drivers/Low-level device drivers for MPU6500, VL53L0X, and motor control.
hal/Hardware abstraction layer separating board-specific logic from services.
services/Reusable robotics logic: PID, kinematics, odometry, motor coordination, UART comms.
tasks/FreeRTOS task entry points for periodic runtime behavior. All tasks pinned to Core 0 (ESP32-S2 is single-core).
ADC_BITWIDTH_DEFAULT, BATTERY_ADC_MAX = 8191.0f(~sum(bytes[0:40])) & 0xFF, INDEX_MAX=0xDB/dev/ttyS0 (not /dev/ttyAMA0)BEST_EFFORT, set RViz2 subscriptions to matchvyaw, ax, ay used from IMUContributions are welcome. Good areas:
When contributing:
config.hLicensed under the Apache-2.0 License. See LICENSE for details.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C2, C4, C6, C8, C14, C16, C17, C18 |
| 4 | 10kΩ | Resistor_SMD:R_0201_0603Metric | R17, R18, R19, R20 |
| 4 | 22uF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C5, C7, C13, C15 |
| 4 | 5.1kΩ | ERJU03J106V:RES_ERJU03J106V | R10, R11, R15, R16 |
| 2 | 10kΩ | ERJU03J106V:RES_ERJU03J106V | R7, R8 |
| 2 | 10uF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C1, C3 |
| 2 | 330Ω | ERJU03J106V:RES_ERJU03J106V | R13, R14 |
| 2 | 7.68kΩ | ERJU03J106V:RES_ERJU03J106V | R5, R6 |
| 2 | FSM8JH | FSM8JH:SW_FSM8JH | S2, S3 |
| 1 | 10pF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C12 |
| 1 | 15kΩ | ERJU03J106V:RES_ERJU03J106V | R3 |
| 1 | 1kΩ | ERJU03J106V:RES_ERJU03J106V | R12 |
| 1 | 1nF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C9 |
| 1 | 1uF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C11 |
| 1 | 20Ω | ERJU03J106V:RES_ERJU03J106V | R2 |
| 1 | 2171830001 | 2171830001:MOLEX_2171830001 | J1 |
| 1 | 3.3kΩ | ERJU03J106V:RES_ERJU03J106V | R9 |
| 1 | 40.2kΩ | ERJU03J106V:RES_ERJU03J106V | R4 |
| 1 | 5.2uH | MSS1038-522NLC:IND_MSS1038-522NLC | L1 |
| 1 | 6.8nF | WCAP-CSGP_0603:WCAP-CSGP_0603_R | C10 |
| 1 | 604kΩ | ERJU03J106V:RES_ERJU03J106V | R1 |
| 1 | AMS1117-3.3 | AMS1117-3.3:SOT229P700X180-4N | U2 |
| 1 | D+ SEL | TSW-101-17-T-T:SAMTEC_TSW-101-17-T-T | J3 |
| 1 | D- SEL | TSW-101-17-T-T:SAMTEC_TSW-101-17-T-T | J2 |
| 1 | DC Jack | Connector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_Horizontal | J12 |
| 1 | ESP32-S2-SOLO-N4 | ESP32-S2-SOLO-N4:XCVR_ESP32-S2-SOLO-N4 | U1 |
| 1 | FIT0441 L | B5B-XH-A:JST_B5B-XH-A | J11 |
| 1 | FIT0441 R | B5B-XH-A:JST_B5B-XH-A | J10 |
| 1 | I2C0 TOF B | B5B-XH-A:JST_B5B-XH-A | J8 |
| 1 | I2C0 TOF L | B5B-XH-A:JST_B5B-XH-A | J9 |
| 1 | I2C0 TOF R | B5B-XH-A:JST_B5B-XH-A | J7 |
| 1 | I2C1 MPU | B4B-XH-A_LF__SN_:JST_B4B-XH-A_LF__SN_ | J6 |
| 1 | LOGO | Logo_Ronnad:Logo_Ronnad | G*** |
| 1 | MH1 | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H1 |
| 1 | MH2 | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H2 |
| 1 | MH3 | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H3 |
| 1 | MH4 | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H4 |
| 1 | MP2393GTL-P | footprints:SOT583_MP2393 | U3 |
| 1 | PWR_LED | 598-8020-107F:LEDSC160X80X70L45N | D2 |
| 1 | RGB_LED | 1315050930246:WL-ILED_5050_PLCC6 | D3 |
| 1 | SS34 | Diode_SMD:D_SMA | D1 |
| 1 | UART0 | B4B-XH-A_LF__SN_:JST_B4B-XH-A_LF__SN_ | J4 |
| 1 | UART_RPI | B4B-XH-A_LF__SN_:JST_B4B-XH-A_LF__SN_ | J5 |
It measures 50.4 × 75 mm and has 2 copper layers, 1.6 mm thick.
64 parts, built around the ESP32-S2-SOLO-N4R2, MP2393GTL-P, AMS1117-3.3 and FSM8JH. 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 RonishNadar/open-01 repository on GitHub, at the commit this page was made from: the board is pcb/open-01-pcb/open-01-pcb.kicad_pcb and its schematic pcb/open-01-pcb/open-01-pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the Apache-2.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).

carlos-jenkins/relay-shield
Relay and current sensor shield for Spark Core


jackhumbert/reform
This is the main repository for the MNT Reform open source laptop.



ncssrtnvnthm/WATCH2026-theremin
Theremin project for the 2026 WATCH program


talonghtn-rgb/MachATmega32
Đây là dự án thiết kế và chế tạo bo mạch học tập lập trình nhúng sử dụng vi điều khiển ATmega32, được xây dựng nhằm phục vụ việc học tập, thực hành và nghiên cứu các hệ thống nhúng.