2.9 KiB
2.9 KiB
ABrobot ESP32-C3 0.42" OLED — Micro-OS
A modular, lightweight Embedded Micro-OS built for the ABrobot ESP32-C3 development board equipped with the integrated 0.42" (72x40) monochrome OLED display.
🏛️ System Architecture
d:/Projects/ESP32C3/OS/
├── components/
│ ├── sys_core/ # Event bus (sys_event) & global state telemetry (sys_status)
│ ├── sys_input/ # Single-button gesture engine (Click, Double-Click, Hold, Home)
│ ├── sys_gfx/ # 72x40 UI compositor, OLED driver, 5x7 & 3x5 fonts, status/action bars, widgets
│ ├── sys_app/ # App lifecycle manager, registry, and Home App Launcher
│ └── sys_cli/ # Interactive USB Serial/JTAG shell (ps, free, app, input, reboot)
├── main/
│ ├── apps/
│ │ ├── apps.h # System apps registry
│ │ ├── app_clock.c # Clock / Watchface app (multiple view modes, live seconds bar)
│ │ ├── app_sysmon.c # Real-time System Monitor (live RAM sparkline graph, tasks, specs)
│ │ ├── app_settings.c # Settings app (contrast, inverted colors, statusbar toggle, reboot)
│ │ └── app_game.c # Tiny Jump retro runner mini-game
│ ├── CMakeLists.txt
│ └── main.c # OS bootstrap, LED heartbeat, and 20 FPS compositor loop
├── sdkconfig.defaults # ESP32-C3 target & USB Serial/JTAG console defaults
└── README.md
🎮 Single-Button Gesture Controls (GPIO 9)
| Gesture | Timing | Action |
|---|---|---|
| Short Click | < 350\text{ ms} |
Next / Step / Jump: Cycle menu items, change clock view, jump in mini-game |
| Double Click | 2 clicks in 280\text{ ms} |
Previous / Back: Cycle menu backwards |
| Long Press | \ge 450\text{ ms} |
Select / Toggle: Launch selected app, toggle settings |
| Hold (Home) | \ge 1500\text{ ms} |
Global Home: Return to the system App Launcher from any app |
💻 Interactive USB CLI Console
Connect the board via USB-C and open the serial monitor to access the live OS terminal:
esp32c3-os> help
help List all commands
ps List active FreeRTOS tasks and memory
free Display system heap and RAM status
app App management (list, launch <id>, home)
input Simulate button input (click, double, long, home)
contrast Set OLED contrast (0-255)
reboot Reboot the MCU
Examples:
- Switch to the game remotely:
app launch game - Trigger a jump remotely:
input click - Inspect tasks:
ps - Return to home menu:
app home
🚀 How to Build and Flash
In your ESP-IDF terminal environment:
# 1. Build the project
idf.py build
# 2. Flash to the board and open the serial monitor
idf.py -p COMx flash monitor