LLM после работы: делаю дочке интерактивную книгу с 16 концовками на ESP32-P4


Использованием LLM сейчас никого не удивить, тем более для рабочих задач. Дома тоже: LLM поручают ведение бюджета, консультируются по вопросам здоровья, обслуживанию автомобиля, отношениям…
Поэтому логичным продолжением оказалась и следующая история:
Вечером мы с дочкой в очередной раз читали сказки, и она спросила:
- А почему Белоснежка не позвала Эльзу? Она бы заморозила Злую Королеву.
Я объяснил, что вообще-то это разные сказки. Они даже не знакомы друг с другом.
- Так давай их познакомим!
У детей нет ограничений, безграничная фантазия и много идей, но чаще всего они только в фантазиях и остаются, да иногда в детских рисунках. А хочется, чтоб эти фантазии воплотились в реальность, чтоб то, что придумал ребенок или вы вместе – восхитило, подарило эмоции и сделало вас счастливее. Хочется взять и превратить фантазию в то, что можно увидеть, услышать и прочитать.
LLM – тут подходят просто отлично. Можно любые фантазии наболтать ChatGPT или в его конкурентов, попросить нарисовать и получить красочную картинку (правда с диснеевскими принцессами это оказалось не так просто – GPT упорно отказывается генерировать Белоснежек с гномами).
Но просто картинки сами по себе – это неинтересно. Точнее интересно, но в моменте, а хочется долгоиграющего результата. Хочется, чтоб результат радовал, его можно было демонстрировать, а ещё чтоб это всё помогало в развитии ребенка, иначе зачем это всё?
Поэтому на ум пришла идея – давай из этих картинок собирать книжку, да не простую, а интерактивную – такую, чтоб можно было взять, открыть и полистать. При желании - друзьям показать. А раз она электронная – то туда можно ещё добавить звуки, музыку и анимацию – получим вообще что-то вроде живого комикса.
С точки зрения воспитания ребенка – сплошные плюсы. Совместное времяпрепровождение с папой и неограниченное творчество. А ещё если сделать сюжет на английском языке, который уже начали изучать, то получится развивающий и полезный продукт.
31 сцена и 16 концовок
Раз «комиксы» живые, да и ограничений в фантазии нет – можно добавить интерактивность. Так, чтобы можно было выбрать на каждой страничке, как будут развиваться события на этот раз. Пойдем направо или налево. Заговорим с персонажем, или спрячемся. Дочь нафантазирует канву и варианты – а я превращу это в логичные истории с помощью нейронок, которые мне помогут сделать и тексты, и картинки, и подобрать музыку.
Правда, скажу, что вариативность всё-таки придумывать и реализовывать пришлось папе самостоятельно. Тяжело ребенку держать сразу несколько параллельных сценариев в голове. Но так получилось даже лучше: на базе героев и идей ребенка получилось сгенерировать неизвестные дочке сюжеты, и книжка ей была интересна не только как продукт совместного творчества, но и сама по себе. В отличие от линейных сюжетов мультфильмов она несколько раз проходила книгу, запоминая предыдущие свои выборы, и действовала по-другому, строя гипотезы и предположения, как закончится сюжет.
В нашей книге мы сделали 4 шага выбора сюжетных поворотов, получилось 16 концовок и 31 сцена всего.

Такой подход дал несколько полезных следствий:
- Не скучно: сами по себе истории короткие. Весь сюжет одной ветки проходится за несколько минут. А также короткий сюжет проще запомнить и сравнивать с другими ветками.
- Развиваем любопытство, навык исследования нового: несмотря на то, что истории короткие, их относительно много. И это «поле» интересно изучать: менять решение на развилках, строить гипотезы, что произойдет дальше, и к чему может привести принятое решение.
- Развиваем логику и память: нужно запоминать сюжеты, где и что выбирал раньше, чтоб не повториться, и не пропустить ничего, так как интересно посмотреть все концовки.
- Английский язык: воспринимаем и на слух (то, что читает диктор), и в виде текста. сюжеты похожи, лексика в разных ветках – одна и та же. Получается, что повторяем одни и те же новые слова в разных предложениях в разных сценах.
LLM
Историю придумываем вместе с дочкой, основные сюжетные повороты и идеи «накидывает» она. Папа – редактор и воплощает в жизнь (иногда подкручивая логику сюжета). Но основную работу перекладываем на ИИ:
- полный сценарий и диалоги героев.
Получился существенный объем текстов, руками делать это было бы трудозатратно.
С помощью LLM (ChatGPT) получилось легко прописать все ветки и внести в них правки. Просто в виде потока сознания всё «рассказали» по сюжету, а я дал ТЗ на то, какого объема тексты в каждой сцене должны быть, объяснил, как выглядит структура сценария и с первого раза получили отличный вариант, который несущественно «докрутили».
Описание каждой сцены получили примерно в таком виде (делали сначала всё на русском языке).
Г1-2 → D2. Белоснежка прячется за занавеску
Картинка: Полумрак, свечи мерцают. Белоснежка с замиранием сердца выглядывает из-за занавески, а гномы переглядываются, рассматривая пирожки и аккуратно сложенные салфетки.
Текст диктора: Гномы удивились: кто мог сделать такой праздник? Один сказал: «Здесь живёт доброе чудо». Белоснежка тихо вышла из-за занавески и поклонилась. «Это была я… Простите, если вторглась без спроса». Гномы рассмеялись: «Теперь этот дом твой тоже».
- иллюстрации.
В этой части нужно было потрудиться. Делал её я уже без дочки, пришлось покорпеть.
Во-первых, ChatGPT жестко блокирует картинки, где начинает подозревать, что вы повторяете образы из диснеевских мультфильмов. Стоит в чате один раз упомянуть «Белоснежку» или даже «гном», чат начинает «троить» и перестаёт выдавать часть картинок. Поэтому приходилось скорее описывать настроение, эмоцию и как должны выглядеть герои внешне. Тогда GPT не ругался, хотя выдавал по виду всё тех же диснеевских принцесс.
Во-вторых, образы «уплывают» и от сцены к сцене у героини могут меняться наряды и внешний вид, поэтому нужно каждый раз описывать, как она выглядит. При этом общая рисовка, стиль – обычно сохранялся от картинки к картинке. Но всё это можно объяснить самому GPT, и он сделает промпты из ваших изначальных текстов самостоятельно: уберет героев и «подкрутит» промпт, чтоб он проходил генерацию без блокировок
Пример такого «безопасного промпта» для генерации картинки и результат
A richly detailed, hand-painted animated illustration in a classic fairy-tale style, widescreen landscape composition. Evening settles over a quiet forest with a small wooden cottage glowing warmly through its round door and window. A young woman in a pink-toned dress stands at the doorway, smiling gently as she’s greeted by a kind dwarf who offers her a small shimmering ring with a warm smile. The scene glows with golden light from the cottage blending softly into the cool blue of the starry night. Inside, a cozy room with a wooden table and lamp can be seen, adding warmth and depth. Above the trees, the constellation of the Little Dipper sparkles faintly, as if blessing the meeting. The mood is peaceful, kind, and filled with quiet wonder — a simple act of friendship under a sky full of stars. Style: traditional hand-painted animation aesthetic, vivid fairy-tale colors, soft warm lighting, painterly textures, cinematic depth, expressive faces, and an atmosphere of kindness and magic.

- программирование.
С помощью LLM написана значительная часть того, что получилось: интерфейс, обработка касаний, обработка изображений, воспроизведение звука и анимаций.
Выбор устройства
Первый вариант, который сразу приходит в голову, когда рассматриваешь идею такой книжки – сделать приложение для планшета. Но это не наш вариант:
- во-первых: планшета у меня нет, а покупать специально для такой «игрушки» кажется избыточным.
- во-вторых: даже если бы был, он не подходит, и вот почему.
Там много соблазнов, как и в смартфоне – вместо книжки захочется посмотреть мультики. Он неудобный – т.е. он не запускает книжку сразу после включения – нужно открыть приложение. А это приводит к тому, что опять же появляется выбор и переход к мультикам.
Хочется сделать именно отдельное устройство, само в себе, которое было бы только книжкой. Без отвлекающих приложений, без уведомлений, без перезагрузок для обновлений, без свободного выхода в интернет.
Для этого хорошо подходят HMI сенсорные панели на базе микроконтроллера. Вообще на них делают много разного – интерфейсы для станков, экраны для умного дома, встраивают в технику, лифты и т.п. Поэтому для нас – их набора возможностей достаточно – они умеют отображать хорошую графику и анимацию, там тач-скрин, возможность подключить динамики и, если потребуется, батарею. Корпус можно сделать самостоятельно любой на 3d-принтере.

Выпускают такие панели довольно много производителей, в разных форматах, разрешениях и с различным набором «начинки». Наиболее распространенные варианты по микроконтроллерам – ESP32-S3 и ESP32-P4.
Таблица сравнения нескольких доступных на рынке вариантов:
Параметр | CrowPanel 7" S3 | CrowPanel 9" P4 | Waveshare 10.1" P4 | Sunton 10.1" S3 |
Процессор | ESP32-S3, 240 МГц | ESP32-P4, 400 МГц | ESP32-P4, 400 МГц | ESP32-S3, 240 МГц |
Разрешение | 800x480 | 1024x600 | 800x1280 | 1024x600 |
PSRAM | 8 МБ | 32 МБ | 32 МБ | 8 МБ |
Аппаратная обработка графики | - | PPA, JPEG | PPA, JPEG | - |
Сенсорный экран | Есть | Есть | Есть | Есть |
Цена с доставкой в РФ | от 7 000 ₽ | от 12 000 ₽ | от 12 000 ₽ | от 5 000 ₽ |
Выбор остановил на ESP32-P4, конкретно на панели от Elecrow.
Уже давно присматривался к этим панелям, но не было повода купить. Для нашей же задачи подходит идеально. IPS-дисплей 1024x600 с емкостным сенсором, 32 МБ PSRAM, 16 МБ Flash, слот microSD и возможность подключения двух динамиков.
Достаточно памяти для работы с картинками, а также есть PPA (Pixel Processing Accelerator). Этот аппаратный блок умеет масштабировать, поворачивать и смешивать изображения. Также предусмотрен аппаратный JPEG-декодер. Всё это нам нужно для работы с графикой, и панель работает с ней отлично. В доступе (на сайте производителя) есть примеры, которые можно скачать и запустить, да и сама панель приходит уже с демо-приложением, которое показывает её возможности.
Соответственно, без проблем сможем добавить нашу графику, тексты, анимацию, наложить музыку и звуки.
Существенный аргумент также был в том, что панель есть в наличии в РФ, стоит адекватных денег и уже через день приехала в пункт выдачи заказов озон.
Краткий обзор устройства
Получил, распаковал.


Прошил демо-пример. В целом – всё соответствует ожиданиям: приятно лежит в руках, картинка яркая, углы обзора отличные, тач работает, звук громкий.

Что дальше
Получается длинновато, пока остановлюсь здесь, пусть эта статья останется как объяснение того, что вообще сделано и зачем. А дальше уже будут статьи посвященные тому, как это сделано.
В следующей статье опишу сам процесс разработки под панель:
Особенности настройки ESP-IDF, сделаю базовый проект для ESP32-P4.
Подключим дисплей и сенсор, запустим собственный интерфейс.
Сделаем первую анимацию: открытие нашей книги.
Ну а потом, в третьей статье также опишу подробно как создавался сценарий, иллюстрации, звук, поделюсь промптами.
Тем не менее - готовый финальный проект давно готов (статьи пишу "по следам" проекта), и его можно взять здесь (если у вас уже есть панель, то можно быстро скачать, прошить и протестировать, как это всё работает):
https://github.com/AI-devices/FairyTales/tree/main
Пока выложена только прошивка в бинарниках, вместе со следующей статьёй - открою исходники (приведу в порядок сначала), чтобы вы могли сделать самостоятельную историю.
Вероятно, раз вы дочитали до этого места, то это было бы интересно сделать что-то похожее. А если поделитесь своими работами, то получится библиотека таких книжек, было бы здорово увидеть.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.