OttoBot v3 embeds a full web control surface directly into the ESP32 — streaming camera, live voice, OLED status, and gesture controls, all served by the robot itself. No cloud, no app install.
The web UI is compiled into the firmware. Point a browser at the device and you get a live control surface — no backend, no separate host, no setup.
Snapshot and live frames streamed straight from the ESP32 over the embedded web server, with post-stream cleanup to keep the pipeline stable.
Audio capture routed through I2S with TX-channel init fixed at boot — the root cause of silent output — plus raw PCM path cleanup.
On-device display shows live state — network, streaming, and diagnostics — so the robot communicates its health without a screen attached.
Dithered fills and an expression grid give the robot character — expressive, physical responses driven by on-chip logic.
Embedded HTML served at flash time via CMake, so the interface the browser sees always matches the firmware that's actually running.
One flash, one self-contained device. The browser brain and the robot body ship together — no external dependencies to keep in sync.
The web control surface is baked into the firmware at build time, then served by the device itself.
Each milestone shipped as isolated patches, so the firmware stays auditable and the browser brain stays in lockstep with the hardware.
Fixed TX-channel init at boot, enabled camera snapshot with JSON metadata, and cleaned up the streaming pipeline.
Built and baked the browser control surface into the firmware — the robot serves its own dashboard.
On-device status display plus dithered fills and an expression grid for physical, characterful responses.
A robot that carries its own brain and its own interface. Flash it, connect, and open the browser.