{"id":28154121,"url":"https://github.com/serhiile/clock_mini","last_synced_at":"2026-05-07T01:40:46.193Z","repository":{"id":219332360,"uuid":"748769692","full_name":"SerhiiLe/Clock_Mini","owner":"SerhiiLe","description":"Yet another clock on MAX7219","archived":false,"fork":false,"pushed_at":"2025-05-04T14:24:50.000Z","size":6088,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T15:29:29.476Z","etag":null,"topics":["esp32","esp32-c3","esp8266","max7219-clock","wifi-clock"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SerhiiLe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-26T18:15:40.000Z","updated_at":"2025-05-04T14:24:53.000Z","dependencies_parsed_at":"2024-02-11T22:28:39.126Z","dependency_job_id":"c79f7bb7-2aac-415c-90fb-ccfb6294b8e0","html_url":"https://github.com/SerhiiLe/Clock_Mini","commit_stats":null,"previous_names":["serhiile/clock_mini"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerhiiLe%2FClock_Mini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerhiiLe%2FClock_Mini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerhiiLe%2FClock_Mini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerhiiLe%2FClock_Mini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SerhiiLe","download_url":"https://codeload.github.com/SerhiiLe/Clock_Mini/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254283285,"owners_count":22045141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","esp32-c3","esp8266","max7219-clock","wifi-clock"],"created_at":"2025-05-15T06:12:51.149Z","updated_at":"2026-05-07T01:40:41.157Z","avatar_url":"https://github.com/SerhiiLe.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Очередные часы с будильником, датчиком температуры и давления, на маленькой матрице одноцветных светодиодов\n\nОсновано на моём [прошлом проекте](https://github.com/SerhiiLe/clock-ws2812b), но при создании закладывалась совершенно другие цели и другой способ использования. Это небольшие настольные часы-будильник, без резервного питания и если утром электричества не будет, то будильник не разбудит. Естественно, что все \"охранные\" функции не работают, управление через Telegram стало не нужно. С другой стороны, плата часов с резервным питанием позволяет отображать время сразу после подачи питания и работать без интернет. Так-же добавлены простые функции \"погодной станции\", хотя точность показателей намного хуже полноценной погодной станции.\n\n## Смысл создания этих часов\n\nСуществует бесчисленное множество готовых схем и прошивок для намного более функциональных и интересных часов, достаточно сделать [такой поиск](https://www.google.com/search?q=MAX7219+clock). Например [такие](https://www.thingiverse.com/thing:3924947), которые умеют наверное всё :) Фактически готовое устройство, прошивку для которого не надо компилировать, а обновления прилетают из Интернет. И по сути там вся сложность это сделать корпус. Ещё есть такой [замечательный вариант](https://github.com/IZ76/VZ_Clock) А вообще по поиску можно найти много вариантов, от таких сложных и функциональных, как я привёл, до очень простых, но вполне рабочих.\n\nДля меня это часы \"антистресс\". С одной стороны это очередная никому не нужная версия часиков, с другой стороны это действительно практичная вещь, а создание как \"железа\", так и прошивки позволило мне отвлечься от рутины будней. И не дать заплесневеть мозгам. А ещё интересно сравнить, как решил ту или иную проблему я и как её решали другие. Ход мысли у всех очень разный. Не всегда мой вариант лучше.\n\nВот так выглядят часики во время разработки, без корпуса, с переходником под esp32, esp8266 d1 mini лежит рядом и ждёт своего времени, она в два раза меньше и не выходит за габарит. [Вид 1](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/PXL_20240116_094511233.jpg) [Вид 2](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/PXL_20240116_094520829.jpg). Датчик движения внутри матрицы, его не видно.  \n[![Во время разработки](https://img.youtube.com/vi/haXaXZv-TG4/0.jpg)](https://www.youtube.com/watch?v=haXaXZv-TG4)  \n\u003ciframe src=\"//www.youtube.com/embed/haXaXZv-TG4?rel=0\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\n\n## Схема часов\n\n[![Схема тут.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/Clock_Mini.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/Clock_Mini.pdf)\n\nБыл использован модуль HW-111 в качестве часов. Это не просто так. Хотя есть \"более продвинутые и точные модули\", но этот модуль три в одном - часы, EEPROM где хранятся настройки, SRAM где хранятся данные о погоде. Плюс ножки с двух сторон платы и небольшой размер, что позволяет удобно и жестко закрепить модуль на \"материнской плате\". На мой взгляд это выгодно отличает именно HW-111, а идеальная точность хода не так важна для часов, которые регулярно синхронизируются с сервером. И ещё плюс, этот модуль стоит в три раза дешевле своих \"продвинутых\" аналогов. Но надо не забыть убрать два резистора и переставить диод, иначе батарейка быстро раздуется и умрёт.\n\nТак выглядит переставленный диод у меня.\n[![Так выглядит переставленный диод у меня.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/PXL_20240131_123252839.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/PXL_20240131_123252839.jpg)\n\nБыл использован модуль BMP180 в качестве датчика температуры и давления. Нет проблем поставить более серьёзный датчик, Поддерживаются и BMP280, BME280, AHT20.\n\n### использованы детали\n\n*) [Модуль 4 шт. світлодіодних матриць 8х8 MAX7219 RED](https://ledplus.com.ua/ua/p1063752050-modul-4sht-svetodiodnyh.html)\n*) [Барометр датчик тиску GY-68 (BMP180)](https://ledplus.com.ua/ua/p633031301-barometr-datchik-davleniya.html)\n*) [Датчик руху мікрохвильовий RCWL-0516](https://ledplus.com.ua/ua/p1259627889-datchik-dvizheniya-mikrovolnovyj.html)\n*) [Годинник реального часу ds1307 з пам'яттю AT24C32](https://www.rcscomponents.kiev.ua/product/hodynnyk-realnoho-chasu-ds1307-z-pamiattiu-at24c32_109796.html)\n*) [Плата розробки Wemos D1 mini (ESP8266)](https://ledplus.com.ua/ua/p1162788418-plata-razrabotki-wemos.html)\n*) [Зуммер TMB12A05](https://www.k206.net/catalog/356/4249/)\n*) Транзистор кт315 (любой маломощный NPN)\n*) Фоторезистор 10÷20кОм [LDR5528](https://www.k206.net/catalog/268/8882/)\n*) Резистор 2кОм - 2 штуки\n*) Конденсатор 220 mF и 22 mF (любые без фанатизма и чтобы по размеру подходили)\n*) кнопки любые - 2 штуки. [1](https://ledplus.com.ua/ua/p1098946409-taktilnaya-knopka-12h12.html), [2](https://ledplus.com.ua/ua/p1099037998-klavisha-dlya-knopki.html)\n*) [Набір дротів 40 штук \"мама-мама\" 20 см для макетування](https://ledplus.com.ua/ua/p26141443-nabor-provodov-shtuk.html)\n*) Разъёмы в качестве крепежной основы [1](https://ledplus.com.ua/ua/p1099069214-razem-pbs-1x40.html), [2](https://ledplus.com.ua/ua/p1099060709-razem-pls-1x40.html), [3](https://ledplus.com.ua/ua/p1099062563-razem-pls-1x40r.html)\n*) [Перехідник micro USB DIP 5pin 2.54 мм](https://ledplus.com.ua/ua/p1162813178-perehodnik-micro-usb.html) для подачи питания, но можно любой другой.\n*) макетная плата, как основа для крепления модулей, я обрезал под размер, за основу можно взять [1](https://ledplus.com.ua/ua/p1061712055-maketnaya-plata-5h7sm.html), или [2](https://ledplus.com.ua/ua/p1061715387-maketnaya-plata-7h9.html). Двухсторонние платы физически прочнее и их удобнее паять, но подходят и односторонние и даже намного более дешевые из гетинакса (плотный картон), вопрос прочности и удобства пайки.\n\nВместо отдельного зумера, транзистора и резистора можно использовать готовый \"[Модуль активний зумер](https://ledplus.com.ua/ua/p378653765-modul-aktivnyj-zummer.html)\", но надо учитывать, что он включается не высоким, а низким уровнем, надо изменить опцию BUZZER_LOW с 0 на 1 в defines.h\n\nВместо отдельного фоторезистора и резистора для измерения яркости можно подключить готовый \"[Модуль фоторезистора KY-018](https://ledplus.com.ua/ua/p1063843428-modul-fotorezistora-018.html)\", он будет более чувствительным, но это это настраивается уже на работающих часах в настройках.\n\nВместо модуля часов HW-111 можно использовать \"[Модуль годинника реального часу DS3231SN](https://ledplus.com.ua/ua/p45983303-modul-chasov-realnogo.html)\", но при выключениях питания накопленные данные об изменении давления пропадут. Для этой платы перепаивать диод не надо, но его надо удалить, иначе будет раздувать батарейку. Если использовать \"[Модуль годинника реального часу DS3231M mini](https://ledplus.com.ua/ua/p2106612933-modul-chasov-realnogo.html)\", то ничего перепаивать не надо и батарейка не нужна, но надо изменить в defines.h USE_NVRAM на 0 и настройки будут сохраняться в основной flash микроконтроллера. Если модуль часов вообще не ставить, то дополнительно надо изменить USE_RTC в 0.\n\nТак выглядит переставленный резистор у меня.\n[![Так выглядит переставленный резистор у меня.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/hw-084.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/hw-084.jpg)\n\nВместо BMP180 можно использовать \"[Датчик тиску, температури та вологості BME280 5В](https://ledplus.com.ua/ua/p1946424453-datchik-davleniya-temperatury.html)\", или \"[Датчик тиску температури та вологості BMP280 + AHT20 3,3 В](https://ledplus.com.ua/ua/p1867022742-datchik-davleniya-temperatury.html)\", или что-то аналогичное. Но внимательно! Надо смотреть на рабочее напряжение и если оно 3.3V, то запитывать как и датчик освещённости от 3.3V с микроконтроллера.\n\nЕсли у Вас на модуле нет такого dc-dc преобразователя, то у Вас модуль именно 3.3V, как бы не убеждали китайцы в обратном.\n[![Если у Вас на модуле нет такого dc-dc преобразователя, то у Вас модуль именно 3.3V, как бы не убеждали китайцы в обратном.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/3V_vs_5V.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/3V_vs_5V.jpg)\n\nВместо механических кнопок можно использовать \"[Модуль сенсорна кнопка TTP223B](https://ledplus.com.ua/ua/p1121404110-modul-sensornaya-knopka.html)\", но не забывать, что этим кнопкам нужно отдельное питание, лучше 3.3V и поменять в defines.h SENSOR_BUTTON с 0 на 1.\n\nВместо микроконтроллера Wemos D1 mini (ESP8266) можно поставить \"[Плата розробки ESP32-C3 SuperMini Wi-Fi Bluetooth](https://ledplus.com.ua/ua/p2430729256-plata-razrabotki-esp32.html)\", или \"[Модуль ESP32 WiFi Bluetooth D1 mini Type-C CH9102F](https://ledplus.com.ua/ua/p2140698278-modul-esp32-wifi.html)\", или любой модуль [esp32](https://ledplus.com.ua/ua/p1925183193-modul-esp32-wifi.html) (есть модули на 30 пин и 38, нет смысла брать 38, дополнительные ножки нельзя использовать).\n\nТак выглядят мои модули и переходник для них, для тестирования.\n[![Так выглядят мои модули и переходник для них, для тестирования.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/all_my_ESP.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/all_my_ESP.jpg)\n\n## Программирование\n\nПри использовании [PlatformIO](https://platformio.org/) ни каких проблем со сборкой не должно возникнуть, все зависимости должны подтянуться. Процесс установки [PlatformIO](https://platformio.org/) подробно описан на разных ресурсах и не отличается от таковой в другом моём проекте [часиков на адресных светодиодах](https://github.com/SerhiiLe/clock-ws2812b)\n\nВ файле include/defines.h надо поправить параметры под свой проект, если он отличается. Но если Вы собираете по схеме как у меня, можно ничего не менять. Если нет модулей HW-111 или BMP180 и не отключить их в defines.h, то часы всё равно будут работать, но при каждом старте жаловаться на их отсутствие. Время и погода будут получаться только из интернета. А без детектора движения просто немного менее удобно.\n\nЕсли микроконтроллер не esp8266, а esp32 или esp32c2 то обязательно выбрать соответствующий профиль в PlatformIO и проверить назначение ножек в include/defines.h .\n[![Менять окружение для разных микроконтроллеров тут.](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/env-change.jpg)](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/env-change.jpg)\n\n## Дополнительно\n\nTODO перенесено в файл [TODO.txt](https://github.com/SerhiiLe/Clock_Mini/blob/main/TODO.txt)\n\nВсякие мысли возникающие в течении работы над проектом переехали сюда: [thoughts.md](https://github.com/SerhiiLe/Clock_Mini/blob/main/thoughts.md)\n\n## Заключение\n\nНа мой взгляд часы получились удачными и практичными, я пользуюсь ими постоянно. И не одной копией :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserhiile%2Fclock_mini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserhiile%2Fclock_mini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserhiile%2Fclock_mini/lists"}