TrackDayPyrometerHelper is my first Android app. The main focus is tire temps — a custom BLE pyrometer to replace my broken gun, synced into the app for OUT/MID/IN sessions on all four corners. It grew from there into TPMS for hot and cold pressures, and ProForm corner scales over Bluetooth. Everything lives in one place for the LS3 135i.
The Android source is private for now; I’m aiming for the Play Store next month. The ESP32 pyrometer firmware is public: MrBlahhhh/PyroTC.
Tire temps
While a basic tire pressure gauge just tells you how much air is inside, a pyrometer — a highly accurate temperature probe — shows you the physical stress the tire is actually experiencing. By measuring the heat at three distinct points across the tire’s surface (the inside edge, the middle, and the outside edge), a driver can see exactly how the car is planting its weight onto the pavement. Those three temperature readings act like a diagnostic report, revealing flaws in how the car’s suspension is adjusted that even an experienced driver might not feel from behind the wheel.
Sessions are timestamped and tagged by compound — slick, R-Comp, RE-71RS, etc.
OUT / MID / IN per corner, plus sync from the pyrometer and from TPMS for cold and hot PSI.
The TIRES tab records OUT, MID, and IN for all four corners. Static camber per corner feeds setup notes. Aim for the lowest hot pressure that doesn’t roll the outer shoulder — outer-edge heat or graining is the rollover signal. Take temps right after coming in; they fade fast.
SYNC FROM PYROMETER pulls live readings from PyroTC over BLE — tap record on the gun, hit sync in the app, and cells fill.
PyroTC — custom BLE pyrometer
My old tire pyrometer died. Rather than buy another standalone gun, I built PyroTC: a handheld K-type reader on the Waveshare round ESP32-S3 touch LCD, in a 3D-printed enclosure.
Head, handle, faceplate, and screw-on battery cap — designed around the round display module and an 18650 in the grip.
The device owns all twelve readings (four corners × OUT/MID/IN). On the SELECT screen you pick LF/RF/LR/RR; on RECORD you see live probe temp, the three slots, and big RECORD / CLEAR / BACK buttons. A short beep confirms a capture — no hardwired trigger.
Tap a corner, record OUT → MID → IN, hit SYNC FROM PYROMETER in the app — cells fill live over BLE.
Firmware is a single main.cpp (~450 lines), PlatformIO, NimBLE-Arduino 2.x, and a MAX6675 on software SPI. Full source: github.com/MrBlahhhh/PyroTC.
Download the enclosure:
tiretester.stl(body),cover.stl(faceplate),cap.stl(battery cap) — in/cad/pyrotc/.
BLE contract
The app (PyroSync.kt) and firmware share a fixed GATT layout — change either side without updating the other and things break silently.
| Item | Value |
|---|---|
| Device name | PyroTC |
| Service | a1b20001-7a9c-4b1e-9d3a-2f6c8e5d4c30 |
TEMP …0002 |
READ + NOTIFY ~4 Hz — float32 LE °C + uint8 fault (live probe) |
STATE …0003 |
READ + NOTIFY on change — 24 bytes, 12 × int16 LE deci-°C in order LF[O,M,I], RF[O,M,I], LR[O,M,I], RR[O,M,I]; -32768 = empty |
pio run -t upload
pio device monitor -b 115200TPMS sensors
Tag each sensor by valve-stem color, map colors to corners. Rotate tires — re-point colors, not MAC addresses.
TPMS decoding lives in the app, not the pyrometer firmware. Scan finds nearby sensors (they only broadcast while rolling or just stopped), you tag each one with a color on the valve stem, then assign colors to LF/RF/LR/RR. Saved sets cover different wheel/tire combos.
SYNC COLD PSI and SYNC HOT PSI on the tire temp screen fill pressures from mapped sensors. Ambient temperature comes from a one-shot Open-Meteo lookup so the app can flag cold tires.
ProForm corner scales
What started as a side project — I wanted live weights from my ProForm wireless scale pads on my phone instead of juggling the factory display. Reverse-engineering the BLE protocol got the four pads waking, mapping to FL/FR/RL/RR, and streaming live weights.
Wake each pad over BLE, map to a corner, calibrate, then zero with the car off the pads.
Live mode streams all four corners. Manual entry works when you only have corner numbers from somewhere else.
The scales screen handles the painful parts: waking sleepy pads by MAC, per-corner calibration, and ZERO ALL with the car off the pads.
Corner balance
Manual entry still gives you cross weight, diagonal totals, and whether to adjust perches.
Example: 44.83% cross on 2,904 lb — move 150 lb onto the RF+LR diagonal to hit 50%.
The BALANCE tab shows FL/FR/RL/RR weights, total, front/rear and left/right split, and cross weight against a target (I run 50.00%). When cross is off, the app tells you how much weight to move onto the RF+LR diagonal and whether to raise RF/LR or lower LF/RR. Optional perch-turn calibration converts pounds into turns.
Parts list
PyroTC pyrometer
| Part | Notes |
|---|---|
| Waveshare ESP32-S3-Touch-LCD-1.28 | GC9A01 round LCD + CST816S touch; display, touch, IMU, and battery ADC are onboard |
| MAX6675 breakout | K-type, software SPI — SCK GPIO15, SDO GPIO17, CS GPIO18 |
| K-type tire pyrometer probe | Yellow +, red − on the terminal block |
| Active buzzer | GPIO33 → (+), (−) → GND (BUZZER_ACTIVE 1 in firmware) |
| 18650 Li-ion cell | Fits the printed handle; screw-on cap with contact spring at the base |
| Rocker power switch | Panel mount in the head — Amazon B07S2QJKTX |
| USB charge/data port | CH343P USB-UART on the Waveshare board |
| 3D-printed enclosure | tiretester.stl (body), cover.stl (faceplate), cap.stl (battery cap) |
Optional: 3.7 V LiPo on the board’s MX1.25 connector instead of the 18650 grip pack.
TPMS
- BLE TPMS sensors (Tesla-style 401 MHz valve-stem units) — one per corner, color-tagged on the stem
ProForm corner scales (existing hardware)
- ProForm wireless corner weight scale pads (4) — BLE, wake-on-connect
Phone
- Android device with BLE — app targets Play Store release soon
What’s next
Play Store submission is the immediate goal. The pyrometer hardware and firmware are done enough for track weekends; the app already replaced my paper log for cross, temps, and pressures on the 135i.
If you build a PyroTC, start with nRF Connect: confirm TEMP tracks the probe and STATE updates when you tap RECORD. Flip TOUCH_FLIP_X / TOUCH_FLIP_Y in firmware if corner buttons land wrong on your panel.