feat: Integrate UWB tag display + ESP-NOW + e-stop (salty/uwb-tag-display-wireless) #590

Merged
sl-jetson merged 1 commits from sl-uwb/issue-merge-uwb-tag-display into main 2026-03-14 13:32:20 -04:00
Collaborator

Summary

Integrates Tee's display/ESP-NOW/e-stop additions from salty/uwb-tag-display-wireless into the production tag firmware (esp32/uwb_tag/).

Base: DS-TWR initiator from Issue #545. Target hardware: Makerfabs ESP32 UWB Pro with Display (DW3000 + SSD1306 OLED).

OLED display (SSD1306 128×64, I2C SDA=4 SCL=5)

  • Large distance readout (nearest anchor, auto m/cm formatting)
  • Per-anchor range rows with link-age staleness indicator
  • RSSI signal strength bars (0–5)
  • Uptime clock + rolling sequence counter
  • Full-screen E-STOP warning overlay while button held

ESP-NOW wireless (peer-to-peer, no WiFi AP)

20-byte broadcast packet (magic 0x5B01):

Field Bytes Description
magic 2 0x5B 0x01
msg_type 1 0x10=RANGE, 0x20=ESTOP, 0x30=HEARTBEAT
anchor_id 1
range_mm 4 int32_t LE
rssi_dbm 4 float LE
timestamp_ms 4 millis()
battery_pct 1 0xFF = not measured
flags 1 bit0 = estop_active
seq_num 1 rolling
  • RANGE packet on every successful TWR cycle
  • HEARTBEAT at 1 Hz
  • ESTOP at 10 Hz while button held; 3× clear packets on release

Emergency stop (GPIO 0 / BOOT button, active LOW)

  • Blocks all ranging while active
  • Serial +ESTOP:ACTIVE / +ESTOP:CLEAR
  • 10 Hz ESP-NOW ESTOP TX while held

Build changes

Added to platformio.ini:

adafruit/Adafruit SSD1306@^2.5.7
adafruit/Adafruit GFX Library@^1.11.5
## Summary Integrates Tee's display/ESP-NOW/e-stop additions from `salty/uwb-tag-display-wireless` into the production tag firmware (`esp32/uwb_tag/`). Base: DS-TWR initiator from Issue #545. Target hardware: Makerfabs ESP32 UWB Pro **with Display** (DW3000 + SSD1306 OLED). ### OLED display (SSD1306 128×64, I2C SDA=4 SCL=5) - Large distance readout (nearest anchor, auto m/cm formatting) - Per-anchor range rows with link-age staleness indicator - RSSI signal strength bars (0–5) - Uptime clock + rolling sequence counter - Full-screen **E-STOP** warning overlay while button held ### ESP-NOW wireless (peer-to-peer, no WiFi AP) 20-byte broadcast packet (magic 0x5B01): | Field | Bytes | Description | |-------|-------|-------------| | magic | 2 | 0x5B 0x01 | | msg_type | 1 | 0x10=RANGE, 0x20=ESTOP, 0x30=HEARTBEAT | | anchor_id | 1 | | | range_mm | 4 | int32_t LE | | rssi_dbm | 4 | float LE | | timestamp_ms | 4 | millis() | | battery_pct | 1 | 0xFF = not measured | | flags | 1 | bit0 = estop_active | | seq_num | 1 | rolling | - RANGE packet on every successful TWR cycle - HEARTBEAT at 1 Hz - ESTOP at 10 Hz while button held; 3× clear packets on release ### Emergency stop (GPIO 0 / BOOT button, active LOW) - Blocks all ranging while active - Serial +ESTOP:ACTIVE / +ESTOP:CLEAR - 10 Hz ESP-NOW ESTOP TX while held ### Build changes Added to `platformio.ini`: ``` adafruit/Adafruit SSD1306@^2.5.7 adafruit/Adafruit GFX Library@^1.11.5 ```
sl-jetson added 1 commit 2026-03-14 12:20:01 -04:00
Integrates Tee's additions to the DS-TWR tag firmware (esp32/uwb_tag/).
Base is our DS-TWR initiator from Issue #545; extensions added:

OLED display (SSD1306 128×64, I2C SDA=4 SCL=5):
- Big distance readout (nearest anchor, auto m/mm)
- Per-anchor range rows with link-age indicator
- Signal strength bars (RSSI)
- Uptime + sequence counter
- Full-screen E-STOP warning when button held

ESP-NOW wireless (peer-to-peer, no AP required):
- 20-byte broadcast packet: magic, tag_id, msg_type, anchor_id,
  range_mm, rssi_dbm, timestamp_ms, battery_pct, flags, seq_num
- MSG_RANGE (0x10) on every successful TWR
- MSG_ESTOP (0x20) at 10 Hz while button held; 3× clear on release
- MSG_HEARTBEAT (0x30) at 1 Hz

Emergency stop (GPIO 0 / BOOT button, active LOW):
- Blocks ranging while active
- 10 Hz ESP-NOW e-stop TX, serial +ESTOP:ACTIVE / +ESTOP:CLEAR
- 3× clear packets on release

Build: adds Adafruit SSD1306 + GFX libraries to platformio.ini.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-jetson merged commit 6a8b6a679e into main 2026-03-14 13:32:20 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#590
No description provided.