NanoPod - An iPod-Style Audiobook Controller for Kids (ESPHome + Music Assistant)
TL;DR: I built a kid-friendly audiobook controller using a cheap round ESP32 display, ESPHome, and Music Assistant. No app needed - just spin the wheel and play. Pure YAML, no custom C++ required.
The Problem
My kids love audiobooks, but controlling playback through phones or voice assistants was always problematic:
- Phones get lost, broken, or become distraction devices
- Voice assistants mishear requests or play the wrong thing
- Existing solutions are too complicated for young children
I wanted something physical, simple, and foolproof.
The Solution: NanoPod
NanoPod is an iPod-inspired controller built on the CrowPanel 1.28" ESP32 Rotary Display (~€30-40). It connects to Music Assistant and provides a dead-simple interface:
- Spin the wheel to browse artists/albums
- Click to select
- Spin during playback to adjust volume
That’s it. A 4-year-old can use it.
Features
- Three-screen navigation: Artist carousel → Album list → Now Playing
- Cover art display with dynamic loading from Music Assistant
- Dual input: Rotary encoder AND capacitive touch gestures
- Progress ring: Outer arc shows playback position
- Sleep mode: Auto-dims after 60 seconds, wakes on touch
- Lazy loading: Handles large libraries (1000+ audiobooks) without lag
Hardware
CrowPanel 1.28" HMI ESP32 Rotary Display
- ESP32-S3 with 16MB Flash, 8MB PSRAM
- 240x240 round IPS display (GC9A01A)
- Rotary encoder with click button
- Capacitive touchscreen
- 5x RGB LEDs
Where to buy:
- 404 Not Found
- https://www.aliexpress.com/item/1005007154042970.html
- https://www.berrybase.de/crowpanel-esp32-1-28-hmi-display-modul (EU)
Software Stack
- ESPHome with native LVGL components
- Music Assistant for library management and playback
- Pure YAML - no custom C++ components needed
This was a pleasant surprise. ESPHome’s LVGL integration is powerful enough to build complex UIs entirely in YAML with lambdas.
Navigation
HOME (artist carousel)
├── Spin/Swipe: cycle artists
└── Click/Tap: → ALBUMS
ALBUMS (album list)
├── Spin/Swipe: scroll albums
├── Click/Tap: → PLAYER (start playback)
└── Long press/Swipe up: → HOME
PLAYER (now playing)
├── Spin/Swipe: adjust volume
├── Click/Tap: toggle play/pause
└── Long press/Swipe up: stop → ALBUMS
Installation
- Clone the repo: git clone GitHub - tobsch/nanopod: NanoPod is an iPod-style Music Assistant controller (initially designed for children) using the CrowPanel 1.28" HMI ESP32 Rotary Display with ESPHome and LVGL.
- Create secrets.yaml:
wifi_ssid: “YourWiFi”
wifi_password: “YourPassword”
music_assistant_host: “192.168.1.x”
music_assistant_port: “8095”
music_assistant_token: “your_token”
media_player_id: “your_player_id” - Flash: esphome run nanopod.yaml
- Done!
What’s Next
- Episode/track selection within albums
- Sleep timer
- Playlist support
- A 3D-printable stand
Links
- GitHub: GitHub - tobsch/nanopod: NanoPod is an iPod-style Music Assistant controller (initially designed for children) using the CrowPanel 1.28" HMI ESP32 Rotary Display with ESPHome and LVGL.
- Hardware: CrowPanel 1.28" ESP32 Rotary Display
Happy to answer questions. This project was built entirely with Claude Code, including the UI design conversion from SquareLine Studio to ESPHome YAML.
