Mark Donaldson
Published © MIT

Sentinel-Q: One-Touch Pre-Trip Brake Inspection

An UNO Q gateway turns a 30-minute pre-trip brake inspection into a 10-second brake application, and writes a tamper-evident record.

AdvancedFull instructions provided20 hours36
Sentinel-Q: One-Touch Pre-Trip Brake Inspection

Things used in this project

Hardware components

Arduino UNO Q
ABX00162, 4 GB variant. Qualcomm QRB2210 running Debian Linux plus an STM32U585 running the Arduino core, on one board. The Linux side runs the Bluetooth stack and the gateway; the MCU side drives the LED matrix and the driver's button. This project needs both, at the same time.
×1
Sentinel brake sensor
Quantuity Analytics hardware, patent pending. Silicon Labs EFR32MG24. Runs an edge AI classifier on the sensor itself and reports over Bluetooth Low Energy β€” the gateway never sees raw signal, only a classification.
×1
Brake actuation test stand (shop-built)
Column fixture with a Haldex automatic slack adjuster on an S-cam shaft, driven through the clevis. Reproduces slack-adjuster and pushrod geometry. No chamber fitted, so stroke on this bench is representative rather than calibrated to a specific chamber.
×1
Type 30 long-stroke brake chamber (30LP3)
The chamber the system targets in service. Not mounted on the bench fixture β€” listed because you need to know what the geometry is meant to work against.
×1
Sensor mounting bracket (fabricated aluminium)
Two-pin automotive connector. Holds the sensor in fixed relation to the pushrod. That fixed relationship is the measurement β€” a bracket that moves is a sensor that lies.
×1
ALCO MTA-106D miniature SPDT toggle switch
The driver's pre-trip trigger, on D2 with INPUT_PULLUP; closed reads LOW. Salvaged from an earlier project, flying leads soldered on. A maintained toggle rather than a momentary button β€” the sketch triggers on the transition so it works either way, but a momentary switch is the right part for production.
×1
Header pins, 0.1 inch pitch
Soldered to the switch's bare lead ends so they seat properly in the board's female header, instead of being wedged in and hoped for.
×2
USB-A to USB-C data cable
Set to 9.05 V to power the sensor, standing in for the 9 V battery so supply voltage isn't a variable during testing.
×1
9V battery and lead
Sensor power for vehicle-side demonstrations, where a bench supply isn't practical.
×1
SN65HVD230 CAN transceiver breakout (ECSiNG)
The UNO Q has native FDCAN1 on D4/D5 but no onboard transceiver, and 3.3 V logic is required β€” a 5 V module would not be safe here. Reserved for the J1939 work; not in the current build.
×2
DSD TECH SH-C30L USB-to-CAN adapter
CANable-compatible, SocketCAN. The second node on the bus. A bus with a single talker proves nothing, so this is how a transmitted frame gets verified. Reserved for the J1939 work; not in the current build.
×1

Software apps and online services

Arduino App Lab
0.10.0. Linux-side application framework and web UI.
ArduinoCore-zephyr
0.90.0. The MCU core. Native FDCAN1 on D4/D5 from 0.55.0 onward.
Arduino IDE
1.5.1. Sketch compile and upload, over SWD through the board's own OpenOCD.
Debian GNU/Linux
13.1 trixie, kernel 6.16.7, aarch64 β€” the QRB2210's operating system.
Python
bleak
3.0.2. BLE central. Host side only β€” this is the constraint the whole architecture is built around.
BlueZ
5.82. The Linux Bluetooth stack, host side.
SQLite
Bundled with Python. The append-only hash-chained inspection ledger.
pytest
80 tests, 10 of which fail the build if anything proprietary reaches the repository.
Edge Impulse Studio
Edge Impulse Studio
Classifier training for the sensor. Private workspace.
nRF Connect for Mobile
GATT enumeration during bring-up.
GitHub
github.com/markdheilong/sentinel-q
arduino-app-cli
0.13.0,
arduino-router
0.10.0
adbd
dbus-fast
5.0.22
Arduino_LED_Matrix
Arduino_RouterBridge

Hand tools and fabrication machines

Hakko 930 ESD-safe soldering station
Flying leads and header pins onto the toggle switch. ESD safe, which matters when the thing on the other end of those leads is a board with a Qualcomm SoC and an STM32 on it.
Fluke 179 True RMS multimeter
Continuity on the switch wiring and supply rail checks.
Helping hands with custom aluminum base with rubber feet
Holding the switch while soldering.Tinning wire tips after them being strippn
Lenovo ThinkStation P520
Windows 11. Development workstation.
Samsung Galaxy S21 FE 5G
nRF Connect host during bring-up, and build photography.

Story

Read more

Schematics

The bench, as it runs

Shop-built brake stand with a Haldex automatic slack adjuster on an S-cam shaft, the Sentinel sensor on its bracket, and a GW Instek GPS-1850D at 9.05 V standing in for the 9 V battery so supply voltage isn't a variable.

Arduino UNO Q β€” both processors

Qualcomm QRB2210 and STM32U585 on one board, with the WCBN3536A radio module carrying the Bluetooth controller the gateway uses. The Linux side runs BlueZ and the gateway; the MCU side drives this LED matrix and reads the driver's button.

Sensor on the bracket

Sentinel sensor on a fabricated aluminium bracket with a two-pin automotive connector, held in fixed relation to the pushrod. That fixed relationship is the measurement β€” a bracket that moves is a sensor that lies.

Driver's trigger β€” D2

ALCO MTA-106D miniature SPDT toggle, salvaged from a previous project, flying leads soldered to header pins and seated on D2 and ground. INPUT_PULLUP, closed reads LOW. A maintained toggle rather than a momentary button β€” the sketch triggers on the transition either way, but a momentary switch is the right part for production.

Code

Sentinel-Q gateway

The full gateway: enrollment, identity, supervisory logic, hash-chained ledger, driver procedure, and the MCU sketch. MIT licensed, commented throughout, 80 passing tests β€” 10 of which fail the build if anything proprietary reaches tracked source.

Credits

Mark Donaldson
1 project β€’ 6 followers
Founder & CEO, Quantuity Analytics. Edge AI, TinyML and RF wireless for commercial vehicle safety. I hold a Class AZ commercial licence.

Comments