Плеко / Робототехніка

Mini Mochi

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

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

До складання · Файли без архівів
CAD-модель Mini Mochi, робот-голова, основа v11
Перед складанням

Що потрібно

ESP32-C3 SuperMini
ESP32-C3 SuperMini1 шт. · 18 × 24 мм, USB-C на торці. Зі звіреним маркуванням контактів; не інша ESP32.
OLED SSD1306 0,96″ · 128×64
OLED SSD1306 0,96″ · 128×641 шт. · I²C, 4 контакти. Посадка під плату 25,4 × 26,9 мм зі склом 24,7 × 16,7 мм; інший модуль спершу проміряти.
Свіч Cherry MX
Свіч Cherry MX1 шт. · Механічна кнопка у кришці замість сенсора TTP223. Кейкап — перевірена модель клікера.
Міні-RTC DS3231 із батарейкою
Міні-RTC DS3231 із батарейкою1 шт. · Плата 13 × 13 мм, батарейка знизу. Штирьовий роз’єм знімається, дроти паяються напряму.
LSM6DS3 — акселерометр і гіроскоп
LSM6DS3 — акселерометр і гіроскоп1 шт. · Плата 18 × 13 × 2,5 мм без штирів. Не MPU6050 і не LSM6DS3TR-C з іншим WHO_AM_I.
HW-373 USB-C
HW-373 USB-C1 шт. · Плата 29,5 × 17,3 мм, стоїть на ребрі, USB-C дивиться назад у спільний виріз задньої стінки. Маркування контролера й RPROG перевіряють окремо.
LiPo 1S · 200 мА·год · 3,7 В
LiPo 1S · 200 мА·год · 3,7 В1 шт. · Габарит 20 × 30 × 4 мм, дроти з короткого торця; стоїть на ребрі біля правої стінки. Підключається останньою й лише після допуску живлення.
Двоконтактний вимикач KCD1-11
Двоконтактний вимикач KCD1-111 шт. · Виріз 14 × 9,2 мм у лівій стінці побудований за наданим KCD1-11; інший корпус перевірити.

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

ДетальКількість
Болт M3 × 8, звичайна головка Ø≤5,6 мм2
Термовставка M3 · зовнішній Ø≈4,6 × 6 мм2
Резистор 10 кОм — підтяжка кнопки до GND; потрібен, поки прошивка чекає рівень HIGH на GPIO51
Сигнальний провід з ізоляцією Ø≤0,8 мм, різних кольорів≈ 1 м
Припій, флюс, термоусадка окремо на кожний стиккомплект
Двосторонній спінений скотч 1 мм під LSM6DS3, за потреби під DS3231≈ 20 × 20 мм
Пінка або смужка скотчу 0,3–0,5 мм за платою OLED, якщо вона бовтаєтьсяза місцем

Інструменти — підготувати один раз

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

ПозначенняДетальФайлОрієнтація на століГабарит
1aОснова v111a_base_v11_qty1.stlдном на стіл40 × 46 × 29 мм, ≈ 16 г PLA
1bКришка v51b_lid_v5_qty1.stlверхом на стіл (кишені вгору)40 × 38 × 4,7 мм, ≈ 3,5 г
1cКейкап v11c_keycap_v1_qty1.stlлицем на стіл18 × 18 × 9,5 мм, ≈ 1,7 г; копія перевіреного кейкапа клікера
1dЗадня панель v41d_cover_v4_qty1.stlлицем на стіл13,5 × 24 × 2,5 мм, < 1 г

Корпус 40 × 46 × 31 мм без кейкапа, лице нахилене на 15° назад. Усі чотири деталі друкуються на одній плиті без підтримок; орієнтація вже записана у STL, автоматичний поворот не застосовувати. Кришку тримають два болти M3 × 8 згори у стійки основи (термовставки M3); плати всередині стоять на ребрі в пазах-напрямних і опускаються згори вертикально (ідея Романа); DS3231 лежить на полиці, LSM6DS3 приклеєна в кишеню кришки. Кейкап — перевірена модель клікера, а не нова розробка.

Складання крок за кроком

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

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

Друковані деталі робота × 4
CAD, крок 1: Надрукувати й перевірити чотири деталі
Чотири деталі в орієнтації друку: основа, кришка, задня панель, кейкап.

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

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

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

Проводка

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

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

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

Основа 1a × 1Вставка M3 × 2
CAD, крок 2: Вставка M3 у стійки основи
Дві стійки по боках від екрана, перед усіма платами; стрілки показують, звідки заходить кріплення.

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

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

Проводка

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

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

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

Вимикач KCD1-11 × 1Провід × 2 × ≈80 мм
CAD, крок 3: Тумблер у ліву стінку
CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

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

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

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

Проводка

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

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

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

CAD, крок 4: Акумулятор на ребро біля правої стінки
CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.

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

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

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

Проводка

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

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

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

CAD, крок 5: Зарядка на ребро в перший паз
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Провід × 5 × ≈60 мм
CAD, крок 6: ESP32-C3 на ребро в другий паз
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 × 1LSM6DS3 × 1Скотч 1 мм × ≈ 13 × 18 мм
CAD, крок 7: DS3231 на полицю, LSM6DS3 у кишеню кришки
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Провід × 4 × ≈70 мм
CAD, крок 8: OLED згори по похилій стінці
CAD основи v11. Червоні стрілки позначають напрям встановлення, а не електричний струм.
CAD, крок 8: OLED згори по похилій стінці
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: Спаяти шини та кнопку
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Кейкап 1c × 1Болт M3 × 8 × 2
CAD, крок 10: Свіч у кришку, кейкап і болти
Кришка v5 зі свічем, кейкапом і LSM над основою; стрілки — напрям болтів.
CAD, крок 10: Свіч у кришку, кейкап і болти
Кришка v5 зі свічем, кейкапом і LSM над основою; стрілки — напрям болтів. Кришка знизу: обнижка під защіпки свіча, кишеня з ребер для LSM6DS3 і губи.

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

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

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

Проводка

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

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

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

Прошивка Mini Mochi × 1 комплектПанель 1d × 1
CAD, крок 11: Прошити крізь відкритий виріз і закрити задню панель
Закритий робот ззаду: панель заходить пробкою у виріз, овал навпроти USB-C зарядки.
CAD, крок 11: Прошити крізь відкритий виріз і закрити задню панель
Закритий робот ззаду: панель заходить пробкою у виріз, овал навпроти 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: Допуск живлення, розбирання й ремонт
Рознесений 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; усі контакти підписані

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

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

Батарея B+/B−, захищений вихід OUT+/OUT−, вимикач і незамкнений вхід живлення ESP

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

Довжини нижче орієнтовні: звір кожен маршрут на власному корпусі перед різанням дроту. Шлях раховано по осях до лівої зони за ребром; додано петлю 20 мм (OLED і кнопка 30 мм) і 10 мм на невідомі точні положення контактів. Спочатку прокласти ниткою на реальному корпусі, потім обрізати.

МодульКонтактКолірКудиЗаготовкаОснова оцінки
ESPGNDчорнийJ_GND≈50 мм20 мм маршруту + 20 мм петлі + 10 мм на контакти
ESP3V3червонийJ_3V3≈50 мм20 мм маршруту + 20 мм петлі + 10 мм на контакти
ESPGPIO3синійJ_SDA≈50 мм20 мм маршруту + 20 мм петлі + 10 мм на контакти
ESPGPIO4жовтийJ_SCL≈50 мм20 мм маршруту + 20 мм петлі + 10 мм на контакти
ESPGPIO5білийкнопка MX≈50 мм20 мм маршруту + 20 мм петлі + 10 мм на контакти
RTCGNDчорнийJ_GND≈40 мм10 мм маршруту + 20 мм петлі + 10 мм на контакти
RTCVCCчервонийJ_3V3≈40 мм10 мм маршруту + 20 мм петлі + 10 мм на контакти
RTCSDAсинійJ_SDA≈40 мм10 мм маршруту + 20 мм петлі + 10 мм на контакти
RTCSCLжовтийJ_SCL≈40 мм10 мм маршруту + 20 мм петлі + 10 мм на контакти
LSM6DS3GNDчорнийJ_GND≈40 мм7 мм маршруту + 20 мм петлі + 10 мм на контакти
LSM6DS33V3червонийJ_3V3≈40 мм7 мм маршруту + 20 мм петлі + 10 мм на контакти
LSM6DS3SDAсинійJ_SDA≈40 мм7 мм маршруту + 20 мм петлі + 10 мм на контакти
LSM6DS3SCLжовтийJ_SCL≈40 мм7 мм маршруту + 20 мм петлі + 10 мм на контакти
OLEDGNDчорнийJ_GND≈85 мм41 мм маршруту + 30 мм петлі + 10 мм на контакти
OLEDVCCчервонийJ_3V3≈85 мм41 мм маршруту + 30 мм петлі + 10 мм на контакти
OLEDSDAсинійJ_SDA≈85 мм41 мм маршруту + 30 мм петлі + 10 мм на контакти
OLEDSCLжовтийJ_SCL≈85 мм41 мм маршруту + 30 мм петлі + 10 мм на контакти
Кнопка MXвивід AбілийGPIO5 ESP≈70 мм27 мм маршруту + 30 мм петлі + 10 мм; резистор 10 кОм від цього ж виводу до J_GND
Кнопка MXвивід BчервонийJ_3V3≈70 ммта сама оцінка
HW373OUT+червонийSW_IN тумблера≈50 мм16 мм маршруту + 20 мм петлі + 10 мм на контакти; проміряти
HW373OUT−чорнийJ_GND після допуску≈50 ммоцінка; не з’єднувати під час окремого USB-тесту
LSM6DS3CSчервоний3V3 датчика, якщо немає штатної підтяжкиза місцемкоротка перемичка на PCB; позиції контактів не підтверджені
LSM6DS3SA0—штатний рівень: 0x6A або 0x6Bновий дріт не потрібенобидві адреси підтримані; штатний рівень перевірити
ВимикачSW_OUTпомаранчевийНЕ ПІДКЛЮЧАТИ до допуску≈80 ммоцінка; кінцева точка живлення не визначена
LiPo+ / −червоний / чорнийB+ / B− останнімиштатні виводине різати коротше до примірки; по одному ізолювати

Прошивання

Акумулятор і B+/B− зарядки фізично від’єднані; задня панель знята. Перевірити, що встановлена ESP32-C3 має 4 MB flash. Прошивка зібрана для esp32:esp32:esp32c3:CDCOnBoot=cdc,PartitionScheme=no_ota.

  1. Завантажити п’ять BIN із розділу файлів в одну папку firmware-v1. Перевірити SHA256 за маніфестом.
  2. Підключити USB ESP (правий виріз задньої стінки) кабелем даних. В Arduino IDE/CLI визначити порт; не підставляти випадковий порт іншого пристрою.
  3. За потреби для режиму завантаження утримувати BOOT під час підключення USB, потім відпустити.
  4. Виконати команду нижче, замінивши 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. Утримання не зависає.
RTC0x68; після TIME <UTC epoch> відповідь RTC SET OK UTC. Після вимкнення основного живлення час продовжується.
LSM6DS30x6A або 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 немає. Після пріоритетного сповіщення гра повертається в меню.

Розклад у поточній прошивці

УрокЧас
108:30–09:15
209:25–10:10
310:25–11:10
411:30–12:15
512:35–13:20
613:30–14:15
714: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
CAD — STEP
Прошивка — BIN
Вихідний код прошивки

SHA256 усіх завантажень · Маніфест прошивки · Інструкція Markdown

Джерела