[Плеко / Робототехніка](/)[Проєкти](/projects/)[Компоненти](/components/)

# Mini Mochi

Настільний робот-голова з настроями, годинником, таймером уроків та іграми. Чотири друковані деталі, два болти M3, усередині нічого не прикручується.

ESP32-C3 · OLED 128×64 · кнопка Cherry MX · DS3231 · LSM6DS3

[До складання](#steps) · [Файли без архівів](#downloads)![CAD-модель Mini Mochi, робот-голова, основа v11](https://robotics.pleko.org/projects/mini-mochi/assets/hero.png)

Прототип: цифрові перевірки пройдені, фізично не підтверджено.

- Комплект v11 ще не друкувався і не збирався з електронікою. Роман друкував лише основу v1 і кришку v2: посадка екрана й дах паза гайки не вдалися, це виправлено у v2–v11. Посадка OLED, пази-напрямні зарядки, ESP й акумулятора, гнізда вставок, хід болтів, свіч MX і задня панель перевірені лише цифрово, зокрема симуляцією шляху монтажу кожного компонента.
- Припущення в CAD: на платі HW-373 немає деталей ближче 1 мм до нижнього краю, де її тримають низькі ребра на дні. Перевірити на своїй платі до друку.
- Прошивка досі читає GPIO5 як сенсор TTP223 (рівень HIGH = натиск). Кнопка MX підключена через резистор 10 кОм до GND і працює з цією прошивкою; перехід на внутрішню підтяжку ще не зроблений.
- Автономне живлення не допущене: стабілізатор SuperMini, контролер зарядки та розв’язка USB не звірені. Акумулятор залишається від’єднаним.
- Орієнтація осей LSM6DS3, заряджання й час роботи не випробувані.

## Що потрібно

[![ESP32-C3 SuperMini](https://robotics.pleko.org/projects/mini-mochi/assets/esp32_c3_supermini.png)

ESP32-C3 SuperMini1 шт. · 18 × 24 мм, USB-C на торці. Зі звіреним маркуванням контактів; не інша ESP32.](https://robotics.pleko.org/components/workshop/esp32_c3_supermini/)[![OLED SSD1306 0,96″ · 128×64](https://robotics.pleko.org/projects/mini-mochi/assets/oled_ssd1306.png)

OLED SSD1306 0,96″ · 128×641 шт. · I²C, 4 контакти. Посадка під плату 25,4 × 26,9 мм зі склом 24,7 × 16,7 мм; інший модуль спершу проміряти.](https://robotics.pleko.org/components/workshop/oled_ssd1306/)[![Свіч Cherry MX](https://robotics.pleko.org/projects/mini-mochi/assets/cherry_mx.jpg)

Свіч Cherry MX1 шт. · Механічна кнопка у кришці замість сенсора TTP223. Кейкап — перевірена модель клікера.](https://robotics.pleko.org/components/workshop/cherry_mx/)[![Міні-RTC DS3231 із батарейкою](https://robotics.pleko.org/projects/mini-mochi/assets/ds3231.png)

Міні-RTC DS3231 із батарейкою1 шт. · Плата 13 × 13 мм, батарейка знизу. Штирьовий роз’єм знімається, дроти паяються напряму.](https://robotics.pleko.org/components/workshop/ds3231/)[![LSM6DS3 — акселерометр і гіроскоп](https://robotics.pleko.org/projects/mini-mochi/assets/lsm6ds3.png)

LSM6DS3 — акселерометр і гіроскоп1 шт. · Плата 18 × 13 × 2,5 мм без штирів. Не MPU6050 і не LSM6DS3TR-C з іншим WHO_AM_I.](https://robotics.pleko.org/components/workshop/lsm6ds3/)[![HW-373 USB-C](https://robotics.pleko.org/projects/mini-mochi/assets/hw373.jpg)

HW-373 USB-C1 шт. · Плата 29,5 × 17,3 мм, стоїть на ребрі, USB-C дивиться назад у спільний виріз задньої стінки. Маркування контролера й RPROG перевіряють окремо.](https://robotics.pleko.org/components/workshop/hw373/)[![LiPo 1S · 200 мА·год · 3,7 В](https://robotics.pleko.org/projects/mini-mochi/assets/lipo_402030.png)

LiPo 1S · 200 мА·год · 3,7 В1 шт. · Габарит 20 × 30 × 4 мм, дроти з короткого торця; стоїть на ребрі біля правої стінки. Підключається останньою й лише після допуску живлення.](https://robotics.pleko.org/components/workshop/lipo_402030/)[![Двоконтактний вимикач KCD1-11](https://robotics.pleko.org/projects/mini-mochi/assets/rocker_switch_smrs101.png)

Двоконтактний вимикач KCD1-111 шт. · Виріз 14 × 9,2 мм у лівій стінці побудований за наданим KCD1-11; інший корпус перевірити.](https://robotics.pleko.org/components/workshop/rocker_switch_smrs101/)

### Кріплення й витратні матеріали

| Деталь | Кількість | 
| --- | --- |

| Болт 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 · Надрукувати й перевірити чотири деталі](#step-1)
- [02 · Вставка M3 у стійки основи](#step-2)
- [03 · Тумблер у ліву стінку](#step-3)
- [04 · Акумулятор на ребро біля правої стінки](#step-4)
- [05 · Зарядка на ребро в перший паз](#step-5)
- [06 · ESP32-C3 на ребро в другий паз](#step-6)
- [07 · DS3231 на полицю, LSM6DS3 у кишеню кришки](#step-7)
- [08 · OLED згори по похилій стінці](#step-8)
- [09 · Спаяти шини та кнопку](#step-9)
- [10 · Свіч у кришку, кейкап і болти](#step-10)
- [11 · Прошити крізь відкритий виріз і закрити задню панель](#step-11)
- [12 · Допуск живлення, розбирання й ремонт](#step-12)

Рендери створені з поточного CAD (основа v11, кришка v5). OLED, ESP32-C3, тумблер, DS3231 і LSM6DS3 показані каталожними 3D-моделями; зарядка, акумулятор, свіч і кейкап — перевіреними монтажними габаритами. На кожному наступному виді встановлені вузли збережені. Проводка показана окремою схемою й маршрутною таблицею.

### 01 / Надрукувати й перевірити чотири деталі

Друковані деталі робота × 4

[![CAD, крок 1: Надрукувати й перевірити чотири деталі](https://robotics.pleko.org/projects/mini-mochi/assets/01.png)](https://robotics.pleko.org/projects/mini-mochi/assets/01.png)Чотири деталі в орієнтації друку: основа, кришка, задня панель, кейкап.

Завантажити чотири STL однієї ревізії й покласти на одну плиту. Орієнтація вже записана у файлах: основа дном, кришка верхом, кейкап і панель лицем на стіл. Підтримки не потрібні; профіль «0.20mm Quality CC2», PLA.

Після друку оглянути пази-напрямні у правій зоні (тонкі ребра 1 мм, низькі ребра 0,8 мм на дні), широкий виріз у задній стінці та дві стійки по боках від рамки екрана, що ростуть із бокових блоків.

До монтажу електроніки приміряти насухо: екран має ковзати згори вздовж похилої стінки без зусилля; тумблер клацати у вирізі 14 × 9,2 мм; свіч MX клацати у вирізі кришки; панель триматися пробкою у вирізі без клею. Це перший тестовий комплект, його посадки ще не підтверджені.

#### Проводка

Нових з’єднань немає. USB і акумулятор від’єднані.

Перевірка: Немає тріщин, задирок у пазах екрана й напрямних. Болти вільно проходять крізь два отвори кришки.

### 02 / Вставка M3 у стійки основи

Основа 1a × 1Вставка M3 × 2

[![CAD, крок 2: Вставка M3 у стійки основи](https://robotics.pleko.org/projects/mini-mochi/assets/02.png)](https://robotics.pleko.org/projects/mini-mochi/assets/02.png)Дві стійки по боках від екрана, перед усіма платами; стрілки показують, звідки заходить кріплення.

Вплавити по одній вставці M3 згори в отвір Ø4 × 6,5 мм кожної стійки біля рамки екрана, врівень із верхом стінки. Не проштовхувати глибше, ніж до упору отвору.

Робити це до тумблера й електроніки, поки основа порожня й її можна покласти рівно.

#### Проводка

Нових з’єднань немає. USB і акумулятор від’єднані.

Перевірка: Болт, вкручений згори пробно без кришки, заходить у вставку.

### 03 / Тумблер у ліву стінку

[Вимикач KCD1-11 × 1](https://robotics.pleko.org/components/workshop/rocker_switch_smrs101/)Провід × 2 × ≈80 мм

[![CAD, крок 3: Тумблер у ліву стінку](https://robotics.pleko.org/projects/mini-mochi/assets/03.png)](https://robotics.pleko.org/projects/mini-mochi/assets/03.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

Припаяти до двох контактів тумблера окремі дроти: червоний SW_IN і помаранчевий SW_OUT, кожен стик у термоусадку. Полярності механічний контакт не має; прозвонити OFF/ON без живлення.

Вставити тумблер ззовні у виріз лівої стінки до клацання власних защіпок; виводи дивляться всередину, корпус заходить на 15 мм. Дроти вивести вгору, в ліву зону за ребром.

Якщо тумблер сидить вільно, не клеїти: зменшити виріз на 0,2 мм у джерелі й передрукувати основу.

#### Проводка

SW_IN пізніше з’єднується з OUT+ зарядки; SW_OUT залишається ізольованим до допуску автономного живлення.

Перевірка: Тумблер клацає, не випадає і не заважає полиці DS3231 за ним.

### 04 / Акумулятор на ребро біля правої стінки

[LiPo 200 мА·год × 1](https://robotics.pleko.org/components/workshop/lipo_402030/)

[![CAD, крок 4: Акумулятор на ребро біля правої стінки](https://robotics.pleko.org/projects/mini-mochi/assets/04.png)](https://robotics.pleko.org/projects/mini-mochi/assets/04.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

Припаяти дроти і опустити цілий, не здутий акумулятор згори вертикально в паз 4,3 мм між тонким боковим блоком рамки екрана і правою стінкою, дротами вперед. Спереду його зупиняє низький упор, ззаду задня стінка.

Дроти йдуть угору перед акумулятором і над ним до зарядки. Кінці ізолювати окремо: до зарядки вони під’єднуються лише на останньому кроці після допуску.

Пакет має стояти в пазі без люфту, але входити без зусилля. Не стискати й не загинати пакет.

#### Проводка

Акумулятор механічно встановлений, електрично від’єднаний. Червоний і чорний виводи не оголювати одночасно.

Перевірка: Акумулятор стоїть рівно, не виступає над верхом стінки; дроти не затиснуті ні блоком рамки, ні майбутньою зарядкою.

### 05 / Зарядка на ребро в перший паз

[HW373 × 1](https://robotics.pleko.org/components/workshop/hw373/)

[![CAD, крок 5: Зарядка на ребро в перший паз](https://robotics.pleko.org/projects/mini-mochi/assets/05.png)](https://robotics.pleko.org/projects/mini-mochi/assets/05.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

До монтажу звірити контролер і 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 на ребро в другий паз

[ESP32-C3 × 1](https://robotics.pleko.org/components/workshop/esp32_c3_supermini/)Провід × 5 × ≈60 мм

[![CAD, крок 6: ESP32-C3 на ребро в другий паз](https://robotics.pleko.org/projects/mini-mochi/assets/06.png)](https://robotics.pleko.org/projects/mini-mochi/assets/06.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

Припаяти до 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 у кишеню кришки

[RTC DS3231 × 1](https://robotics.pleko.org/components/workshop/ds3231/)[LSM6DS3 × 1](https://robotics.pleko.org/components/workshop/lsm6ds3/)Скотч 1 мм × ≈ 13 × 18 мм

[![CAD, крок 7: DS3231 на полицю, LSM6DS3 у кишеню кришки](https://robotics.pleko.org/projects/mini-mochi/assets/07.png)](https://robotics.pleko.org/projects/mini-mochi/assets/07.png)CAD основи v11: 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 SSD1306 × 1](https://robotics.pleko.org/components/workshop/oled_ssd1306/)Провід × 4 × ≈70 мм

[![CAD, крок 8: OLED згори по похилій стінці](https://robotics.pleko.org/projects/mini-mochi/assets/08.png)](https://robotics.pleko.org/projects/mini-mochi/assets/08.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

[![CAD, крок 8: OLED згори по похилій стінці](https://robotics.pleko.org/projects/mini-mochi/assets/08b.png)](https://robotics.pleko.org/projects/mini-mochi/assets/08b.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм. Вид згори: екран на похилій стінці, роз’єм угорі; праворуч акумулятор, зарядка і ESP стоять на ребрі.

Припаяти чотири дроти до штирів роз’єму 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 / Спаяти шини та кнопку

Сигнальні дроти × за таблицеюРезистор 10 кОм × 1Термоусадка × на кожний стик

[![CAD, крок 9: Спаяти шини та кнопку](https://robotics.pleko.org/projects/mini-mochi/assets/09.png)](https://robotics.pleko.org/projects/mini-mochi/assets/09.png)CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

У лівій зоні з’єднати чотири шини окремими пайками: 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 / Свіч у кришку, кейкап і болти

Кришка 1b × 1[Свіч Cherry MX × 1](https://robotics.pleko.org/components/workshop/cherry_mx/)Кейкап 1c × 1Болт M3 × 8 × 2

[![CAD, крок 10: Свіч у кришку, кейкап і болти](https://robotics.pleko.org/projects/mini-mochi/assets/10.png)](https://robotics.pleko.org/projects/mini-mochi/assets/10.png)Кришка v5 зі свічем, кейкапом і LSM над основою; стрілки — напрям болтів.

[![CAD, крок 10: Свіч у кришку, кейкап і болти](https://robotics.pleko.org/projects/mini-mochi/assets/10b.png)](https://robotics.pleko.org/projects/mini-mochi/assets/10b.png)Кришка v5 зі свічем, кейкапом і LSM над основою; стрілки — напрям болтів. Кришка знизу: обнижка під защіпки свіча, кишеня з ребер для LSM6DS3 і губи.

Вставити свіч із припаяними дротами згори у виріз 14,1 мм кришки до клацання защіпок; під плитою 1,5 мм є обнижка для них. Надіти кейкап.

Опустити кришку на основу: задня губа всередину, права губа вздовж правої стінки, LSM у кишені опиняється над DS3231. Дроти не повинні потрапити між кришкою і верхом стінки.

Закрутити два болти M3 × 8 згори крізь кришку в стійки основи; головки лишаються зверху по боках від кейкапа. Затягнути до притискання, без зусилля: вставка тримає різьбу, пластик — ні.

#### Проводка

Нових з’єднань немає: дроти свіча вже на шинах. Перед закриттям ще раз прозвонити GND–3V3.

Перевірка: Кришка лежить без щілини по всьому периметру; кейкап клацає і не хитається; болти не прокручуються.

### 11 / Прошити крізь відкритий виріз і закрити задню панель

Прошивка Mini Mochi × 1 комплектПанель 1d × 1

[![CAD, крок 11: Прошити крізь відкритий виріз і закрити задню панель](https://robotics.pleko.org/projects/mini-mochi/assets/11.png)](https://robotics.pleko.org/projects/mini-mochi/assets/11.png)Закритий робот ззаду: панель заходить пробкою у виріз, овал навпроти USB-C зарядки.

[![CAD, крок 11: Прошити крізь відкритий виріз і закрити задню панель](https://robotics.pleko.org/projects/mini-mochi/assets/11b.png)](https://robotics.pleko.org/projects/mini-mochi/assets/11b.png)Закритий робот ззаду: панель заходить пробкою у виріз, овал навпроти USB-C зарядки. Закритий робот спереду з панеллю на місці.

Акумулятор і 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 / Допуск живлення, розбирання й ремонт

Mini Mochi × 1 пристрій

[![CAD, крок 12: Допуск живлення, розбирання й ремонт](https://robotics.pleko.org/projects/mini-mochi/assets/12.png)](https://robotics.pleko.org/projects/mini-mochi/assets/12.png)Рознесений CAD-вид. Зсуви деталей умовні для огляду; робочі напрямки розбирання наведені в тексті.

Батарейна гілка умовна: тип стабілізатора конкретної 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-запуск.

## Схема сигналів

[![Схема I²C на GPIO3/4 і кнопка MX на GPIO5 з підтяжкою 10 кОм до GND; усі контакти підписані](https://robotics.pleko.org/projects/mini-mochi/assets/wiring.svg)](https://robotics.pleko.org/projects/mini-mochi/assets/wiring.svg)

Це електричні назви контактів, не фізичний порядок площадок. Порядок звіряють із написами конкретної PCB. Кнопка MX дає рівень HIGH при натиску, тому що поточна прошивка читає GPIO5 так само, як раніше сенсор TTP223; після переходу прошивки на внутрішню підтяжку резистор стане зайвим.

### Батарейна гілка: не з’єднувати до допуску

[![Батарея B+/B−, захищений вихід OUT+/OUT−, вимикач і незамкнений вхід живлення ESP](https://robotics.pleko.org/projects/mini-mochi/assets/power.svg)](https://robotics.pleko.org/projects/mini-mochi/assets/power.svg)

### Карта проводів і монтажний запас

Довжини нижче — оцінка за координатами модулів у CAD, не перевірений розкрій. Шлях раховано по осях до лівої зони за ребром; додано петлю 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 фактичним портом. Не змінювати профіль розділів.

```text
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 зараз

```text
TIME <поточний Unix epoch>
```

## Керування

| Дія | Результат | 
| --- | --- |

| Короткий натиск у персонажі | Наступний настрій: Cozy, Bouncy, Sad, Grumpy, Sweetie. | 
| Утримання 2 с | Персонаж → годинник → уроки → ігрове меню. | 
| Натиск у режимі уроків | Перегляд наступних уроків; повернення до відліку через 8 с. | 
| Натиск в ігровому меню | Наступна гра; утримання запускає її. | 
| Утримання 4 с у грі | Повернення в меню. Back to pet повертає персонажа. | 
| Струшування | Коротка реакція здивування; обраний настрій зберігається. | 

Ігри: Breakout, Micro Racer, Defender Mini, Jump, Heli Cave. Адаптація [Atomic14](https://github.com/atomic14/esp32-c3-oled-single-button-games); [ліцензія вихідного коду](https://robotics.pleko.org/projects/mini-mochi/files/source/ATOMIC14_LICENSE.txt). Сповіщення про початок уроку та хвилину мовчання візуальні: зумера у 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](https://docs.wokwi.com/getting-started/supported-hardware) доступні 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 не означає фізично підтверджену посадку.

Деталі корпусу — STL

- [1a_base_v11_qty1.stl](https://robotics.pleko.org/projects/mini-mochi/files/1a_base_v11_qty1.stl)
- [1b_lid_v5_qty1.stl](https://robotics.pleko.org/projects/mini-mochi/files/1b_lid_v5_qty1.stl)
- [1c_keycap_v1_qty1.stl](https://robotics.pleko.org/projects/mini-mochi/files/1c_keycap_v1_qty1.stl)
- [1d_cover_v4_qty1.stl](https://robotics.pleko.org/projects/mini-mochi/files/1d_cover_v4_qty1.stl)

CAD — STEP

- [1a_base_v11.step](https://robotics.pleko.org/projects/mini-mochi/files/STEP/1a_base_v11.step)
- [1b_lid_v5.step](https://robotics.pleko.org/projects/mini-mochi/files/STEP/1b_lid_v5.step)
- [1d_cover_v4.step](https://robotics.pleko.org/projects/mini-mochi/files/STEP/1d_cover_v4.step)

Прошивка — BIN

- [boot_app0.bin](https://robotics.pleko.org/projects/mini-mochi/files/firmware/boot_app0.bin)
- [mobile_pet.ino.bootloader.bin](https://robotics.pleko.org/projects/mini-mochi/files/firmware/mobile_pet.ino.bootloader.bin)
- [mobile_pet.ino.bin](https://robotics.pleko.org/projects/mini-mochi/files/firmware/mobile_pet.ino.bin)
- [mobile_pet.ino.merged.bin](https://robotics.pleko.org/projects/mini-mochi/files/firmware/mobile_pet.ino.merged.bin)
- [mobile_pet.ino.partitions.bin](https://robotics.pleko.org/projects/mini-mochi/files/firmware/mobile_pet.ino.partitions.bin)

Вихідний код прошивки

- [music.h](https://robotics.pleko.org/projects/mini-mochi/files/source/music.h)
- [sad_wipe.h](https://robotics.pleko.org/projects/mini-mochi/files/source/sad_wipe.h)
- [surprised.h](https://robotics.pleko.org/projects/mini-mochi/files/source/surprised.h)
- [MicroRacerGame.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/MicroRacerGame.cpp)
- [cheerful.h](https://robotics.pleko.org/projects/mini-mochi/files/source/cheerful.h)
- [sweet_shy.h](https://robotics.pleko.org/projects/mini-mochi/files/source/sweet_shy.h)
- [orientation.h](https://robotics.pleko.org/projects/mini-mochi/files/source/orientation.h)
- [goofy.h](https://robotics.pleko.org/projects/mini-mochi/files/source/goofy.h)
- [DefenderMiniGame.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/DefenderMiniGame.cpp)
- [JumpGame.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/JumpGame.cpp)
- [HeliCaveGame.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/HeliCaveGame.cpp)
- [playful.h](https://robotics.pleko.org/projects/mini-mochi/files/source/playful.h)
- [HeliCaveGame.h](https://robotics.pleko.org/projects/mini-mochi/files/source/HeliCaveGame.h)
- [outburst.h](https://robotics.pleko.org/projects/mini-mochi/files/source/outburst.h)
- [lesson_clock_core.h](https://robotics.pleko.org/projects/mini-mochi/files/source/lesson_clock_core.h)
- [BreakoutGame.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/BreakoutGame.cpp)
- [JumpGame.h](https://robotics.pleko.org/projects/mini-mochi/files/source/JumpGame.h)
- [angry.h](https://robotics.pleko.org/projects/mini-mochi/files/source/angry.h)
- [lesson_timer.h](https://robotics.pleko.org/projects/mini-mochi/files/source/lesson_timer.h)
- [affection.h](https://robotics.pleko.org/projects/mini-mochi/files/source/affection.h)
- [cozy_story.h](https://robotics.pleko.org/projects/mini-mochi/files/source/cozy_story.h)
- [mobile_pet.ino](https://robotics.pleko.org/projects/mini-mochi/files/source/mobile_pet.ino)
- [ATOMIC14_LICENSE.txt](https://robotics.pleko.org/projects/mini-mochi/files/source/ATOMIC14_LICENSE.txt)
- [relaxed.h](https://robotics.pleko.org/projects/mini-mochi/files/source/relaxed.h)
- [intense.h](https://robotics.pleko.org/projects/mini-mochi/files/source/intense.h)
- [MicroRacerGame.h](https://robotics.pleko.org/projects/mini-mochi/files/source/MicroRacerGame.h)
- [Game.h](https://robotics.pleko.org/projects/mini-mochi/files/source/Game.h)
- [embarrassed.h](https://robotics.pleko.org/projects/mini-mochi/files/source/embarrassed.h)
- [sad_rain.h](https://robotics.pleko.org/projects/mini-mochi/files/source/sad_rain.h)
- [BreakoutGame.h](https://robotics.pleko.org/projects/mini-mochi/files/source/BreakoutGame.h)
- [state_titles.h](https://robotics.pleko.org/projects/mini-mochi/files/source/state_titles.h)
- [defiant.h](https://robotics.pleko.org/projects/mini-mochi/files/source/defiant.h)
- [sweet_kiss.h](https://robotics.pleko.org/projects/mini-mochi/files/source/sweet_kiss.h)
- [mobile_games.h](https://robotics.pleko.org/projects/mini-mochi/files/source/mobile_games.h)
- [grumpy_stomp.h](https://robotics.pleko.org/projects/mini-mochi/files/source/grumpy_stomp.h)
- [motion_sensor.h](https://robotics.pleko.org/projects/mini-mochi/files/source/motion_sensor.h)
- [tears.h](https://robotics.pleko.org/projects/mini-mochi/files/source/tears.h)
- [laugh.h](https://robotics.pleko.org/projects/mini-mochi/files/source/laugh.h)
- [proud.h](https://robotics.pleko.org/projects/mini-mochi/files/source/proud.h)
- [DefenderMiniGame.h](https://robotics.pleko.org/projects/mini-mochi/files/source/DefenderMiniGame.h)
- [grumpy_turn.h](https://robotics.pleko.org/projects/mini-mochi/files/source/grumpy_turn.h)
- [Game.cpp](https://robotics.pleko.org/projects/mini-mochi/files/source/Game.cpp)
- [quiet.h](https://robotics.pleko.org/projects/mini-mochi/files/source/quiet.h)
- [yawn.h](https://robotics.pleko.org/projects/mini-mochi/files/source/yawn.h)

[SHA256 усіх завантажень](https://robotics.pleko.org/projects/mini-mochi/files/download-manifest.json) · [Маніфест прошивки](https://robotics.pleko.org/projects/mini-mochi/files/firmware/manifest.json) · [Інструкція Markdown](https://robotics.pleko.org/projects/mini-mochi/files/assembly.md)

## Джерела та межі перевірки

- [TP4056H, виробник, Rev 1.0, таблиця RPROG на с. 7](https://www.toppwr.com/uploadfile/file/20260320/69bcb732c9d26.pdf).
- [TP4056, виробник, формула струму PROG](https://www.toppwr.com/uploadfile/file/20240130/65b892bb04a3c.pdf).
- [LSM6DS3, документація ST: режим CS і контакти кристала](https://community.st.com/ysqtg83639/attachments/ysqtg83639/stm32-mcu-products-forum/89677/2/%5BATT%5D11987.pdf).

Факти: поточний CAD (основа v11, кришка v5, панель v4), збірка прошивки, цифрові перевірки перетинів і шляху вставлення екрана, хеші файлів. Не підтверджено фізично: посадки, паяні джгути, орієнтація осей IMU, автономне живлення, заряджання й час роботи. Каталожні фото — ідентифікаційні орієнтири, а не фотографії готового Mini Mochi.

Mini Mochi · робот-голова, основа v11 · інструкція 10 листопада 2026
