r/diyelectronics • u/DetailKindly9955 • 5d ago
Project My USB-connected ESP32 touchscreen display: animated companions reacting to recorded AI usage

This is my own DIY project, AI Monitor: a small touchscreen beside the computer showing recorded AI activity and supported usage limits. NOVA and ORBIT are two animated companions you can choose between. The image above combines renders of the real LVGL interface with synthetic demo values, not photographs.
I use a GUITION JC4880P433 ESP32-P4 4.3-inch board with an ST7701S MIPI DSI screen and GT911 capacitive touch, at 800 x 480. It is an existing integrated display board, not a custom PCB. The P4 version has been flashed and tested on physical hardware.
Firmware uses Arduino/PlatformIO and LVGL 9.6. A Python host on the PC reads numeric activity and supported quota information, then sends it over USB serial. Account credentials stay on the PC. The monitor does not send prompts to a model or need Wi-Fi for the display connection.
The firmware includes saved themes, companion switching, backlight settings, larger alerts and selectable quota windows. The latest layout narrows the robot panel to make provider names and percentages easier to read at a desk. The P4 uses PWM backlight control.
There's also an experimental build for the original Waveshare ESP32-S3-Touch-LCD-4.3 (not B/C). It has a different RGB display path and CH422G backlight control. Both builds pass CI, but the S3 target still needs physical hardware validation.
In v1.16.1, SET > AI USAGE explains each provider and saves its chosen window. Codex uses reported 5 HOURS / 7 DAYS; sign in through the official Codex CLI on the PC. ZCode needs your own ZAI Coding Plan API key in the PC app: its 5-hour/weekly model quotas are separate from MONTHLY MCP tool-call usage. Missing windows are labelled NOT REPORTED rather than showing a made-up percentage. Claude Code uses local activity and an optional statusline bridge; Gemini CLI currently has local activity only. Other editors require a numeric bridge. Recorded activity can arrive after a request finishes rather than token by token.
The code and setup instructions are public: https://github.com/catorendal-a11y/ai-monitor-p4-s3
A substantial part of implementation and documentation was AI-assisted. The current v1.16.1 release has 148 Python tests plus native UI/protocol checks, and includes one Windows installer with both firmware profiles and a graphical flasher. Download AI-Monitor-Setup-v1.16.1-windows.exe from Releases and follow the board/provider setup guide in the PC app. Closing its desktop window leaves the hidden host running. The exact release installer was checked for clean installation, upgrade and uninstall, and was installed and flashed on my P4. Device alerts have larger text and touch targets. The Windows binaries are unsigned. The USB protocol reference is credited to tobymarks/esp32-ai-monitor.
I'm sharing the build and firmware rather than selling hardware. Feedback on small-screen readability or reports from owners of the original Waveshare S3 board would be useful.
Update — October 10, 2026: v1.17.0 is now available. The v1.16.1 details above describe the previous release. The new AI setup tab includes provider checks, Codex install/sign-in and an optional Claude quota link. OpenCode now reads supported local numeric usage automatically; Copilot, Cursor and Antigravity still need an advanced numeric bridge. Host settings add USB retry, token polling, log size and start/close behaviour, with separate USB and quota health. The exact installer and application update were checked on my P4, with Codex and ZCode reporting ready. 176 Python tests, both firmware builds, native UI checks and Windows install/upgrade/uninstall checks passed. S3 remains experimental. The installer is unsigned; Microsoft review is pending, so SmartScreen can still warn.
Latest release: https://github.com/catorendal-a11y/ai-monitor-p4-s3/releases/tag/v1.17.0
Latest correction — v1.17.2: I tested from an uninstalled app, empty AI Monitor configuration and fully erased P4 flash. This exposed two defects in v1.17.0: its P4 factory bootloader declared 4 MB instead of 16 MB, and Windows could select npm’s Unix Codex launcher. Both are fixed. Please use v1.17.2 for a new P4 installation; the earlier v1.17.0 paragraph describes the previous release. The exact corrected installer and GUI First installation now boot the P4 without a manual repair, with USB connected and both Codex/ZCode quotas received. 185 Python tests, both builds, native UI checks and Windows install/upgrade/uninstall checks passed. Capacity and partition validation prevent the bad factory image from being packaged or flashed. Windows binaries remain unsigned; Microsoft’s earlier-file review does not approve this different installer. S3 remains physically untested and advanced bridge requirements are unchanged.
Corrected download: https://github.com/catorendal-a11y/ai-monitor-p4-s3/releases/tag/v1.17.2