—
ⓘ data flow
ESP32-WROOM (always WiFi + MQTT)
│ publish ~5 s campuspilot_01/<thing>/telemetry
▼
AWS IoT Core ──MQTTS──▶ cp_dashboard ──WebSocket──▶ this page
Trip start ("Start trip + Motor ON" below)
→ publish campuspilot_01/<thing>/trip {action:"start", engage_motor:"ON"}
→ ESP32 cloud_task.cpp:97 setJetsonRail(true) [GPIO26 LOW, Jetson rail ON]
setMotorRail(true) [GPIO27 LOW, motor rail ON]
→ Jetson boots, cloud_bridge_node.py publishes {state:"jetson_active"}
→ ESP32 drops to heartbeat; Jetson publishes telemetry (adds EKF fields)
Trip stop
→ Jetson publishes {state:"jetson_idle"}
→ ESP32 cuts Jetson rail 2 s later (GPIO26 HIGH)
Sources: ESP32_C3_M8N_Compass/src/{mqtt_client.cpp:229, cloud_task.cpp:97-124}
cp_jetson_ros_python/src/cloud_bridge/cloud_bridge_node.py:51,99,238
Online
—
never
Telemetry
—
GPS Fix
—
Battery
—
volts
Motor
—
15 V LDO
Trip
—
Joystick
—
gamepad
Recording
—
RB+B / RB+X
Jetson telemetry —
EKF position
—
x, y (m)
EKF heading
—
deg
EKF speed
—
m/s
Dist to goal
—
m
🛰️
Waiting for GPS fix…
Map appears once the device reports valid coordinates
Trip control
Recording control
Raw MQTT payloads
Last status
—
Last telemetry
—
Select a run to view its checkpoints, inference grid, and ONNX exports.