Skip to content
Wouter Van de Wiele edited this page Aug 6, 2026 · 3 revisions

ROCAT 2026 — Documentation

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.

Web Dashboard

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.

ROCAT web dashboard

See the Web Dashboard page for the full walkthrough (every option explained, screenshots of each card) plus the REST API and command reference.

Documentation map

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

Quick facts

  • Platform: ESP32 (original, dual-core Xtensa), Arduino framework via PlatformIO, C++17
  • Build: pio run -e esp32dev — see the repo-root CLAUDE for 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

System at a glance

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
Loading

Clone this wiki locally