Firmware¶
Each phase that needs an app gets its own folder under firmware/. That folder is a frozen snapshot: later phases add a new directory instead of rewriting an old one.
firmware/
01-hello/ # Phase 1 (+ kept for Phases 2–3)
04-nmea-raw/ # Phase 4
05-fix-parse/ # Phase 5
06-tft-fill/ # Phase 6
07-field-ui/ # Phase 7
Phase 0 has no app (erased chip). Phases 2–3 keep flashing 01-hello unchanged.
On the board now¶
On chip now: firmware/07-field-ui — live GNSS dashboard on the TFT (Checkpoint 7 Pass).
| Setting | Value |
|---|---|
| Env | esp32dev |
| Port | /dev/ttyUSB0 (CH340 1a86:7523) |
| MAC (bench) | 8C:94:DF:6D:C9:5C |
Sources: see each folder’s src/main.cpp · platformio.ini.
Build and flash¶
Same pattern for every phase: cd into the phase folder, build with env esp32dev, then upload.
cd firmware/01-hello
pio run -e esp32dev
RAM: [== ] …
Flash: [== ] …
========================= [SUCCESS] Took … seconds =========================
pio run -e esp32dev -t upload --upload-port /dev/ttyUSB0
Connected to ESP32 on /dev/ttyUSB0:
…
Hash of data verified.
Hard resetting via RTS pin...
========================= [SUCCESS] Took … seconds =========================
Serial: Phase 1, section 1.3.
Stage map¶
| Phase | Folder | On the chip |
|---|---|---|
| 0 | — | empty (erased) |
| 1 | 01-hello |
hello |
| 2 | 01-hello |
same image, not edited |
| 3 | 01-hello |
same image, not edited |
| 4 | 04-nmea-raw |
raw NMEA mirror |
| 5 | 05-fix-parse |
parsed fix on serial |
| 6 | 06-tft-fill |
TFT SPI fill |
| 7 | 07-field-ui |
GNSS field UI |
Change log¶
- Phase 0 — erase; no app
- Phase 1 — added
firmware/01-hello/ - Phase 4 — added
firmware/04-nmea-raw/ - Phase 5 — added
firmware/05-fix-parse/ - Phase 6 — added
firmware/06-tft-fill/ - Phase 7 — added
firmware/07-field-ui/