Очередные часы с будильником, датчиком температуры и давления, на маленькой матрице одноцветных светодиодов
Основано на моём прошлом проекте, но при создании закладывалась совершенно другие цели и другой способ использования. Это небольшие настольные часы-будильник, без резервного питания и если утром электричества не будет, то будильник не разбудит. Естественно, что все "охранные" функции не работают, управление через 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, как бы не убеждали китайцы в обратном.
Вместо механических кнопок можно использовать "Модуль сенсорна кнопка 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 надо поправить параметры под свой проект, если он отличается. Но если Вы собираете по схеме как у меня, можно ничего не менять. Если нет модулей HW-111 или BMP180 и не отключить их в defines.h, то часы всё равно будут работать, но при каждом старте жаловаться на их отсутствие. Время и погода будут получаться только из интернета. А без детектора движения просто немного менее удобно.
Если микроконтроллер не esp8266, а esp32 или esp32c2 то обязательно выбрать соответствующий профиль в PlatformIO и проверить назначение ножек в include/defines.h .
TODO перенесено в файл TODO.txt
Всякие мысли возникающие в течении работы над проектом переехали сюда: thoughts.md
На мой взгляд часы получились удачными и практичными, я пользуюсь ими постоянно. И не одной копией :)