Skip to content

Lab log

What actually passed on this bench. Detail lives in each phase; this page is the scoreboard.

Bench

Item Value
Host Ubuntu 24.04 · CH340 1a86:7523 · port moves (/dev/ttyUSB0 / ttyUSB1)
Board ESP32-D0WD-V3 · MAC 8C:94:DF:6D:C9:5C
Stack ATGM336H · ST7789 240×240 (TFT + GNSS power on)
On chip now firmware/07-field-ui

Checkpoints

# Result Notes
0 Pass CH340 /dev/ttyUSB0 · ESP32-D0WD-V3 rev v3.1 · MAC 8C:94:DF:6D:C9:5C · erase ~12 s
1 Pass build 2.3 s · upload ~20 s · serial hello + MAC 8C:94:DF:6D:C9:5C · flash 4MB
2 Pass TFT VCC/GND/BL → 3V3 star · hello OK after replug on ttyUSB1
3 Pass GNSS VCC/GND + antenna · hello OK (watch heat — 3V3 only)
4 Pass UART GPIO16←TX · $GNGGA/$GNRMC/$BDGSV · ANTENNA OK · no fix indoors (expected)
5 Pass structured fix=NONE sats=0/0 hdop=25.5 ~1 Hz indoors · 3D deferred to sky
6 Pass SPI 18/23/5/21/22 · init(240,240,SPI_MODE3) · panel R→G→B
7 Pass outdoor FIX 3D · SAT 8/10 · HDOP 2.3 · lat/lon locked · demo photo

Quirks worth remembering

  • Classic ESP32 here is CH340 → /dev/ttyUSB*, not the S3 dual Type-C COM jack from seismo. After unplug/replug the number can move (ttyUSB0 → ttyUSB1); check ls /dev/ttyUSB* before monitor/upload.
  • Cold start indoors can take minutes or never get a 3D fix — outdoor / clear sky is the real Phase 7 checkpoint.
  • If NMEA looks like garbage, try baud 115200 instead of 9600.
  • This ST7789 240×240 needed tft.init(240, 240, SPI_MODE3) (MODE0 stayed blank); don’t pass CS into SPI.begin.