-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Wouter Van de Wiele edited this page Aug 6, 2026
·
3 revisions
ROCAT is an ESP32-based robot cat: a desk companion with an animated LCD face, web-radio streaming, RGB "eyes and ears", motor dance moves, mini-games, a mood engine driven by real sensors, and a web dashboard for remote control.
Start with the Architecture Overview, or jump straight to the User Manual if you just want to use the device — English / Nederlands.
Switch ROCAT to Web Server boot mode and it hosts a live control panel — drive it like an RC car, pick LED effects and custom colors per LED, manage web-radio stations, and set the clock/alarm sound, all from your phone or PC.
See the Web Dashboard page for the full walkthrough (every option explained, screenshots of each card) plus the REST API and command reference.
| Document | Contents |
|---|---|
| User Manual (NL) | For end users — every feature and how to configure it |
| Architecture Overview | Boot modes, FreeRTOS task layout, startup sequence, main loop |
| Hardware Reference | Pin map, I2C devices, SX1509 IO-expander map, power circuit |
| Data Broker | The central blackboard: topics, command flow, locking rules |
| GUI & Carousel | Screen carousel, GUI elements, input handling, status bar, idle logic |
| Audio | Web-radio streaming pipeline, mood sounds, volume model |
| Power Management | Power latch, shutdown paths, wake sources, battery monitoring |
| Mood Manager | Sensor-driven mood scoring, LED/sound mapping, serial debug commands |
| Connectivity | WiFi provisioning, WebFetcher, weather/news/geo/NTP, time & timezone |
| Web Dashboard | HTTP server, REST API, command reference, teleop safety |
| Storage | NVS key reference, SPIFFS layout, factory defaults |
| Games | Game framework and the six built-in games |
- Platform: ESP32 (original, dual-core Xtensa), Arduino framework via PlatformIO, C++17
-
Build:
pio run -e esp32dev— see the repo-rootCLAUDEfor build/flash details - Display: SED1530/SED1531 100×48 px monochrome LCD on an 8-bit parallel bus, Adafruit_GFX API
- Storage: NVS (settings) + SPIFFS (dashboard web assets, mood sound MP3s)
- Two boot modes: Web Radio (streams internet radio) and Web Server (dashboard with motor teleop) — mutually exclusive because both need I2S0
flowchart LR
subgraph Inputs
JOY[Joysticks / ADC keys]
TOUCH[Touch strip]
ACC[LIS3DH accelerometer]
LDR[LDR light sensor]
RTC[PCF8523 RTC]
BATT[Battery ADC]
end
subgraph Core["DataBroker (blackboard)"]
BB[(Blackboard state + dirty flags)]
end
subgraph Outputs
LCD[SED1530 LCD]
LED[6x WS2812 LEDs]
MOT[2x DC motors]
AMP[Audio DAC + amp]
end
subgraph Services
CAR[CarouselManager GUI task]
MOOD[MoodManager]
WEB[WebDashboard / AudioManager]
FETCH[WebFetcher weather/geo/NTP]
end
Inputs --> BB
BB <--> CAR
BB <--> MOOD
BB <--> WEB
FETCH --> BB
CAR --> LCD
BB --> LED
BB --> MOT
BB --> AMP