Skip to content

SerhiiLe/Clock_Mini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yet another clock with an alarm clock, temperature and pressure sensor, on a small matrix of single-color LEDs

Three languages ​​are supported: English, Russian, and Ukrainian. The default language is selected in the settings file during compilation. However, you can then switch between them in the web settings.

To build, copy the include/defines.h-sample-en file to include/defines.h and modify the settings to suit your setup. If you're following my setup exactly, you don't need to change anything.

After turning it on for the first time, connect the watch to WiFi. To do this, find the "ClockAP" access point on your phone (if you haven't changed it in defines.h), find your access point, and connect. It's simple. Next, add the web files. There are three ways to do this:

  • via PlatformIO, under "Upload Filesystem Image"
  • via the web update page, which opens if the web server files are missing
  • via an FTP client. If the web server files are missing, it will automatically start using the admin login and no password. Copy the files from the data folder to the FTP root.

The system looks complicated, but is designed to be as simple and easy to use as possible.

As a reminder, all browsers now have translations. This page is in Russian.

Очередные часы с будильником, датчиком температуры и давления, на маленькой матрице одноцветных светодиодов

Основано на моём прошлом проекте, но при создании закладывалась совершенно другие цели и другой способ использования. Это небольшие настольные часы-будильник, без резервного питания и если утром электричества не будет, то будильник не разбудит. Естественно, что все "охранные" функции не работают, управление через Telegram стало не нужно. С другой стороны, плата часов с резервным питанием позволяет отображать время сразу после подачи питания и работать без интернет. Так-же добавлены простые функции "погодной станции", хотя точность показателей намного хуже полноценной погодной станции.

Смысл создания этих часов

Существует бесчисленное множество готовых схем и прошивок для намного более функциональных и интересных часов, достаточно сделать такой поиск. Например такие, которые умеют наверное всё :) Фактически готовое устройство, прошивку для которого не надо компилировать, а обновления прилетают из Интернет. И по сути там вся сложность это сделать корпус. Ещё есть такой замечательный вариант А вообще по поиску можно найти много вариантов, от таких сложных и функциональных, как я привёл, до очень простых, но вполне рабочих.

Для меня это часы "антистресс". С одной стороны это очередная никому не нужная версия часиков, с другой стороны это действительно практичная вещь, а создание как "железа", так и прошивки позволило мне отвлечься от рутины будней. И не дать заплесневеть мозгам. А ещё интересно сравнить, как решил ту или иную проблему я и как её решали другие. Ход мысли у всех очень разный. Не всегда мой вариант лучше.

Вот так выглядят часики во время разработки, без корпуса, с переходником под esp32, esp8266 d1 mini лежит рядом и ждёт своего времени, она в два раза меньше и не выходит за габарит. Вид 1 Вид 2. Датчик движения внутри матрицы, его не видно.
Во время разработки

Схема часов

Схема тут.

Был использован модуль HW-111 в качестве часов. Это не просто так. Хотя есть "более продвинутые и точные модули", но этот модуль три в одном - часы, EEPROM где хранятся настройки, SRAM где хранятся данные о погоде. Плюс ножки с двух сторон платы и небольшой размер, что позволяет удобно и жестко закрепить модуль на "материнской плате". На мой взгляд это выгодно отличает именно HW-111, а идеальная точность хода не так важна для часов, которые регулярно синхронизируются с сервером. И ещё плюс, этот модуль стоит в три раза дешевле своих "продвинутых" аналогов. Но надо не забыть убрать два резистора и переставить диод, иначе батарейка быстро раздуется и умрёт.

Так выглядит переставленный диод у меня. Так выглядит переставленный диод у меня.

Был использован модуль BMP180 в качестве датчика температуры и давления. Нет проблем поставить более серьёзный датчик, Поддерживаются и BMP280, BME280, AHT20.

использованы детали

*) Модуль 4 шт. світлодіодних матриць 8х8 MAX7219 RED *) Барометр датчик тиску GY-68 (BMP180) *) Датчик руху мікрохвильовий RCWL-0516 *) Годинник реального часу ds1307 з пам'яттю AT24C32 *) Плата розробки Wemos D1 mini (ESP8266) *) Зуммер TMB12A05 *) Транзистор кт315 (любой маломощный NPN) *) Фоторезистор 10÷20кОм LDR5528 *) Резистор 2кОм - 2 штуки *) Конденсатор 220 mF и 22 mF (любые без фанатизма и чтобы по размеру подходили) *) кнопки любые - 2 штуки. 1, 2 *) Набір дротів 40 штук "мама-мама" 20 см для макетування *) Разъёмы в качестве крепежной основы 1, 2, 3 *) Перехідник micro USB DIP 5pin 2.54 мм для подачи питания, но можно любой другой. *) макетная плата, как основа для крепления модулей, я обрезал под размер, за основу можно взять 1, или 2. Двухсторонние платы физически прочнее и их удобнее паять, но подходят и односторонние и даже намного более дешевые из гетинакса (плотный картон), вопрос прочности и удобства пайки.

Вместо отдельного зумера, транзистора и резистора можно использовать готовый "Модуль активний зумер", но надо учитывать, что он включается не высоким, а низким уровнем, надо изменить опцию BUZZER_LOW с 0 на 1 в defines.h

Вместо отдельного фоторезистора и резистора для измерения яркости можно подключить готовый "Модуль фоторезистора KY-018", он будет более чувствительным, но это это настраивается уже на работающих часах в настройках.

Вместо модуля часов HW-111 можно использовать "Модуль годинника реального часу DS3231SN", но при выключениях питания накопленные данные об изменении давления пропадут. Для этой платы перепаивать диод не надо, но его надо удалить, иначе будет раздувать батарейку. Если использовать "Модуль годинника реального часу DS3231M mini", то ничего перепаивать не надо и батарейка не нужна, но надо изменить в defines.h USE_NVRAM на 0 и настройки будут сохраняться в основной flash микроконтроллера. Если модуль часов вообще не ставить, то дополнительно надо изменить USE_RTC в 0.

Так выглядит переставленный резистор у меня. Так выглядит переставленный резистор у меня.

Вместо BMP180 можно использовать "Датчик тиску, температури та вологості BME280 5В", или "Датчик тиску температури та вологості BMP280 + AHT20 3,3 В", или что-то аналогичное. Но внимательно! Надо смотреть на рабочее напряжение и если оно 3.3V, то запитывать как и датчик освещённости от 3.3V с микроконтроллера.

Если у Вас на модуле нет такого dc-dc преобразователя, то у Вас модуль именно 3.3V, как бы не убеждали китайцы в обратном. Если у Вас на модуле нет такого dc-dc преобразователя, то у Вас модуль именно 3.3V, как бы не убеждали китайцы в обратном.

Вместо механических кнопок можно использовать "Модуль сенсорна кнопка TTP223B", но не забывать, что этим кнопкам нужно отдельное питание, лучше 3.3V и поменять в defines.h SENSOR_BUTTON с 0 на 1.

Вместо микроконтроллера Wemos D1 mini (ESP8266) можно поставить "Плата розробки ESP32-C3 SuperMini Wi-Fi Bluetooth", или "Модуль ESP32 WiFi Bluetooth D1 mini Type-C CH9102F", или любой модуль esp32 (есть модули на 30 пин и 38, нет смысла брать 38, дополнительные ножки нельзя использовать).

Так выглядят мои модули и переходник для них, для тестирования. Так выглядят мои модули и переходник для них, для тестирования.

Программирование

При использовании PlatformIO ни каких проблем со сборкой не должно возникнуть, все зависимости должны подтянуться. Процесс установки PlatformIO подробно описан на разных ресурсах и не отличается от таковой в другом моём проекте часиков на адресных светодиодах

Для сборки надо скопироровать файл include/defines.h-sample-en в include/defines.h и изменить настройки под свою схему. Если делаете точно по моей схеме, то можно ничего не менять. Если нет модулей HW-111 или BMP180 и не отключить их в defines.h, то часы всё равно будут работать, но при каждом старте жаловаться на их отсутствие. Время и погода будут получаться только из интернета. А без детектора движения просто немного менее удобно.

Если микроконтроллер не esp8266, а esp32 или esp32c2 то обязательно выбрать соответствующий профиль в PlatformIO и проверить назначение ножек в include/defines.h . Менять окружение для разных микроконтроллеров тут.

После первого включения, надо подключить часы к wifi. Для этого надо найти на своём телефоне точку доступа "ClockAP" (если не меняли в defines.h), найти свою точку доступа и подключится. Всё просто. Дальше нужно добавить файлы web. Для этого есть три способа:

  • через PlatformIO, пункт: "Upload Filesytem Image"
  • через web страничку обновления, которая открывается если файлов web сервера нет
  • через ftp клиент. Если файлов web сервера нет то он включается автоматически с логином admin и без пароля. Файлы из папки data надо скопировать в корень ftp.

Дополнительно

Всякие мысли возникающие в течении работы над проектом переехали сюда: thoughts.md

Изменения

  • Добавлена экперементальная поддержка MQTT. Только отправка датчиков температуры. Может принять строку для показа на экране.
  • Добавлена "кукушка", просто писк каждый час.
  • Добавлены эфекты перехода между экранами и анимация смены цифр времени.

Заключение

На мой взгляд часы получились удачными и практичными, я пользуюсь ими постоянно. И не одной копией :)

About

Yet another clock on MAX7219

Topics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors