Story
Kids love quizzes — especially when the screen actually talks back to them.
In this project, we turn a simple animal quiz into a small interactive console: the child reads a question on the Elecrow CrowPanel, taps an answer, sees the animal on the display, and then hears a short explanation spoken aloud by the TinyTTS module. Everything runs completely offline, with instant response and no cloud connection.
For makers and educators, this build is more than just a demo. It’s a reusable pattern: a touch UI on a CrowPanel plus a local TinyTTS speech module. You can keep the animal theme, or reuse the same structure for geography quizzes, museum exhibits, classroom posters, or any other “picture + short story” content.
In this project, you’ll build:
- A touch-driven animal quiz running on the Elecrow CrowPanel 5" (ESP32-S3).
- A simple two-screen flow: Question → Answer with image → “Learn more” text.
- An offline TinyTTS speech module that speaks both the quiz question and the “Learn more” explanation through a speaker or headphones.
- A reusable template where you can swap animals, text, and images to create your own themed quizzes or educational displays.
What you’ll need
For the full bill of materials, check the “Things used in this project” section. In short, you’ll need a CrowPanel (5" or 7"), a TinyTTS Kit, UART wires, a USB-C power source, and a speaker or headphones.
Option A — Run the ready-made firmware (no coding required)
If you just want to run the quiz immediately, use the prebuilt firmware — no toolchain needed.
- Download the prebuilt firmware bundle from the firmware/ folder.
- Run the included Flash Tool — it will automatically flash all images with the correct layout.
- Connect the TinyTTS Kit over UART (TX↔RX, GND, VCC) and attach a speaker or headphones.
- Power the CrowPanel — the quiz starts and TinyTTS speaks both the question and the explanation.
Option B — Build from Source
If you want to explore the internals or adapt the project for your own ideas, you can build the firmware from source and modify both the UI and the quiz content.
This compiles the LVGL UI, quiz logic, and generates the required SPIFFS image.
The project uses ESP-IDF:
- Install ESP-IDF v5.4.
- Open the project directory in ESP-IDF.
- Build and flash:
idf.py build idf.py -p PORT flash
System Overview
Architecture
- CrowPanel (ESP32-S3)
Runs the entire quiz: displays questions, answer options, and animal images on the touch screen. - TinyTTS Kit
Handles all speech output. The CrowPanel sends plain text over UART, and TinyTTS speaks both the quiz questions and the detailed explanations. - Data Storage
Animal images are stored in SPIFFS and loaded into PSRAM for display.
In short: the quiz logic and UI run on the CrowPanel, while all voice output is generated by TinyTTS from text received over UART.
Repository Structure
- firmware/ – Flash Tool and prebuilt binaries (application, bootloader, partitions, SPIFFS image).
- main/ – ESP-IDF application code: UART communication with TinyTTS, asset loading, system setup, and integration logic.
- components/ui/ – SquareLine Studio project and all UI-related code: LVGL screens, widgets, and the quiz flow (questions, answers, navigation).
- assets/ – RAW image frames that are packed into the SPIFFS partition and displayed during the quiz.
- images/ – Images used in the project documentation (README), not source material for the quiz.
- readme_edit_scenario.md – Notes explaining how to modify the quiz content and structure.
Customization - Editing Text and Images
You can fully customize the quiz to create your own theme.
1. Add or change objects in the text.
- Add new case IDs in components/ui/include/builtin_texts.h.
- Write the spoken riddle text for each case in components/ui/builtin_texts.c.
- Add the on-screen question and answer options for each case in components/ui/ ui_events.c
2. Connect each object to its image.
- Convert your PNG/JPG to an LVGL RAW .bin and place it into assets/.
- Add the matching ui_img_*.c wrapper to components/ui/.
- Map your case ID to this image in kVisuals[] in components/ui/ui_events.c
For exact file names, code snippets, and conversion steps, refer to the detailed guide in readme_edit_scenario.md.
What else can you build with this template?
Adding real voice to a simple quiz makes it far more fun and memorable — kids get curious, tap the screen, listen, and stay engaged. Because everything runs offline and reacts instantly, the experience feels smooth and a bit magical.
Here are a few variations you can build on the same foundation:
- Interactive lessons – Use the talking quiz in primary school to make animal learning more engaging.
- Language practice – Kids see text on the screen and hear it spoken by TinyTTS — great for early language learning.
- Maker workshops – Let students add their own content and rebuild the quiz as a hands-on LVGL + TTS project.
- Museum-style exhibits – Replace animals with artifacts — each item can speak a short story when tapped.
- STEM demos – A clear way to show how a UI device and an offline TTS module communicate over UART.
You can remix the project in minutes by swapping text and images — no logic changes needed.
If you create your own version, share it here!
Resources & Links
- GitHub Repository:
- Other TinyTTS-based project:




