Back to projects
Team contribution

Tunnel Boring Machine Firmware

The Boring Illini

I built STM32F767ZI/FreeRTOS sensor firmware for The Boring Illini and deployed it on the team’s competition tunnel-boring machine. My work covered strain and temperature acquisition, task monitoring, and Ethernet/UDP telemetry within the embedded engineering subteam.

  • STM32F767ZI
  • FreeRTOS
  • Ethernet / UDP
  • C
A team member working on The Boring Illini’s tunnel-boring machine
The Boring Illini’s machine · photograph from the official team website · Source · Open full-size image

Keeping acquisition independent of telemetry

I integrated HX711/Wheatstone-bridge strain sensing and PT1000/MAX31865 temperature interfaces. Sampling tasks push readings into FreeRTOS queues; a separate telemetry task sends them to the host. This keeps a slow network or receiver from holding up sensor acquisition.

I also built health-monitoring tasks and a watchdog heartbeat, with task-age checks to help find stalled work and mutexes where peripherals needed shared access.

  1. Strain / RTD sensors
  2. STM32 / FreeRTOS tasks + queues
  3. Ethernet / UDP
  4. Python host receiver
Implementation flow

Testing on the machine

I wrote Python/Bash receivers and logging tools to check packet timing, dropped packets, malformed JSON, and reconnect behavior. I ran repeated bench and integration tests before deploying the firmware, and worked on shielding, single-point grounding, and sensor-fault recovery for the machine’s vibration and electrical noise.

I collaborated with the embedded subteam on integration. The broader team built the machine and motor systems; my contribution was the sensor firmware, telemetry, monitoring, and validation tools. In the final team architecture, separate sensor and motor STM32 nodes sent data through an Ethernet switch to a host laptop.