Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Светодиодные матричные часы NTP с DS3231, BME280, BH1750 и ESP01

Компоненты и расходные материалы

Arduino Nano R3
× 1
Периферийный модуль Maxim Integrated DS3231MPMB1
Самый дешевый на Ebay, с удаленным резистором, чтобы батарея не взорвалась
× 1
Прорыв датчика атмосферы SparkFun - BME280
Самый дешевый от Ebay
× 1
Датчик освещенности BH1750
С Ebay
× 1
Матрица светодиодов Max7219 32x8
× 1
Конденсатор 10 мкФ
× 2
Espressif ESP8266 ESP-01
Необязательно, если вы хотите установить время через NTP
× 1
LM3940IT3.3
Регулятор LDO 3,3 В для ESP01
× 1
SparkFun Level Shifter Board
Требуется ESP01
× 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

Производственный процесс

  1. Часы Arduino с исламским временем молитв
  2. Arduino с Bluetooth для управления светодиодом!
  3. Светодиодные часы POV в аналоговом стиле
  4. Светодиодная матричная лампа с горячим клеем
  5. Управляйте своим светодиодом с помощью Cortana
  6. Перекидные часы Arduino с одной светодиодной матрицей
  7. Управление светодиодной матрицей с помощью Arduino Uno
  8. Дешевые и точные часы на основе GPS
  9. Матрица Arduino, управляемая Bluetooth, с прокручивающимся текстом
  10. Простой будильник с DS1302 RTC