DRM Watch 3 - це мій саморобний наручний годинник, в основі якого лежить дисплей Sharp Memory LCD, ESP32-S2 і бажання носити це на руці:)
Це НЕ "Smart годинник"! Цей пристрій по своїй функціональності близький до звичайного електронного годинника, з кількома додатковими можливостями, і їх можна додавати, перепрограмовувати годинник під себе.
Наразі в прошивці є всі можливості, що притаманні типовому годиннику і що дозволяє повноцінно використовувати його на щоденній основі.
В цьому репозиторії можна знайти інфу і інструкції щоб зібрати собі такий годинник.
Це у мене таке хобі:) Я в кінці 2023 поліз вивчати проектування плат, після появи 3д принтера в 2022 поліз вивчати 3д моделювання, а за освітою програміст. От власне це все і зібралось воєдино в цьому проекті) Робив це все з нуля. А яка б класна з цього була дипломна робота)))
Посилання що наведено в цьому тексті є актуальними станом на 2024-04. Якщо якісь товари будуть вже не актуальні, то шукайте за фотками))
- Зроблено в Україні;
- Стабільно працює і підходить для щоденного користування;
- Дисплей завжди показує час;
- Є дуже тускла але дуже приємна нічна підсвітка дисплея;
- Є ліхтарик, білий яскравий та червоний нічний;
- Акумулятора вистачає на понад 20днів, є індикатор заряду;
- Зручні меню, звідки можна отримати доступ до всіх функцій;
- Наявність Wi-Fi, можна зберегти до 8 мереж в пам'яті;
- Можливість синхронізації часу по Wi-Fi;
- Багато мелодій. Їх можна або просто слухати або встановити на будильник.
- Імітація звуку мявчання кошенят;
- Кілька циферблатів, які можна налаштувати;
- Секундомір, працює в фоні;
- Будильники, до 6шт з назвами;
- Вічний календар (або я ще не догортав до кінця);
- Повнекранні клітинні автомати та анімації (Життя, Мураха, Вогонь, Шум)
- Зарядка по USB, в тому числі від TypeC-TypeC;
- Можна оновлювати прошивку по USB, не розбираючи годинник.
- Компоненти для збірки легко дістати;
- Корпус підходить для стандартних 22мм ремінців;
- Якщо під час експериментів з прошивками годинник завис, в корпусі передбачено отвір щоб голкою його перезавантажити.
- Водонепроникність до 0 метрів:) (можна трохи покращити якщо при збірці обробити плату лаком а корпус збирати з клеєм.)
- Годинник можна використовувати як поле для експериментів з ESP32-S2: акумулятор, 3 кнопки, пищалка, дисплей, 3 світлодіоди;
- Екран "Про годинник" містить інформацію про розробника та версію прошивки.
- Годинник не можна мочити. Захист від води тут майже відсутній і це призведе до поломки годинника. Від дрібного дощу або поту йому нічого не буде, а от залити при митті рук - може бути проблемою.
- Годинник слабко захищений від ударів. Дисплей не захищений, тонкі рамки, тонкий корпус, годинник спроектований без великого запасу механічної міцності, так він ще й досить габаритний. Тому вдарити його легко, і це скоріше за все призведе до розбитого дисплея. Протягом моїх місяців експлуатації проблем з пошкодженням годинника не було, але я користувався досить обережно.
- Годинник варто оберігати від впливу статики. Є невеликий шанс вбити годинник якщо швидко змімати з себе светр) Тому або знімайте светр повільно, або зніміть перед цим годинник, або використовуйте светр який не електризується. Особливо ризикований момент - постановка на зарядку, тут може проскочити прямо через контроллер. Раджу перед тим як вставити кабель зарядки, доторкнутись до металевої частини корпусу зарядного пристрою - так ви розрядитесь через корпус, а не через годинник і все буде ок.
https://www.youtube.com/watch?v=3oIwZVaCEvY
https://www.youtube.com/watch?v=Ylm3CU0DTDE
Тут відображаєтья час. Це основний екран годинника, на нього переходят більшість екранів по таймеру бездіяльності. На цьому екрані годинник заходить в сон і спить, просинаючись раз в хвилину щоб намалювати час.
Кнопка вгору (коротке натиснення) - Відкрити секундомір.
Кнопка вгору (довге натиснення) - Відкрити таймер.
Середня кнопка (коротке натиснення) - Увімкнути ліхтарик.
Середня кнопка (довге натиснення) - вимкнути годинник.
Кнопка вниз - відкрити меню програм.
Звідси можна запустити функції які не є налаштуваннями. Будильники, секундоміри, ігри, розваги, тощо.
Кнопками вгору та вниз - обрати пункт меню.
Центральна кнопка - активує обраний пункт меню.
Будильник запускає відтворення заданої мелодії в заданий час дня.
Можна налаштувати кілька будильників. До кожного можна задати час, назву та мелодію. Будильник спрацює якщо годинник заряджений і якщо годинник звісно знає поточний час. Спрацює також якщо в момент спрацювання ви знаходитесь в меню а не на циферблаті, а також спрацює якщо годинник вимкнено (але він при цьому заряджений).
Кнопками вгору та вниз - обрати пункт меню.
Центральна кнопка активує обраний пункт меню.
Коли пункт меню активований, кнопки вниз та вгору міняють значення пункту.
Під час будильника гратиме обрана мелодія і відображатиметься назва будильника та час на який будильник було встановлено. Під час спрацювання будильника його можна закрити (вимкнути на поточний раз), або вікласти на 10 або 5 хвилин (за умови якщо в цей момент не запущено таймер). Після спрацювання будильника він спрацює знову наступного дня.
Показує календар на місяць.
Кнопками вгору та вниз - змінити поточний місяць.
Центральна кнопка - вийти.
Таймер веде відлік заданого часу від моменту запуску. Коли час спливає, запускається звуковий сигнал.
Кнопками вгору та вниз задається час на який встановлюється таймер. Центральна кнопка або закриває програму, або запускає таймер.
Коли лунає звуковий сигнал, його можна закрити, або вікласти на 10 або 5 хвилин.
Режим повноекранної анімації вогню. Красиво. В основі лежить шум Перліна.
Будь-яка з кнопок закриває програму.
Дякую за допомогу з реалізацією Кирилу Лейферу, ось його репозиторій: https://github.com/BOOtak/dct3ngine/blob/master/src/games/perlin_test
Меню зі списком мелодій. Можна переглянути назви та увімкнути мелодію. Їх там багато.
Кнопками вгору та вниз - обрати мелодію.
Центральна кнопка - відкрити і відтворити мелодію.
Коли грає мелодія. Цей екран може бути запущений при спрацюванні будильника або якщо відкрити мелодію зі списку.
Якщо запущений при спрацюванні будильника:
Кнопками вгору та вниз - відкласти будильник. Мелодія зупиниться і буде запущено таймер на 10 або 5 хвилин. Якщо якийсь таймер вже запущений - відкласти будильник не вийде.
Центральна кнопка - Зупинити відтворення мелодії та повернутись до попереднього меню.
Якщо запущений при відкриванні мелодії зі списку:
Кнопка вниз - увімкнути або вимкнути повтор мелодії. Якщо запущено повтор, в статусному рядку відображатиметься відповідна піктограма, а мелодія гратиме доки годинник не розрядиться.
Центральна кнопка - Зупинити відтворення мелодії та повернутись до попереднього меню.
Одночасно відображатиметься тільки один фон, тому щоб був відображався потрібний фон, потрібно залишити активний тільки один з доступних.
Кнопками вгору та вниз - обрати пункт меню. Центральна кнопка міняє обраний пункт меню.
Готових годинників в продажу не існує, тому якщо є бажання отримати такий годинник, можна зібрати самому.
Дисплей потрібен, щоб відображати інформацію користувачу:)
Модель дисплея: Sharp LS027B7DH01A
Він звісно недешений, але мені дуже подобається як він виглядає. Його можна купити готовим, я купував тут:
https://www.aliexpress.us/item/1005005611440829.html
Для підключення цього дисплея. Я купував модулем, але можна пошукати і роз'єм окремо.
Модель: FPC 10pin 0.5mm pitch Я купував тут:
https://www.aliexpress.us/item/1005002288363000.html
https://www.aliexpress.us/item/10000348360254.html
Якщо потрібно щоб пристрій працював автономно, то потрібен акумулятор.
Корпус та плата спроектовано під літій-іонний акумулятор такої форми: 35255mm. Звісно, підійде будь-який і меншого розміру, але матиме меншу ємність.
Модель яка найкраще підходить: lipo 502535. Я купував тут:
https://prom.ua/ua/p1286391849-akkumulyator-kontrollerom-universalnyj.html
Буззер потрібен щоб пищати, грати мелодії.
Модель: Buzzer SMD 7525-3.6V-passive. Я купував тут:
https://www.aliexpress.us/item/1005003620083880.html
https://eu.mouser.com/ProductDetail/CUI-Devices/CMT-7525S-SMT-TR?qs=qCxwlXJ4fnw4ZHFvNib47A%3D%3D
Мосфет використовується для того щоб керувати буззером, щоб на нього надходив не слабкий сигнал з мікроконтроллера,
а потужний з батареї.
Модель: 2N7002LT1G. Можна купити тут:
https://www.aliexpress.us/item/1005003079655220.html
Я розпаював на комплектуючі плати Lolin S2 Mini, ось ссилка де я купував:
https://www.aliexpress.us/item/1005004438665554.html
Якщо немає бажання розпаювати Lolin S2 Mini, можна купити комплектуху окремо:
Чіп: ESP32-S2, QFN56
https://www.tme.eu/en/details/esp32s2/iot-wifi-bluetooth-modules/espressif/esp32-s2/
https://eu.mouser.com/ProductDetail/Espressif-Systems/ESP32-S2?qs=GBLSl2Akirtmlui%2FgtDaSQ%3D%3D
Кварц: SMD 3225 4pin 40MHz:
https://www.aliexpress.us/item/1005004689346275.html
Щоб була можливість заряджати акумулятор. Причому якщо акума не буде - годинник не працюватиме навіть на зарядці.
Тому якщо потрібно обійти модуль зарядки, можна замкнути перемичку біля мікросхеми заряду на платі (вона вона розташована біля самого краю плати) - вона подасть напряму напругу з USB порта замість напруги батареї. Основне не залишити перемичку зі вставленим акумом, щоб не отримати фаєр-шоу)))
Розпаявши такий модуль можна дістати чіп TP4056 , який відоповідає за зарядку акума. Датащит:
https://dlnmh9ip6v2uc.cloudfront.net/datasheets/Prototyping/TP4056.pdf
Якщо нема бажання розпаювати модуль, можна знайти окремо:
Чіп: TP4056
https://www.alibaba.com/product-detail/TC4056A-SOP-8-is-compatible-with_1600806443781.html
Роз'єм: TYPE-C-31-M-12
https://jlcpcb.com/partdetail/Korean_HropartsElec-TYPE_C_31_M12/C165948
Світлодіод: 0805 SMD LED
https://www.aliexpress.us/item/4000936781234.html
Я робив плату під резистори SMD 0603 (переважно), їх я брав з такого набору:
https://www.aliexpress.us/item/1005002364437129.html
Я робив плату під конденсатори SMD 0603 (переважно), їх я брав з такого набору:
https://www.aliexpress.us/item/1005006124283234.html
Використовується мікросхема Analog Devices DS3231, я її купував в складі такого модуля:
https://www.aliexpress.us/item/32822420722.html
Але можна також знайти мікросхеми окремо. Ось ще трохи інфи по ним:
https://octopart.com/ds3231-maxim+integrated-14739425
https://www.analog.com/en/products/ds3231.html
https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf
Ці світлодіоди я діставав виключно з підсвітки старих телефонів, бо їх дисплеїв у мене багато.
Але я знайшов їх типорозмір щоб можна було замовити окремо: 020 SMD Side View LED White 6000K.
Знайшов що тут можна замовити:
https://www.aliexpress.us/item/32419907074.html
Я так і не знайшов як їх можна назвати, тому шукаємо по фото і цьому тексту: 243.5mm Micro SMD Tact Switch Side Button
https://www.aliexpress.us/item/32880903601.html
Такі можна знайти на материнці DJI Mavic 3. Під гвинт М1.2
Щось схоже:
Обирати SMTSO-M1.2-2
https://www.aliexpress.com/i/1005005125674149.html
https://www.swaco.com/SMTSO-M1.2-2ET-PEM-ReelFast
SMTSO-M1.2-2ET
https://eu.mouser.com/ProductDetail/PEM/SMTSO-M1.2-2ET?qs=l4Gc20tDgJKS2GEfMx1Yrw%3D%3D
Цей елемент можна ставити або не ставити за бажанням, залежно від того чи потрібна вам нічна підсвітна екрана.
Електролюмінесцентна панель (EL панель) є складовою частиною системи підсвітки. Це панель, що світиться під впливом високої напруги і частоти. Також їх називають світлоконденсаторами (LEC). Це просто цікаві факти щоб краще розуміти що воно таке.
Фішка цього типу підсвітки в тому, що панель є дуже тонка, світить дуже рівномірно приємним синім кольором, а також її можна нарізати на фрагменти потрібної форми. Але після порізки складною є задача підключення до панелі. Я для підключення використовував одиночні жили дроти а також токопровідний клей.
Мінуси: будучи розташована за дисплеєм який тут використовується, її ледь-ледь видно, але вночі цього достатньо. Також трохи пищить при роботі. А ще для її роботи потрібна досить складна схема драйвера.
Раджу купувати синій колір, тому що EL панель натівно такого кольору, а в інші кольори її тупо фарбують, а фарба поглинає частину світла. Якщо прийшла пофарбована панель, її можна очистити від фарби лезом.
Ось де я купував:
https://www.aliexpress.us/item/1005003971896012.html
Цей елемент можна ставити або не ставити за бажанням, залежно від того чи потрібна вам нічна підсвітна екрана.
Це та мікросхема, яка і формує змінну високу напругу для електролюмінесцентної панелі.
Схему її підключення я не розумію, просто зібрав по схемі і воно запрацювало))
Модель: Microchip HV857MG MSOP8
Датащит:
https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/HV857-High-Voltage-Low-Noise-EL-Lamp-Driver-IC-Data-Sheet-DS20005683.pdf
Я купував тут:
https://www.aliexpress.us/item/1005005512523052.html
Цей елемент можна ставити або не ставити за бажанням, залежно від того чи потрібна вам нічна підсвітка екрана.
Насправді я в цій мелочовці взагалі не шарю, причому навіть деякі елементи замовив не ті що треба було... Але у мене воно запрацювало. Тому я кладу тут ссилки на те що я конкретно замовляв.
Модель: Capacitor SMD 1206 10NF X7R 200V
https://www.aliexpress.us/item/1005004628006766.html
Модель: 1206 320PCS 16Value
https://www.aliexpress.us/item/1005006124283234.html
Модель: Diode ES1D
https://www.aliexpress.us/item/1005005254835443.html
Модель: SMD Inductor 1210 3225 22UH
https://www.aliexpress.us/item/32981310345.html
Цей елемент можна ставити або не ставити за бажанням, залежно від того чи потрібна вам нічна підсвітка екрана.
Цей клей я використовую для того щоб під'єднати дроти до електролюмінесцентної панелі. Детальніше про процес можна почитати в розділі "процес збірки".
Модель: MECHANIC MCN-DJ002 Conductive Adhesive Glue Silver
https://www.aliexpress.us/item/1005002369819447.html
Можна купити на алі, вибір великий. Потрібні стандартні ремінці шириною 22мм.
До прикладу, можна замовити тут:
https://www.aliexpress.us/item/1005005890436737.html
До ремінців як правило йдуть в комплекті і піни для встановлення, але якщо його в комплекті нема, можна замовити окремо:
https://www.aliexpress.us/item/1005006026719458.html
Корпус спроектовано для простоти збірки та простоти друку на FDM 3D принтері. При цьому можна також замовити друк металом або фрезерування.
Малював корпус в Fusion 360, якщо потрібно щось змінювати, відкривайте файли .f3d
. В папці купа версій, шукайте версію з новішою датою в назві.
Корпус спроектовано під ремінці 22мм.
Корпусні частини краще друкувати з чорного платику, а вкладку з кнопками - прозорим пластиком, щоб через нього світили ліхтарики.
В папці багато файлі і моделей, обираючи найновіший дивіться на номер версії або дату в назві файлу.
Для замовлення фрезерування та лазерного маркування вам знадобиться файл .step
та .dwg
.
Для друку металом або звичайним 3д принтером знадобиться .stl
файл. (по одному на кожну частину корпусу)
Корпус спроектований під плату товщиною 0.8mm. Колір плати можна обирати на свій смак, я обирав чорні.
В папці можна знайти плати різних ревізій, коротко про ревізії:
Rev 1: конденсатори розміщені надто далеко від контроллера, конденсаторів мало,
немає елементів що формують EN для контроллера, нема RTC мікросхеми, антена на платі неефективна,
розпіновка в деяких моментах відрізняється від нової ревізії, елементи розміщені не плотно, немає ніякої підсвітки.
Rev 2: вісутні підтяжки RTC SCL та SDA. Елементи розміщені не плотно, підсвітна світлодіодна і неефективна.
Rev 3: Помилок по схемі наче поки немає, я зібрав і воно одразу запрацювало.
Підсвітка електролюмінесцентна з драйвером. Компоненти розміщені плотно. Можна поставити великий акум на 500мАг.
Rev 4: Додано піни щоб підключити до RTC окремий акум щоб не збивався час при розрядці акумулятора,
додано елементи які відповідають за роботу вібро. Поки програмно він ніяк не задіяний, але хай буде.
Щоб замовити собі плату, можна скористатись файлами в папках GERBER. Ці файли достатньо завантажити на сайт не виготовляють плати, я замовляв у **jlcpcb.com**. Там одразу має бути видно як виглядатиме плата.
Якщо потрібно щось поміняти - ставимо KiKad, відкриваєм проект `\Board\_DRM_Watch_v3` і можна міняти.
Експортувати Gerber на Drl можна в редакторі плат KiKad.
Також в схемі в проекті я до кожного елемента пододавав інфу про те де його можна замовити (якщо знаю звісно)
Деякі виробники плат в Китаї пропонують замовлення плат вже готовими і зібраними (PCBA = PCB Assemply). Як правило процес замовлення не надто автоматизований, а робота таких виробників покладається на роботу менеджерів. Тому такі замовлення вони часто приймають у форматі особистої переписки в месенджерах.
Для такого замовлення їм треба наступна інформація:
- Gerberи плати. Це формується з редактора плат KiKad в файли
.gbr
і містить інформацію про саму плату (всі її шари). Один файл.gbr
це один шар плати. Можна взяти в папціBoard/2024-04-18 GERBER REV4
(або новішу). - Список елемнетів які розміщено на платі, тобто файл BOM. Він формується зі схеми в KiKad в файл
.csv
і містить інформацію про номер елемента на платі, виробника, назву компонента, посилання де його можна замовити, та опис кожного елемента. Можна взяти в папціBoard/2024-04-18 GERBER REV4
(або новішу). - Інформацію про розміщення елементів на поверхні плати. В моєму випадку це окремий шар на Gerber плати, а саме
DRM_Watch_V3-F_Fab.gbr
. Там я розписав розміщення елементів, причому я робив це для себе в довільному по суті форматі, але цей файл підійшов для замовлення. - Інформація про тип плати, в моєму випадку це товщина 0.8mm та колір чорний.
Оскільки щоб встановити електролюмінесцентну панель, її потрібно порізати, то з'являється проблема її підключення,
адже контакти панелі відріжуться. Окрім того все підключення слід виконати дуже компактно, оскільки місця під дисплеєм мало.
У тих панелей що я замовляв, на зворотній стороні можна було бачити, що два контакти які живлять панель проходять по вьому її периметру. В них і будем підключатись. Щоб все працювало треба один дріт підключити до зовнішнього електрода, а другий до центрального.
Підключатись будемо одною тонкою жилою багатожильного дроту. Вона звісно дуже тендітна, але в зібраному годиннику це не проблема.
Я робив так:
- беремо гостре (свіже, незатуплене) лезо, і під мікроскопом розрізаємо ламінацію панелі. Діяти треба обережно, щоб не пошкодити
нічого зайвого.
- Далі в цей розріз обережно запихуємо кінець жили дроту, пінцетом або лезом. Бажано щоб всередину помістилось хоча б 4мм дроту.
- Далі набираємо на зубочистку провідний клей, зовсім трішки, і набиваємо провідний клей всередину вслід за дротом. Далі чекаємо поки клей засохне.
- Процес засихання клею можна прискорити прогрівши місце поклейки до температути приблизно 100 градусів на хвилин 20. Я робив це на паяльному столику.
- Після поклейки вигинаємо жили дроту так щоб вони виходили до контактів
EL1
таEL2
на платі, і всю цю поклейку і жили фіксуємо скотчем.
На цьому етапі ми маємо панель з двома надтонкими жилами які виходять з неї. Можна паятись до плати і має працювати.
Якщо не працює - варіанти звісно два, або платою не генерується напруга або щось не так з панеллю.
Плату перевірити легко - звичайним мульмиметром в режимі вимірювання змінної напруги поміряти між EL1
та EL2
. Має бути приблизно 90 вольт змінного струму.
Якщо напруга є - проблема в панелі.
Мені дуже допомогла в пайці така прикольна паяльна станція:
https://www.aliexpress.us/item/1005005609080807.html
На етапі налагодження може допомогти такий QFN56 Breakout Board який підійде для ESP32-S2 (нагадую, там корпус QFN56)
https://www.aliexpress.us/item/1005002805132028.html
Uretan 71
Для покриття плат лаком я використовував таку штуку як Uretan 71. Наносив за допомогою маленького пензля в два шари.
- Проектування плати та схеми: KiCad 7.0.9;
- Формування BOM: bom_csv_grouped_by_value_with_fp.py (розташований в папці
Board
); - Програмування: Arduino IDE 2.2.1 + комплект бібліотек в папці
Firmware\Libs
; - Розширення плати: esp32 by Espressif v2.0.15, ESP32-S2 (В списку плат оберіть "Lolin S2 Mini");
- Конвертування іконок: Програма LCD Assistant. (Виберіть Horizontal).
Прошивка написана в Arduino IDE 2.2.1 з використанням розширення плат esp32 by Espressif v2.0.15, ESP32-S2, компілювати треба під плату Lolin S2 Mini.
Кожен режим в прошивці (поточний екран, mode) - це комплект функцій які займаються відмальовуванням екрану та обробкою кнопок. Кожен режим може робити по суті що завгодно.
Основний спосіб навігації в прошивці це Runnable modeSetup, modeLoop, modeButtonUp, modeButtonCenter, modeButtonDown, modeButtonUpLong, modeButtonCenterLong, modeButtonDownLong
.
Ці змінні в кожен момент часу містять посилання на функції які відповідають поточному режиму (екрану).
Коли потрібно перемкнути режим (поточний екран), функція modeSetup
відновідного режиму має перезаписати ці посилання,
і відновідно loop
викликатиметься вже інший, малюватиметься інша інфа, користувач бачитиме інший екран та взаємодіятиме з ним.
- Скачати VSCode (В у мене 1.89.1) https://code.visualstudio.com/docs/?dv=win64user
- Встановити розширення PlatformIO (у мене Core 6.1.15·Home 3.4.4)
Extensions -> в пошук "PlatformIO IDE" -> Install - Встановити платформу Espressif 32 (у мене Core 6.6.0) PlatformIO Home (Відкривається при запуску) -> бокове меню Platforms -> Emnedded -> в пошук "Espressif 32" -> Install
- Відкрити проект Firmware\DRM Watch 3 PlatformIO Home (Відкривається при запуску) -> Open Project -> знайти і обрати папку "Firmware\DRM Watch 3"
Загалом послідовність така:
- Мати іконку 24х24 пікселі, зберегти її в форматі монохромному BMP форматі;
- Відкрити програму LCDAssistant.exe.
- Load Image - Обираємо монохромний BMP файл. Файл відкривається, бачимо що показується правильно.
- Byte orientation обираємо Horizontal.
- Save Output - обираємо текстовий файл куди збережемо код.
- Код вставляємо в файл Icons.ino (можна звісно інший, але в цьому проекті так прийнято).
- Формуємо для іконки
draw_
функцію за прикладом інших іконок. - Вставляємо нашу
draw_
функцію в відображення меню. - Готово. Компілюємо і має працювати.
Відео як це зробити:
(відео таке трішки простеньке, але суть передає)
https://www.youtube.com/watch?v=P4BCf7cneI8
- Знайти мелодію. Це має бути midi файл у якого один із інструментів має містити мелодію повністю. Я для пошуку мелодій використовую сайт https://onlinesequencer.net/sequences . Там же можна підправити мелодію щоб вона краще підійшла для годинника.
- Конвертувати мелодію в формат мелодій годинника. Для цього я дещо модифікував інструмент від ShivamJoker, який тепер генерує мій формат мелодій. Конвертер знаходиться в папці
Software\MIDI-to-Arduino-main
. Для його роботи встановіть NodeJS собі на комп. - В файлі
MelodyPlayer.ini
додаємо масив даних мелодії в файл а також додаємо мелодію та її ім'я до масивуmelodies
. - Цього має бути достатньо. Компілюємо прошивку і має з'явитись нова мелодія.
Зауважу, що після додавання нової мелодії, вона посуне індекси попередніх мелодій і якщо мелодія була обрана для будильника, вона зміститься.
Я записав відео процесу додавання мелодії:
https://www.youtube.com/watch?v=u_XPCM6kgQM
Формат масиву:
- Додатнє число - частота в Гц який потрібно вітворити
- Від'ємне число - час, скільки треба тримати частоту. Від'ємне число після частоти - тривалість частоти. Якщо від'ємних кілька підряд то це паузи.
- 19 - ідентифікатор кінця мелодії. Його треба ставити обов'язково бо система почне відтворювати сміття із оперативки.
- Temperature measurement is hanging system if after Wi-Fi usage it were not initialized.
- Pin D17 - Stays ON when firmware update
- Pin D31 - Used for flash communication
- Pin D32 - Used for flash communication
https://youtube.com/shorts/PZIMB8fdEP8?si=xofTaj4oOFBRnQQU
-
Дякую за код для "Вогню": https://github.com/BOOtak/dct3ngine/blob/master/src/games/perlin_test
-
Big repository of phone melodies where I found some melodies http://onj3.andrelouis.com/phonetones/unzipped/
-
Vibration implementation https://makeabilitylab.github.io/physcomp/advancedio/vibromotor.html
##Історія проекту
- 2023 рік, я десь наткнувся на відео про sharp memory lcd зрозумів, що дуже хочу собі такий дисплей. Замовив на алі.