Светодиодные матричные часы NTP с DS3231, BME280, BH1750 и ESP01
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Об этом проекте
Это то, что привело меня в Arduino. Я наткнулся на LED Word Clock Ника и подумал, что хочу это сделать.
После загрузки его кода я изменил его, включив в него дополнительные датчики и кнопки, а также добавив ESP01.
BH1750 используется для автоматического затемнения дисплея в зависимости от условий освещения и может выключать дисплей ночью. BME280 показывает температуру, влажность и давление. ESP01 используется для получения времени с pool.ntp.org.
Дополнительные кнопки позволяют легко изменять настройки. Вы можете настроить параметры датчика освещенности с помощью кнопок, а также изменить шрифты и настройки NTP / DST / UTC.
Было добавлено шесть новых шрифтов, я сделал шрифты с помощью:http://dotmatrixtool.com/.
Я немного изменил часы слов, теперь в них больше слов, и они немного переместились в PROGMEM для экономии оперативной памяти.
Страница проекта Ника:https://123led.wordpress.com/mini-led-clock/
Мой код:https://github.com/Ratti3/miniclock
Теперь код готов, не считая неизвестных ошибок и кое-каких настроек, я приведу аргументы в пользу этого.
Вам нужно будет настроить код датчика освещенности в соответствии с вашими условиями освещения, я закодировал это при ярком солнечном свете, сидя рядом с окном.
ESP01 используется для получения времени через NTP, ESP01 кодируется для спящего режима (Wi-Fi отключен), когда он не нужен, и просыпается через последовательный порт, чтобы получить время в формате UNIX. Имя SSID и пароль передаются через код Arduino для удобства.
В этой версии также есть вычисления DST / UTC и BST. Эти настройки можно изменить или отключить через меню.
Настройки сохраняются в EEPROM, это означает, что при выключении и повторном включении изменения, внесенные через меню, будут сохранены.
Это файлы кода на Github:
Код на Github [https://github.com/Ratti3/miniclockpting:Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h
Когда ESP01 работает, последовательный порт Arduino покажет следующее:
Arduino:отправлен запрос NTP на ESP01ESP01:запрос NTP получен от Arduino [попытка 1 из 3] Подключение к SSID:Интернет .... connectedSSID:Интернет, IP-адрес:192.168.0.135 Уровень сигнала (RSSI):-42 дБм Отправка пакета NTP на:195.195.221.100 [попытка 1] Отправка пакета NTP на:195.195.221.100 [попытка 2] UNIX1562848457 Отключение Wi-Fi .... ОК
Еще картинки и инструкции будут позже ...
Собираем все вместе:
Электропроводка:
DS3231, BH1750 и BME280:SCL PINS =A5 SDA PINS =A4 VCC =3.3vLED Матрица:CLK =D11 CS =D10 DIN =D12 VCC =5v Переключатели:D2 - Меню D3 - Дата / + D4 - Температура / - D5 - Параметры отображенияESP01 - Дополнительный D7 - Вывод TX ESP01 D6 - Вывод RX ESP01
Вы можете изменять следующие глобальные переменные:
// Глобальные переменные (изменяемые значения по умолчанию), числа в скобках [] - это место хранения EEPROM для этого значения // Настройки часов // [200] Интенсивность / яркость по умолчанию (0-15), можно установить via menubyte depth =2; // [201] Режим часов по умолчанию. По умолчанию =0 (базовый_режим) байт clock_mode =0; // [206] Определить случайный режим - меняет тип отображения каждые несколько часов. По умолчанию =0 (выкл.) Bool random_mode =0; // [207] Определить случайный режим шрифта - меняет шрифт каждые несколько часов. 1 =случайный шрифт onbool random_font_mode =0; // [208] Определим 12- или 24-часовое время. 0 =24 часа. 1 =12 ч. Бул. Ampm =0; // Настройки освещения // [202] Режим включения / выключения отображения по умолчанию, используемый датчиком освещенности. 0 =нормально, 1 =всегда включен, 2 - всегда выключен, 3-5 =определяется параметром hour_off_1,2,3byte display_mode =5; // [209] Настройка автоматической интенсивности освещения по умолчаниюbool auto_intensity =1; // Эти три определяют, что датчик освещенности часов может отключать дисплей, если достаточно темно, формат - 24 часа, процедура для // этого проверяет между 8.00 и одним из этих значений byte hour_off_1 =21; байт hour_off_2 =22; byte hour_off_3 =23; // Настройки шрифта - они задаются через меню настройки Font, для всех значений по умолчанию см. процедуру set_font_case ():// [203] Часы по умолчанию, большой шрифт stylebyte font_style =2; // [204] Настройка смещения большого шрифта по умолчанию для часов font_offset =1; // [205] Стандартные часы для столбцов с большим шрифтом Adjustbyte font_cols =6; // Настройки DST NTP и UTC // [210] Включить функцию DST, 1 =включить, 0 =отключить bool dst_mode =1; // [211] Включите функцию NTP, 1 =включить, 0 =disablebool ntp_mode =1; // Количество секунд для настройки значения NTP перед применением к DS3231, требуется несколько сотен миллисекунд для обработки байта данных ESP01 ntp_adjust =1; // [213] Корректировка смещения UTC, часыint8_t utc_offset =0; // Часовая ежедневная синхронизация NTP / DST, должна быть оставлена в 2 часа ночи, если используется режим DST ntp_dst_hour =2; // Количество времени для повторной попытки NTP-запроса 1 =всего 35 секунд, значения 1 - 9 байт ntp_max_retry =3; // Используется для расчета, когда выйти из ntp (), когда он не получает данные, значение в секундах, оно умножается на ntp_max_retrybyte ntp_timeout =45; // Глобальные константы - SSID и пароль для WiFi, передаваемые ESP01 через SoftwareSerial // Общая длина SSID и пароля не может превышать 72 символа // Длина вашего имени SSID, например SSID =MyWifi, ssid_len =6const byte ssid_len =8; // Ваше имя SSID, например MyWificonst char ssid [] ="YourSSID"; // Длина вашего пароля SSID, например, password =password, pass_len =8const byte pass_len =12; // Ваш пароль SSID, например passwordconst char pass [] ="YourPassword";
Код
Github от Ratti3
https://github.com/Ratti3/miniclockСхема
Не было BH1750, подключается так же, как и BME280Производственный процесс
- Часы Arduino с исламским временем молитв
- Arduino с Bluetooth для управления светодиодом!
- Светодиодные часы POV в аналоговом стиле
- Светодиодная матричная лампа с горячим клеем
- Управляйте своим светодиодом с помощью Cortana
- Перекидные часы Arduino с одной светодиодной матрицей
- Управление светодиодной матрицей с помощью Arduino Uno
- Дешевые и точные часы на основе GPS
- Матрица Arduino, управляемая Bluetooth, с прокручивающимся текстом
- Простой будильник с DS1302 RTC