https://github.com/serhiile/clock_mini
Yet another clock on MAX7219
https://github.com/serhiile/clock_mini
esp32 esp32-c3 esp8266 max7219-clock wifi-clock
Last synced: about 2 months ago
JSON representation
Yet another clock on MAX7219
- Host: GitHub
- URL: https://github.com/serhiile/clock_mini
- Owner: SerhiiLe
- License: gpl-3.0
- Created: 2024-01-26T18:15:40.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-04T14:24:50.000Z (about 1 year ago)
- Last Synced: 2025-05-04T15:29:29.476Z (about 1 year ago)
- Topics: esp32, esp32-c3, esp8266, max7219-clock, wifi-clock
- Language: C++
- Homepage:
- Size: 5.81 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Очередные часы с будильником, датчиком температуры и давления, на маленькой матрице одноцветных светодиодов
Основано на моём [прошлом проекте](https://github.com/SerhiiLe/clock-ws2812b), но при создании закладывалась совершенно другие цели и другой способ использования. Это небольшие настольные часы-будильник, без резервного питания и если утром электричества не будет, то будильник не разбудит. Естественно, что все "охранные" функции не работают, управление через Telegram стало не нужно. С другой стороны, плата часов с резервным питанием позволяет отображать время сразу после подачи питания и работать без интернет. Так-же добавлены простые функции "погодной станции", хотя точность показателей намного хуже полноценной погодной станции.
## Смысл создания этих часов
Существует бесчисленное множество готовых схем и прошивок для намного более функциональных и интересных часов, достаточно сделать [такой поиск](https://www.google.com/search?q=MAX7219+clock). Например [такие](https://www.thingiverse.com/thing:3924947), которые умеют наверное всё :) Фактически готовое устройство, прошивку для которого не надо компилировать, а обновления прилетают из Интернет. И по сути там вся сложность это сделать корпус. Ещё есть такой [замечательный вариант](https://github.com/IZ76/VZ_Clock) А вообще по поиску можно найти много вариантов, от таких сложных и функциональных, как я привёл, до очень простых, но вполне рабочих.
Для меня это часы "антистресс". С одной стороны это очередная никому не нужная версия часиков, с другой стороны это действительно практичная вещь, а создание как "железа", так и прошивки позволило мне отвлечься от рутины будней. И не дать заплесневеть мозгам. А ещё интересно сравнить, как решил ту или иную проблему я и как её решали другие. Ход мысли у всех очень разный. Не всегда мой вариант лучше.
Вот так выглядят часики во время разработки, без корпуса, с переходником под 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). Датчик движения внутри матрицы, его не видно.
[](https://www.youtube.com/watch?v=haXaXZv-TG4)
## Схема часов
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/Clock_Mini.pdf)
Был использован модуль HW-111 в качестве часов. Это не просто так. Хотя есть "более продвинутые и точные модули", но этот модуль три в одном - часы, EEPROM где хранятся настройки, SRAM где хранятся данные о погоде. Плюс ножки с двух сторон платы и небольшой размер, что позволяет удобно и жестко закрепить модуль на "материнской плате". На мой взгляд это выгодно отличает именно HW-111, а идеальная точность хода не так важна для часов, которые регулярно синхронизируются с сервером. И ещё плюс, этот модуль стоит в три раза дешевле своих "продвинутых" аналогов. Но надо не забыть убрать два резистора и переставить диод, иначе батарейка быстро раздуется и умрёт.
Так выглядит переставленный диод у меня.
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/PXL_20240131_123252839.jpg)
Был использован модуль BMP180 в качестве датчика температуры и давления. Нет проблем поставить более серьёзный датчик, Поддерживаются и BMP280, BME280, AHT20.
### использованы детали
*) [Модуль 4 шт. світлодіодних матриць 8х8 MAX7219 RED](https://ledplus.com.ua/ua/p1063752050-modul-4sht-svetodiodnyh.html)
*) [Барометр датчик тиску GY-68 (BMP180)](https://ledplus.com.ua/ua/p633031301-barometr-datchik-davleniya.html)
*) [Датчик руху мікрохвильовий RCWL-0516](https://ledplus.com.ua/ua/p1259627889-datchik-dvizheniya-mikrovolnovyj.html)
*) [Годинник реального часу ds1307 з пам'яттю AT24C32](https://www.rcscomponents.kiev.ua/product/hodynnyk-realnoho-chasu-ds1307-z-pamiattiu-at24c32_109796.html)
*) [Плата розробки Wemos D1 mini (ESP8266)](https://ledplus.com.ua/ua/p1162788418-plata-razrabotki-wemos.html)
*) [Зуммер TMB12A05](https://www.k206.net/catalog/356/4249/)
*) Транзистор кт315 (любой маломощный NPN)
*) Фоторезистор 10÷20кОм [LDR5528](https://www.k206.net/catalog/268/8882/)
*) Резистор 2кОм - 2 штуки
*) Конденсатор 220 mF и 22 mF (любые без фанатизма и чтобы по размеру подходили)
*) кнопки любые - 2 штуки. [1](https://ledplus.com.ua/ua/p1098946409-taktilnaya-knopka-12h12.html), [2](https://ledplus.com.ua/ua/p1099037998-klavisha-dlya-knopki.html)
*) [Набір дротів 40 штук "мама-мама" 20 см для макетування](https://ledplus.com.ua/ua/p26141443-nabor-provodov-shtuk.html)
*) Разъёмы в качестве крепежной основы [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)
*) [Перехідник micro USB DIP 5pin 2.54 мм](https://ledplus.com.ua/ua/p1162813178-perehodnik-micro-usb.html) для подачи питания, но можно любой другой.
*) макетная плата, как основа для крепления модулей, я обрезал под размер, за основу можно взять [1](https://ledplus.com.ua/ua/p1061712055-maketnaya-plata-5h7sm.html), или [2](https://ledplus.com.ua/ua/p1061715387-maketnaya-plata-7h9.html). Двухсторонние платы физически прочнее и их удобнее паять, но подходят и односторонние и даже намного более дешевые из гетинакса (плотный картон), вопрос прочности и удобства пайки.
Вместо отдельного зумера, транзистора и резистора можно использовать готовый "[Модуль активний зумер](https://ledplus.com.ua/ua/p378653765-modul-aktivnyj-zummer.html)", но надо учитывать, что он включается не высоким, а низким уровнем, надо изменить опцию BUZZER_LOW с 0 на 1 в defines.h
Вместо отдельного фоторезистора и резистора для измерения яркости можно подключить готовый "[Модуль фоторезистора KY-018](https://ledplus.com.ua/ua/p1063843428-modul-fotorezistora-018.html)", он будет более чувствительным, но это это настраивается уже на работающих часах в настройках.
Вместо модуля часов 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.
Так выглядит переставленный резистор у меня.
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/hw-084.jpg)
Вместо 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 с микроконтроллера.
Если у Вас на модуле нет такого dc-dc преобразователя, то у Вас модуль именно 3.3V, как бы не убеждали китайцы в обратном.
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/3V_vs_5V.jpg)
Вместо механических кнопок можно использовать "[Модуль сенсорна кнопка TTP223B](https://ledplus.com.ua/ua/p1121404110-modul-sensornaya-knopka.html)", но не забывать, что этим кнопкам нужно отдельное питание, лучше 3.3V и поменять в defines.h SENSOR_BUTTON с 0 на 1.
Вместо микроконтроллера 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, дополнительные ножки нельзя использовать).
Так выглядят мои модули и переходник для них, для тестирования.
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/all_my_ESP.jpg)
## Программирование
При использовании [PlatformIO](https://platformio.org/) ни каких проблем со сборкой не должно возникнуть, все зависимости должны подтянуться. Процесс установки [PlatformIO](https://platformio.org/) подробно описан на разных ресурсах и не отличается от таковой в другом моём проекте [часиков на адресных светодиодах](https://github.com/SerhiiLe/clock-ws2812b)
В файле include/defines.h надо поправить параметры под свой проект, если он отличается. Но если Вы собираете по схеме как у меня, можно ничего не менять. Если нет модулей HW-111 или BMP180 и не отключить их в defines.h, то часы всё равно будут работать, но при каждом старте жаловаться на их отсутствие. Время и погода будут получаться только из интернета. А без детектора движения просто немного менее удобно.
Если микроконтроллер не esp8266, а esp32 или esp32c2 то обязательно выбрать соответствующий профиль в PlatformIO и проверить назначение ножек в include/defines.h .
[](https://github.com/SerhiiLe/Clock_Mini/blob/main/pictures/env-change.jpg)
## Дополнительно
TODO перенесено в файл [TODO.txt](https://github.com/SerhiiLe/Clock_Mini/blob/main/TODO.txt)
Всякие мысли возникающие в течении работы над проектом переехали сюда: [thoughts.md](https://github.com/SerhiiLe/Clock_Mini/blob/main/thoughts.md)
## Заключение
На мой взгляд часы получились удачными и практичными, я пользуюсь ими постоянно. И не одной копией :)