A fun, interactive storytelling device built for kids using an ESP32 with a touchscreen display. Create and explore stories with different paths and choices, all designed to spark imagination and creativity.
Captured on the device with the devtools build (scripts/devtools.py shot).
| Home | Library | At the pool | In the kitchen |
|---|---|---|---|
| At night | Backpack | Settings | |
This project uses affordable, easily accessible hardware:
- ESP32-2432S028R - ILI9341 device with 2.8" touchscreen (under $20)
- ESP32-3248S035C - ST7796 device with 3.5" capacitive touchscreen
- Mini Speaker - 8ohm 1W (optional, for audio feedback)
- Case Design (current): Slim Minimal Case for ESP32 CYD 2.4"/2.8" by @khpa - a slim, clean enclosure for the ESP32-2432S028R
- Alternative: CYD Case on MakerWorld - perfectly fits the board and provides a kid-friendly enclosure
- Interactive Stories: Choose-your-own-adventure style stories with branching paths
- Multilingual Support: Stories available in multiple languages (English, Portuguese)
- Touch Interface: Intuitive touch controls perfect for kids
- Story Management: Download and sync stories from remote catalogs
- Animated Scenes: Pages without a picture get a scene that fits the text (bedroom, kitchen, pool, school, forest, beach...), with the people, animals and things the page mentions; tap it and everyone jumps
- Backpack: Stories can give items and ask the child to pick the right one to solve a puzzle
- Audio Support: Optional speaker for sound effects and feedback
- WiFi Connectivity: Download new stories and sync content
This project was inspired by Aura - a similar concept that sparked the idea for creating a personalized storytelling device.
Stories are created using AI tools to generate engaging, age-appropriate content with multiple branching paths. Each story is structured as JSON files with nodes and choices, making it easy to create complex narrative experiences.
- PlatformIO IDE or PlatformIO Core
- ESP32-2432S028R or ESP32-3248S035C board
- USB cable for programming
- Clone this repository
- Open the project in PlatformIO
- Build and upload the matching PlatformIO environment to your ESP32 device:
- 2.8-inch resistive board:
pio run -e esp32dev -t upload - 3.5-inch capacitive board:
pio run -e esp32-3248s035c -t uploadAdd--upload-port /dev/cu.usbserial-...if PlatformIO cannot select the port.
- 2.8-inch resistive board:
- Configure WiFi settings through the device interface
- Set up WiFi credentials on first boot
- Choose your preferred language
- Download initial story content
- LVGL - Modern UI library for embedded systems
- ArduinoJson - JSON parsing and serialization
- TFT_eSPI - Display driver for ESP32
- XPT2046_Touchscreen - Touch input handling
- HttpClient - Network communication for story downloads
- Modular Design: Separate modules for UI, story engine, network, and storage
- Story Engine: JSON-based story format with node and choice structure
- Remote Catalog: Download and sync stories from online sources
- Local Storage: SPIFFS-based file system for story caching
- Multilingual: Centralized language filtering and management
- Aura Project - Original inspiration for using the Cheap Yellow Board
- LVGL - Amazing UI library that made ESP32 interface development much easier
- witnessmenow's CYD Github - Essential reference for ESP32-2432S028R development
- witnessmenow's ESP32 Web Flashing Tutorial - Helpful deployment guidance
- Random Nerd Tutorials - Excellent ESP32 and LVGL setup tutorials
- @khpa on MakerWorld - The slim, minimal 3D printed case Kiddo uses today
- @hedge on MakerWorld - Excellent 3D printed case design that perfectly fits the ESP32-2432S028R
- LVGL - Graphics and UI framework
- ArduinoJson - JSON handling
- TFT_eSPI - Display driver
- XPT2046_Touchscreen - Touch input
This project was created as a labor of love for my daughter Zoe, with the goal of building an engaging, educational device that encourages reading and imagination. The use of AI tools in development allowed a non-C++ developer to create something meaningful and functional.
This project is open source. Check the LICENSE file for details.
Contributions are welcome! Whether it's bug fixes, new features, or additional stories, feel free to open issues or submit pull requests.
Built with ❤️ for Zoe and all the young storytellers out there.