Mini Mochi
Настільний робот-голова з настроями, годинником, таймером уроків та іграми. Чотири друковані деталі, два болти M3, усередині нічого не прикручується.
ESP32-C3 · OLED 128×64 · кнопка Cherry MX · DS3231 · LSM6DS3
До складання · Файли без архівів
Перед складанням
- Перед друком перевір плату HW-373: біля нижнього краю, який тримають ребра корпусу, потрібна вільна смуга 1 мм без компонентів.
- GPIO5 читає рівень HIGH як натиск. Підключи кнопку MX із резистором 10 кОм до GND за схемою.
- Автономне живлення не допущене: стабілізатор SuperMini, контролер зарядки та розв’язка USB не звірені. Акумулятор залишається від’єднаним.
- Звір орієнтацію осей LSM6DS3 під час запуску. Для першого запуску використовуй USB.
Що потрібно








Кріплення й витратні матеріали
| Деталь | Кількість |
|---|---|
| Болт M3 × 8, звичайна головка Ø≤5,6 мм | 2 |
| Термовставка M3 · зовнішній Ø≈4,6 × 6 мм | 2 |
| Резистор 10 кОм — підтяжка кнопки до GND; потрібен, поки прошивка чекає рівень HIGH на GPIO5 | 1 |
| Сигнальний провід з ізоляцією Ø≤0,8 мм, різних кольорів | ≈ 1 м |
| Припій, флюс, термоусадка окремо на кожний стик | комплект |
| Двосторонній спінений скотч 1 мм під LSM6DS3, за потреби під DS3231 | ≈ 20 × 20 мм |
| Пінка або смужка скотчу 0,3–0,5 мм за платою OLED, якщо вона бовтається | за місцем |
Інструменти — підготувати один раз
- 3D-принтер FDM із соплом 0,4 мм; PLA, шар 0,2 мм, профіль «0.20mm Quality CC2», без підтримок
- Паяльник із тонким жалом, припій, флюс; насадка для термовставок M3
- Викрутка або ключ під головку болта M3 × 8; пінцет для гаек і дротів
- Бокорізи, стрипер, термоусадка; мультиметр для прозвонки
- Штангенциркуль: звірити плати з таблицею розмірів до складання
- Комп’ютер з Arduino IDE/CLI; USB-C кабель даних
- Для допуску автономного живлення: регульоване джерело з обмеженням струму та засіб вимірювання зарядного струму
Друковані деталі
| Позначення | Деталь | Файл | Орієнтація на столі | Габарит |
|---|---|---|---|---|
| 1a | Основа v11 | 1a_base_v11_qty1.stl | дном на стіл | 40 × 46 × 29 мм, ≈ 16 г PLA |
| 1b | Кришка v5 | 1b_lid_v5_qty1.stl | верхом на стіл (кишені вгору) | 40 × 38 × 4,7 мм, ≈ 3,5 г |
| 1c | Кейкап v1 | 1c_keycap_v1_qty1.stl | лицем на стіл | 18 × 18 × 9,5 мм, ≈ 1,7 г; копія перевіреного кейкапа клікера |
| 1d | Задня панель v4 | 1d_cover_v4_qty1.stl | лицем на стіл | 13,5 × 24 × 2,5 мм, < 1 г |
Корпус 40 × 46 × 31 мм без кейкапа, лице нахилене на 15° назад. Усі чотири деталі друкуються на одній плиті без підтримок; орієнтація вже записана у STL, автоматичний поворот не застосовувати. Кришку тримають два болти M3 × 8 згори у стійки основи (термовставки M3); плати всередині стоять на ребрі в пазах-напрямних і опускаються згори вертикально (ідея Романа); DS3231 лежить на полиці, LSM6DS3 приклеєна в кишеню кришки. Кейкап — перевірена модель клікера, а не нова розробка.
Складання крок за кроком
- 01 · Надрукувати й перевірити чотири деталі
- 02 · Вставка M3 у стійки основи
- 03 · Тумблер у ліву стінку
- 04 · Акумулятор на ребро біля правої стінки
- 05 · Зарядка на ребро в перший паз
- 06 · ESP32-C3 на ребро в другий паз
- 07 · DS3231 на полицю, LSM6DS3 у кишеню кришки
- 08 · OLED згори по похилій стінці
- 09 · Спаяти шини та кнопку
- 10 · Свіч у кришку, кейкап і болти
- 11 · Прошити крізь відкритий виріз і закрити задню панель
- 12 · Допуск живлення, розбирання й ремонт
01 / Надрукувати й перевірити чотири деталі
Завантажити чотири STL однієї ревізії й покласти на одну плиту. Орієнтація вже записана у файлах: основа дном, кришка верхом, кейкап і панель лицем на стіл. Підтримки не потрібні; профіль «0.20mm Quality CC2», PLA.
Після друку оглянути пази-напрямні у правій зоні (тонкі ребра 1 мм, низькі ребра 0,8 мм на дні), широкий виріз у задній стінці та дві стійки по боках від рамки екрана, що ростуть із бокових блоків.
До монтажу електроніки приміряти насухо: екран має ковзати згори вздовж похилої стінки без зусилля; тумблер клацати у вирізі 14 × 9,2 мм; свіч MX клацати у вирізі кришки; панель триматися пробкою у вирізі без клею.
Проводка
Нових з’єднань немає. USB і акумулятор від’єднані.
Перевірка: Немає тріщин, задирок у пазах екрана й напрямних. Болти вільно проходять крізь два отвори кришки.
02 / Вставка M3 у стійки основи
Вплавити по одній вставці M3 згори в отвір Ø4 × 6,5 мм кожної стійки біля рамки екрана, врівень із верхом стінки. Не проштовхувати глибше, ніж до упору отвору.
Робити це до тумблера й електроніки, поки основа порожня й її можна покласти рівно.
Проводка
Нових з’єднань немає. USB і акумулятор від’єднані.
Перевірка: Болт, вкручений згори пробно без кришки, заходить у вставку.
03 / Тумблер у ліву стінку
Припаяти до двох контактів тумблера окремі дроти: червоний SW_IN і помаранчевий SW_OUT, кожен стик у термоусадку. Полярності механічний контакт не має; прозвонити OFF/ON без живлення.
Вставити тумблер ззовні у виріз лівої стінки до клацання власних защіпок; виводи дивляться всередину, корпус заходить на 15 мм. Дроти вивести вгору, в ліву зону за ребром.
Якщо тумблер сидить вільно, не клеїти: зменшити виріз на 0,2 мм у джерелі й передрукувати основу.
Проводка
SW_IN пізніше з’єднується з OUT+ зарядки; SW_OUT залишається ізольованим до допуску автономного живлення.
Перевірка: Тумблер клацає, не випадає і не заважає полиці DS3231 за ним.
04 / Акумулятор на ребро біля правої стінки
Припаяти дроти і опустити цілий, не здутий акумулятор згори вертикально в паз 4,3 мм між тонким боковим блоком рамки екрана і правою стінкою, дротами вперед. Спереду його зупиняє низький упор, ззаду задня стінка.
Дроти йдуть угору перед акумулятором і над ним до зарядки. Кінці ізолювати окремо: до зарядки вони під’єднуються лише на останньому кроці після допуску.
Пакет має стояти в пазі без люфту, але входити без зусилля. Не стискати й не загинати пакет.
Проводка
Акумулятор механічно встановлений, електрично від’єднаний. Червоний і чорний виводи не оголювати одночасно.
Перевірка: Акумулятор стоїть рівно, не виступає над верхом стінки; дроти не затиснуті ні блоком рамки, ні майбутньою зарядкою.
05 / Зарядка на ребро в перший паз
До монтажу звірити контролер і RPROG, як описано в розділі «Батарейна гілка»: ціль близько 100 мА для 200 мА·год. Непідтверджену плату вважати неготовою до заряджання.
Припаяти дроти OUT+ (червоний) і OUT− (чорний); B+ і B− поки лишити вільними. Опустити плату вертикально деталями вправо в перший паз одразу за ребром корпусу: нижній край між низькими ребрами на дні, передній край у Г-упор, задній край за ребро біля стінки, USB-C у ліву частину вирізу задньої стінки.
Плата стоїть на ребрі, роз’єм USB-C дивиться назад вертикально. Нічого не прикручується; зверху її потім тримає язичок панелі.
Проводка
OUT+ → SW_IN тумблера (червоний). OUT− → J_GND лише після допуску батарейної гілки; на час USB-перевірки лишити ізольованим.
B+ / B− — тільки на останньому кроці. Не об’єднувати B− з OUT−: це обходить захист.
Перевірка: Плата опускається без зусилля і не хитається; штекер USB-C входить у роз’єм крізь виріз до кінця.
06 / ESP32-C3 на ребро в другий паз
Припаяти до ESP п’ять дротів до встановлення: GND чорний, 3V3 червоний, GPIO3 синій, GPIO4 жовтий, GPIO5 білий. Контакти 5V/VIN лишити вільними. Орієнтуватися на написи плати.
Опустити плату вертикально деталями вправо в другий паз, правіше зарядки, так само: нижній край між низькими ребрами, передній край у Г-упор, USB-C у праву частину вирізу задньої стінки. Задній край плати ESP до встановлення панелі тримає лише низьке ребро, плата може трохи хитатись. Дроти вивести з верхнього краю плати вперед-ліворуч у ліву зону.
Над платами ще буде свіч MX у кришці: його ніжки закінчуються трохи більше ніж за 1 мм над верхніми краями плат, тому дроти на верхньому краї ESP не повинні стирчати вгору.
Проводка
Шини: GND → J_GND; 3V3 → J_3V3; GPIO3 → J_SDA; GPIO4 → J_SCL; GPIO5 → кнопка (окремий білий дріт).
J_* — чотири окремі ізольовані пайки в лівій зоні, не одна спільна. Не класти їх на антену ESP.
Перевірка: Плата стоїть у напрямних; обидва USB-C видно у вирізі: лівий — зарядки, правий — ESP.
07 / DS3231 на полицю, LSM6DS3 у кишеню кришки
Зняти з DS3231 штирьовий роз’єм, припаяти чотири дроти (VCC, GND, SDA, SCL). Покласти плату на полицю на висоті 17 мм за тумблером батарейкою вниз: спереду її тримає губа, ззаду стінка, зверху кришка.
Припаяти дроти до LSM6DS3 і приклеїти її двостороннім скотчем у кишеню з ребер під кришкою (ліва зона кришки), довгою стороною вздовж глибини корпуса. Коли кришка стане на місце, LSM опиниться над DS3231.
За CAD плата IMU повернута на 90° навколо вертикалі. Це задає положення PCB, але не підтверджує осі кристала: знак SCREEN_UP_SIGN звірити на кроці запуску.
Проводка
RTC VCC → J_3V3; GND → J_GND; SDA → J_SDA; SCL → J_SCL. SQW/32K не підключати.
LSM GND → J_GND; SDA → J_SDA; SCL → J_SCL. Живлення через 3V3 — лише після звірки, що цей контакт є шиною 3,3 В датчика; VIN вільний. CS має бути HIGH для I²C; SA0 задає 0x6A/0x6B, прошивка пробує обидві адреси.
Перевірка: DS3231 лежить плоско й не виступає над верхом стінки; LSM тримається в кишені кришки, її дроти виходять уперед.
08 / OLED згори по похилій стінці


Припаяти чотири дроти до штирів роз’єму OLED; штирі можна лишити повними, 8,5 мм, для них є місце за платою. Роз’єм — угорі.
Опустити плату згори вздовж похилої лицьової стінки: між бокових блоків, під задні губи, до полиці знизу. Спереду плату зупиняє саме скло за 0,2 мм від стінки, передніх упорів немає.
По ширині посадка точна, 0,15 мм на бік: якщо не заходить без зусилля, не тиснути, а перевірити ширину плати й задирки в пазах. Уперед-назад запас 0,4 мм: ущільнити смужкою пінки чи скотчу за платою.
Проводка
OLED VCC → J_3V3 червоний; GND → J_GND чорний; SDA → J_SDA синій; SCL → J_SCL жовтий. Дроти вести назад до лівої зони.
Перевірка: У вікні видно всю активну зону 21,7 × 10,9 мм; верх плати трохи нижче верху стінки, щоб кришка притиснула її, а не зависла на ній.
09 / Спаяти шини та кнопку
У лівій зоні з’єднати чотири шини окремими пайками: J_GND, J_3V3, J_SDA, J_SCL за схемою нижче. Кожен стик у термоусадку; стики рознести по висоті, щоб вони не лягли під кишеню LSM у кришці.
Кнопка MX: один вивід свіча → GPIO5 (білий), і від цього ж виводу резистор 10 кОм → J_GND; другий вивід → J_3V3. Натиск дає HIGH на GPIO5, як раніше давав сенсор; без натиску резистор тримає LOW.
Дроти свіча припаяти зараз із запасом ≈60 мм: сам свіч вставляється в кришку на наступному кроці. Запас усіх дротів скласти вздовж лівої стінки, не над платами правої зони і не на антені ESP.
Проводка
J_GND: ESP GND + OLED GND + RTC GND + LSM GND + резистор кнопки; OUT− зарядки додається лише після допуску.
J_3V3: ESP 3V3 + OLED VCC + RTC VCC + підтверджена шина LSM + другий вивід свіча. Не додавати BAT+, OUT+ або USB 5 В.
J_SDA: GPIO3 + OLED SDA + RTC SDA + LSM SDA. J_SCL: GPIO4 + OLED SCL + RTC SCL + LSM SCL. Підтяжки I²C — до 3,3 В, не до 5 В.
Перевірка: Між GND і 3V3 немає стійкого короткого замикання; всі однойменні кінці прозвонюються; на GPIO5 без натиску — GND через 10 кОм.
10 / Свіч у кришку, кейкап і болти


Вставити свіч із припаяними дротами згори у виріз 14,1 мм кришки до клацання защіпок; під плитою 1,5 мм є обнижка для них. Надіти кейкап.
Опустити кришку на основу: задня губа всередину, права губа вздовж правої стінки, LSM у кишені опиняється над DS3231. Дроти не повинні потрапити між кришкою і верхом стінки.
Закрутити два болти M3 × 8 згори крізь кришку в стійки основи; головки лишаються зверху по боках від кейкапа. Затягнути до притискання, без зусилля: вставка тримає різьбу, пластик — ні.
Проводка
Нових з’єднань немає: дроти свіча вже на шинах. Перед закриттям ще раз прозвонити GND–3V3.
Перевірка: Кришка лежить без щілини по всьому периметру; кейкап клацає і не хитається; болти не прокручуються.
11 / Прошити крізь відкритий виріз і закрити задню панель


Акумулятор і B+/B− зарядки від’єднані. Підключити USB-C кабель даних до роз’єму ESP у правій частині вирізу задньої стінки (панель ще не стоїть) і виконати порядок у розділі «Прошивання».
Перевірити екран, кнопку, RTC і LSM за таблицею першого запуску. Виставити час командою TIME <UTC epoch>. Перевернути робота догори дном на понад 600 мс: екран має повернутись на 180°; якщо навпаки — змінити SCREEN_UP_SIGN після звірки осі.
Після перевірок вставити задню панель: пробка у виріз, овал навпроти USB-C зарядки (роз’єм стоїть вертикально), кишеня пробки накриває роз’єм ESP і фіксує задній край плати. Пробка тримає плати від підйому. Щоб прошити знову, підчепити панель нігтем.
Проводка
USB ESP — єдине живлення тесту. Зарядний USB і LiPo в цей час від’єднані.
Перевірка: Усі тести від USB записані. Панель сидить без клею, кабель зарядки проходить у вертикальний овал 9 × 3,6 мм, роз’єм ESP прихований.
12 / Допуск живлення, розбирання й ремонт
Перед підключенням акумулятора перевір тип стабілізатора конкретної SuperMini, допустиму вхідну напругу й розв’язку USB. Залиш SW_OUT ізольованим, а акумулятор від’єднаним до перевірки схеми живлення.
Лише після допуску (контролер 4,2 В, зарядний струм, захист, стабільні 3,3 В під навантаженням): вимикач OFF, обидва USB від’єднані, приєднати акумулятор до B− і B+ зарядки, OUT− до J_GND, SW_OUT до підтвердженого входу живлення.
Розбирання: підчепити панель, відкрутити два болти, зняти кришку разом зі свічем і LSM. OLED виходить угору вздовж похилої стінки; зарядку, ESP і акумулятор підняти вертикально з напрямних. Нічого не тягнути за дроти; перед пайкою фізично від’єднати акумулятор.
Проводка
За допущеною схемою: чорний акумулятора → B−; червоний → B+; OUT− → J_GND; OUT+ → SW_IN; SW_OUT → лише підтверджений вхід живлення ESP. Сирі 3…4,2 В ніколи не подавати на 3V3.
Перевірка: Без заповнених електричних перевірок не переходити до автономного використання. Після ремонту повторити прозвонку й USB-запуск.
Схема сигналів
Це електричні назви контактів, не фізичний порядок площадок. Порядок звіряють із написами конкретної PCB. Кнопка MX дає рівень HIGH при натиску, тому що поточна прошивка читає GPIO5 так само, як раніше сенсор TTP223; після переходу прошивки на внутрішню підтяжку резистор стане зайвим.
Батарейна гілка: не з’єднувати до допуску
Карта проводів і монтажний запас
Довжини нижче орієнтовні: звір кожен маршрут на власному корпусі перед різанням дроту. Шлях раховано по осях до лівої зони за ребром; додано петлю 20 мм (OLED і кнопка 30 мм) і 10 мм на невідомі точні положення контактів. Спочатку прокласти ниткою на реальному корпусі, потім обрізати.
| Модуль | Контакт | Колір | Куди | Заготовка | Основа оцінки |
|---|---|---|---|---|---|
| ESP | GND | чорний | J_GND | ≈50 мм | 20 мм маршруту + 20 мм петлі + 10 мм на контакти |
| ESP | 3V3 | червоний | J_3V3 | ≈50 мм | 20 мм маршруту + 20 мм петлі + 10 мм на контакти |
| ESP | GPIO3 | синій | J_SDA | ≈50 мм | 20 мм маршруту + 20 мм петлі + 10 мм на контакти |
| ESP | GPIO4 | жовтий | J_SCL | ≈50 мм | 20 мм маршруту + 20 мм петлі + 10 мм на контакти |
| ESP | GPIO5 | білий | кнопка MX | ≈50 мм | 20 мм маршруту + 20 мм петлі + 10 мм на контакти |
| RTC | GND | чорний | J_GND | ≈40 мм | 10 мм маршруту + 20 мм петлі + 10 мм на контакти |
| RTC | VCC | червоний | J_3V3 | ≈40 мм | 10 мм маршруту + 20 мм петлі + 10 мм на контакти |
| RTC | SDA | синій | J_SDA | ≈40 мм | 10 мм маршруту + 20 мм петлі + 10 мм на контакти |
| RTC | SCL | жовтий | J_SCL | ≈40 мм | 10 мм маршруту + 20 мм петлі + 10 мм на контакти |
| LSM6DS3 | GND | чорний | J_GND | ≈40 мм | 7 мм маршруту + 20 мм петлі + 10 мм на контакти |
| LSM6DS3 | 3V3 | червоний | J_3V3 | ≈40 мм | 7 мм маршруту + 20 мм петлі + 10 мм на контакти |
| LSM6DS3 | SDA | синій | J_SDA | ≈40 мм | 7 мм маршруту + 20 мм петлі + 10 мм на контакти |
| LSM6DS3 | SCL | жовтий | J_SCL | ≈40 мм | 7 мм маршруту + 20 мм петлі + 10 мм на контакти |
| OLED | GND | чорний | J_GND | ≈85 мм | 41 мм маршруту + 30 мм петлі + 10 мм на контакти |
| OLED | VCC | червоний | J_3V3 | ≈85 мм | 41 мм маршруту + 30 мм петлі + 10 мм на контакти |
| OLED | SDA | синій | J_SDA | ≈85 мм | 41 мм маршруту + 30 мм петлі + 10 мм на контакти |
| OLED | SCL | жовтий | J_SCL | ≈85 мм | 41 мм маршруту + 30 мм петлі + 10 мм на контакти |
| Кнопка MX | вивід A | білий | GPIO5 ESP | ≈70 мм | 27 мм маршруту + 30 мм петлі + 10 мм; резистор 10 кОм від цього ж виводу до J_GND |
| Кнопка MX | вивід B | червоний | J_3V3 | ≈70 мм | та сама оцінка |
| HW373 | OUT+ | червоний | SW_IN тумблера | ≈50 мм | 16 мм маршруту + 20 мм петлі + 10 мм на контакти; проміряти |
| HW373 | OUT− | чорний | J_GND після допуску | ≈50 мм | оцінка; не з’єднувати під час окремого USB-тесту |
| LSM6DS3 | CS | червоний | 3V3 датчика, якщо немає штатної підтяжки | за місцем | коротка перемичка на PCB; позиції контактів не підтверджені |
| LSM6DS3 | SA0 | — | штатний рівень: 0x6A або 0x6B | новий дріт не потрібен | обидві адреси підтримані; штатний рівень перевірити |
| Вимикач | SW_OUT | помаранчевий | НЕ ПІДКЛЮЧАТИ до допуску | ≈80 мм | оцінка; кінцева точка живлення не визначена |
| LiPo | + / − | червоний / чорний | B+ / B− останніми | штатні виводи | не різати коротше до примірки; по одному ізолювати |
Прошивання
Акумулятор і B+/B− зарядки фізично від’єднані; задня панель знята. Перевірити, що встановлена ESP32-C3 має 4 MB flash. Прошивка зібрана для esp32:esp32:esp32c3:CDCOnBoot=cdc,PartitionScheme=no_ota.
- Завантажити п’ять BIN із розділу файлів в одну папку
firmware-v1. Перевірити SHA256 за маніфестом. - Підключити USB ESP (правий виріз задньої стінки) кабелем даних. В Arduino IDE/CLI визначити порт; не підставляти випадковий порт іншого пристрою.
- За потреби для режиму завантаження утримувати BOOT під час підключення USB, потім відпустити.
- Виконати команду нижче, замінивши PORT фактичним портом. Не змінювати профіль розділів.
arduino-cli upload --port PORT --fqbn esp32:esp32:esp32c3:CDCOnBoot=cdc,PartitionScheme=no_ota --input-dir ./firmware-v1
Для змін завантажити всі файли джерел у папку mobile_pet поруч із mobile_pet.ino. Залежності: ESP32 core 3.3.12; Adafruit SSD1306 2.5.17, GFX 1.12.6, BusIO 1.17.4, RTClib 2.1.4; U8g2 2.36.19. Host-тести перевіряють логіку, а не пайку.
Перший запуск
| Перевірка | Очікуваний результат |
|---|---|
| Екран | Адреса 0x3C, 128×64; персонаж повністю у вікні 23 × 12,4 мм. |
| Кнопка | GPIO5 LOW без натиску, HIGH при натиску; відпускання повертає LOW. Утримання не зависає. |
| RTC | 0x68; після TIME <UTC epoch> відповідь RTC SET OK UTC. Після вимкнення основного живлення час продовжується. |
| LSM6DS3 | 0x6A або 0x6B; WHO_AM_I=0x69. Реакція на струшування; відсутність модуля не блокує кнопку. |
| Орієнтація | У стабільній перевернутій позиції понад 600 мс — 180°; плазом напрям зберігається. Перевірити знак X відносно монтажу. |
| Тривалість | 10 хв роботи від USB, 20 перемикань режимів, без перезапусків і фантомних натисків. |
| Живлення | Окремо: 3,3 В під навантаженням, зарядний струм і напруга завершення; USB-перевірка цього не доводить. |
Встановлення RTC: відкрити послідовний монітор 115200 baud, закінчення рядка LF. Натиснути кнопку нижче й одразу надіслати отриману команду; значення — UTC, не локальні секунди.
TIME <поточний Unix epoch>
Керування
| Дія | Результат |
|---|---|
| Короткий натиск у персонажі | Наступний настрій: Cozy, Bouncy, Sad, Grumpy, Sweetie. |
| Утримання 2 с | Персонаж → годинник → уроки → ігрове меню. |
| Натиск у режимі уроків | Перегляд наступних уроків; повернення до відліку через 8 с. |
| Натиск в ігровому меню | Наступна гра; утримання запускає її. |
| Утримання 4 с у грі | Повернення в меню. Back to pet повертає персонажа. |
| Струшування | Коротка реакція здивування; обраний настрій зберігається. |
Ігри: Breakout, Micro Racer, Defender Mini, Jump, Heli Cave. Адаптація Atomic14; ліцензія вихідного коду. Сповіщення про початок уроку та хвилину мовчання візуальні: зумера у Mini Mochi немає. Після пріоритетного сповіщення гра повертається в меню.
Розклад у поточній прошивці
| Урок | Час |
|---|---|
| 1 | 08:30–09:15 |
| 2 | 09:25–10:10 |
| 3 | 10:25–11:10 |
| 4 | 11:30–12:15 |
| 5 | 12:35–13:20 |
| 6 | 13:30–14:15 |
| 7 | 14:25–15:10 |
Налаштовувані початкові значення коду, не універсальні правила: навчальні дні Пн–Пт; RTC зберігає UTC, відображення EET/EEST за POSIX-правилом; хвилина мовчання щодня 09:00–09:01. Перед використанням змінити schoolDays, timezone, dailySilence та silenceStart у lesson_clock_core.h відповідно до потрібного режиму.
Симуляція
За офіційним переліком Wokwi доступні ESP32-C3, SSD1306 і кнопка, але немає стандартних моделей DS3231 і LSM6DS3. Тому готова симуляція всього пристрою не додається. DS1307 та MPU6050 не є прозорими замінами цих компонентів. Host-тести розкладу, натискань та орієнтації не перевіряють зарядку, батарею чи механіку.
Типові несправності
| Симптом | Що перевірити без батареї |
|---|---|
| Чорний екран | VCC/GND, GPIO3 SDA / GPIO4 SCL, адресу 0x3C, тип SSD1306 128×64; не SPI-модуль. |
| Кнопка не реагує або «натиснута» завжди | Резистор 10 кОм між GPIO5 і GND, другий вивід свіча на 3V3, прозвонити свіч у натиснутому стані; дроти свіча не затиснуті кришкою. |
| NO RTC / SET CLOCK | Адресу 0x68, живлення й резервну батарейку; надіслати TIME з LF, перевірити відповідь. |
| Немає реакції на рух | I²C-режим CS, SA0, живлення LSM, WHO_AM_I=0x69; інший чип не маскувати перейменуванням. |
| Переворот працює навпаки | Монтажну орієнтацію та знак SCREEN_UP_SIGN; не міняти роздільність на 64×128. |
| Перезавантаження від батареї | Зупинити автономний тест; перевірити стабілізатор, падіння напруги і проводку. Не подавати батарею на 3V3. |
| Кришка не лягає | Дроти між кришкою і стінкою, плата або дроти виступають над верхом стінки, LSM6DS3 не в кишені, свіч не до кінця в кришці. Не стискати силою. |
| Екран не заходить | Ширину плати (25,4 мм) і задирки в пазах; задню губу не підрізати, спершу зняти задирки. |
| Зарядка гріється або струм завеликий | Від’єднати USB; перевірити контролер, RPROG, полярність і короткі замикання. Повернутися до стендової перевірки. |
Файли поточної ревізії
Кожен файл доступний окремо, без ZIP. Чотири STL на одну плиту; STEP для перегляду та змін.
Деталі корпусу — STL
Прошивка — BIN
Вихідний код прошивки
- music.h
- sad_wipe.h
- surprised.h
- MicroRacerGame.cpp
- cheerful.h
- sweet_shy.h
- orientation.h
- goofy.h
- DefenderMiniGame.cpp
- JumpGame.cpp
- HeliCaveGame.cpp
- playful.h
- HeliCaveGame.h
- outburst.h
- lesson_clock_core.h
- BreakoutGame.cpp
- JumpGame.h
- angry.h
- lesson_timer.h
- affection.h
- cozy_story.h
- mobile_pet.ino
- ATOMIC14_LICENSE.txt
- relaxed.h
- intense.h
- MicroRacerGame.h
- Game.h
- embarrassed.h
- sad_rain.h
- BreakoutGame.h
- state_titles.h
- defiant.h
- sweet_kiss.h
- mobile_games.h
- grumpy_stomp.h
- motion_sensor.h
- tears.h
- laugh.h
- proud.h
- DefenderMiniGame.h
- grumpy_turn.h
- Game.cpp
- quiet.h
- yawn.h
SHA256 усіх завантажень · Маніфест прошивки · Інструкція Markdown








