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

Точные часы на LED-матрице 32x8 с DS3231, BME280, BH1750 и ESP-01 (NTP)

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

Arduino Nano R3 × 1
Модуль DS3231 (Maxim Integrated) — дешёвый с eBay, резистор зарядки аккумулятора удалён × 1
BME280 (давление, влажность, температура) — дешёвый с eBay × 1
BH1750 (датчик освещённости) — с eBay × 1
LED-матрица MAX7219 32x8 × 1
Конденсатор 10 мкФ × 2
ESP8266 ESP-01 (опционально, для NTP) × 1
LM3940IT-3.3 (3.3 В LDO для ESP-01) × 1
Logic Level Shifter (SparkFun) — нужен для ESP-01 × 1

О проекте

Вдохновлено проектом Nick's LED Word Clock. Код сильно модифицирован: добавлены датчики, кнопки, ESP-01 для NTP. BH1750 автоматически регулирует яркость и может выключать дисплей ночью. BME280 показывает температуру, влажность, давление. ESP-01 получает время с pool.ntp.org, спит (WiFi выкл.) когда не нужен, просыпается по Serial. SSID и пароль передаются из кода Arduino.

Добавлены 6 новых шрифтов (созданы на dotmatrixtool.com). Часть кода перенесена в PROGMEM для экономии RAM. Настройки сохраняются в EEPROM.

Оригинал Nick: 123led.wordpress.com

Мой код: GitHub

Файлы на GitHub:

Arduino LEDClock32x8.ino
ProgmemData.h
Arduino ESP-01_NTP.ino
LEDClock32x8_ESP01-NTP.ino
ProgmemData.h

Пример обмена с ESP-01 в Serial-мониторе:

Arduino : Sent NTP request to ESP01
ESP01 : NTP request received from Arduino [attempt 1 of 3]
Connecting to SSID: TheInternets....connected
SSID: TheInternets, IP Address: 192.168.0.135
Signal Strength (RSSI): -42 dBm
Sending NTP packet to: 195.195.221.100 [attempt 1]
Sending NTP packet to: 195.195.221.100 [attempt 2]
UNIX1562848457
Disabling WiFi....ok

Глобальные настройки (меняются через меню, сохраняются в EEPROM)

// Настройки часов
byte intensity = 2;          // [200] Яркость 0-15
byte clock_mode = 0;         // [201] Режим отображения (0=basic)
bool random_mode = 0;        // [206] Случайная смена режима
bool random_font_mode = 0;   // [207] Случайная смена шрифта
bool ampm = 0;               // [208] 0=24ч, 1=12ч

// Настройки света
byte display_mode = 5;       // [202] Режим дисплея по датчику света
bool auto_intensity = 1;     // [209] Авто-яркость
byte hour_off_1 = 21;        // Часы возможного авто-выключения
byte hour_off_2 = 22;
byte hour_off_3 = 23;

// Настройки шрифтов (меню)
byte font_style = 2;         // [203] Стиль большого шрифта
byte font_offset = 1;        // [204] Смещение шрифта
byte font_cols = 6;          // [205] Колонки шрифта

// DST, NTP, UTC
bool dst_mode = 1;           // [210] Летнее время
bool ntp_mode = 1;           // [211] NTP синхронизация
byte ntp_adjust = 1;         // Коррекция секунд NTP
int8_t utc_offset = 0;       // [213] Смещение UTC (часы)
byte ntp_dst_hour = 2;       // Час ежедневной синхронизации
byte ntp_max_retry = 3;      // Попыток NTP (1-9)
byte ntp_timeout = 45;       // Таймаут попытки (сек)

// WiFi (передаются в ESP-01 через SoftwareSerial)
// Длина SSID + пароль ≤ 72 символа
const byte ssid_len = 8;
const char ssid[] = "YourSSID";
const byte pass_len = 12;
const char pass[] = "YourPassword";

Код

Полный исходный код на GitHub: https://github.com/Ratti3/miniclock

Схемы

BH1750 подключается так же как BME280 (I2C: SDA=A4, SCL=A5).

Точные часы на LED-матрице 32x8 с DS3231, BME280, BH1750 и ESP-01 (NTP)

Распиновка

DS3231, BH1750, BME280: SCL=A5, SDA=A4, VCC=3.3V
LED Matrix MAX7219: CLK=D11, CS=D10, DIN=D12, VCC=5V
Кнопки: D2=Menu, D3=Date/+, D4=Temp/-, D5=Display options
ESP-01 (опционально): D7=TX ESP, D6=RX ESP

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

  1. Часы реального времени на Arduino с расчётом времени намаза
  2. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  3. Аналоговые POV-часы на Arduino Nano: персистенция зрения с 17 светодиодами
  4. DIY лампа-матрица на светодиодах WS2812B и клеевых стержнях
  5. Управление светодиодом Arduino через Cortana по Bluetooth в Windows 10
  6. Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
  7. Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
  8. Точные GPS-часы на Arduino: доступная точность и надёжность
  9. Bluetooth-матрица 8×8 с бегущей строкой на Arduino
  10. Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код