NanoPod - An iPod-Styler remote for MA (ESPHome + Music Assistant)

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:

  1. Spin the wheel to browse artists/albums
  2. Click to select
  3. 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:


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

  1. 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.
  2. 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”
  3. Flash: esphome run nanopod.yaml
  4. Done!

What’s Next

  • Episode/track selection within albums
  • Sleep timer
  • Playlist support
  • A 3D-printable stand

Links

Happy to answer questions. This project was built entirely with Claude Code, including the UI design conversion from SquareLine Studio to ESPHome YAML.

1 Like