Software (firmware and host tools)#
Firmware sketches and Python helpers live in the RoSHI-Hardware repo under Firmware/; the repo README has the full layout and Arduino board settings.
Flashing order (Arduino IDE)#
After the trackers are built and closed (see Assembly), connect each board over USB-C and flash from the Arduino IDE in this order:
Receiver first —
Firmware/IMU_Receiver/HostRead/onto the ESP32-S3 Feather.Each IMU tracker —
Firmware/IMU_Tracker/. InIMU_Tracker.inoset a uniqueTRACKER_IDfrom 1–9 per module (the host OLED reserves index 0 for auxiliary button state).
peerMAC and ESP-NOW#
Every tracker registers a single ESP-NOW peer: the Wi-Fi (STA) MAC address
of the receiver Feather. Before shipping any tracker, replace the placeholder
peerMAC byte array in the sketch with your receiver’s real MAC—read it from
the receiver Serial log or a one-off WiFi.macAddress() sketch. A mismatch
silently breaks delivery and the OLED will show no battery for those trackers.
Verification#
Power up the receiver and trackers. With the RF link healthy, the receiver OLED shows battery percentage per tracker ID, and the receiver Serial monitor prints decoded IMU lines.
Python environment (USB serial reader)#
Scripts under Firmware/python/ (imu_reader.py, sample.py,
visualize.py) talk to the receiver over USB serial. Minimal deps:
pip install pyserial numpy matplotlib
See also#
Mechanical build: Assembly
Bill of materials: Components
Pipeline overview: Pipeline