- Цена: $10
Хотите часы с синхронизацией по SNTP и много чего еще? Тогда прошу под cut с огромным количеством картинок.
За $10 вы получите:
— продуманный web интерфейс на Bootstrap + jQuery
— автоматическая синхронизация с NTP серверами или в ручную со временем из браузера
— автоматически переход с летнего на зимнее и обратно
— три шрифта на выбор
— показ прогноза погоды с OpenWeatherMap (в течении 5 секунд, каждые 10 секунд)
— управление яркостью дисплея по восходу/заходу солнца (с 8 до 20 если нет учетки OpenWeatherMap)
— обновление прошивки и образа файловой системы через web интерфейс
— поддержка DFPlayer Mini с управлением по UART (если будильник, кукушка и плеер не нужен можно не подключать)
— индивидуальная громкость для будильника, кукушки и плеера
— сигнализация каждого часа (кукушка), на выбор 10 треков с настройкой интервала (чтоб не кукарекал ночью)
— ежедневный будильник, на выбор 10 треков с плавным нарастанием громкости
— бонусом, простой мп3 плеер с сохранением текущего трека в RTC память (чтоб не затереть флешку до дыр)
Для сборки понадобятся:
1. Пять драйверов MAX7219 с матричными дисплеями 8х8. К сожалению купить сразу пять по адекватной цене нельзя. Поэтому берем 4-in-1 MAX7219 за $4.48. Докупаем один MAX7219 Dot Matrix module по $1.61. При покупке обязательно уточняйте цвет свечения светодиодов. Еще одна головная боль — поддельные MAX7219. Мой одиночный модуль светит чуть-чуть темнее чем купленные ранее 4-in-1. Перестановка матриц не помогла. Тот драйвер, что светил тускло так и остался светить тускло.
Модули желательно слегка доработать. Китайцы упорно ставят неправильный номинал токоограничивающего резистора. На светодиоды матрицы — при максимальной яркости, шарашит адский ток. Меняем все R1 с 10K на 59K для красных светодиодов 2.5V/10mA или 25K для 2.5V/20mA. Для остальных цветов и токов прошу смотреть таблицу в MAX7219 datasheet.
Для тех кому размер пикселя 3мм мал, может отдельно купить матрицы со светодиодами 3.75мм (на 30% больше поле) или 5мм (на 300% больше поле), но только common cathode (другие типы MAX7219 не поддерживает).
2. Один модуль на ESP8266. Например WeMos Mini D1 за $1.83.
3. В качестве будильника, кукушки и плеера выступает SD card mp3 модуль — DFPlayer Mini с управление по UART. На алишечки стали появляться совсем кривые платы с непонятной прошивкой и системой команд. Часы поддерживают только модули на чипах YX5200, YX5300, JL AAxxxx и GD3200B. Будьте внимательны при покупке!!! Можно сэкономить $1.20 и не брать, основной функционал часов будет работать и без плеера.
Модуль желательно немного обработать напильником. Китайцы зачем-то ставят перемычку не туда. Из-за этого во время инициализации чипа из динамика валит шум и треск. У усилителя DM8002 есть standby режим, а у DFPlayer Mini есть пин busy. Нужно просто перепаять резистор/перемычку справа (STBY->GND) налево (STBY->BUSY).
На плату с GD3200B перемычки не завезли. Тут нужно поднять с земли pin 1 (standby) усилителя NS8002 и бросить от него провод к пин 3 (busy) плеера GD3200B. Также можно попытаться уменьшить треск добавлением резисторов 1 кОм последовательно с контактами TX/RX DFPlayer и ESP8266.
Сборка и прошивка:
Качаем мой проект с GitHub и соединяем весть зоопарк по схеме:
— MAX7219 соединяем так GPIO13/D7 к DIN/MOSI, GPIO14/D5 к CLK/SCLK, GPIO15/D8 к CS (можно поменять через вебморду), Vcc к +4.0v..+5.0v и Gnd к Gnd.
— DFPlayer Mini: GPIO5/D1 к RX, GPIO4/D2 к TX, Vcc к +3.2v..+5.0v, Gnd к Gnd, 2W/4ohm динамик к SPK1 и SPK2. Пишем файлы и папки mp3_sd_root на заранее отформатированную в FAT16 или FAT32 SD карту размером до 36GB.
Прошиваем WeMos Mini D1 с помощью Flash Download Tools. Предварительно выставив:
— SPI speed 80MHz
— SPI Mode QIO
— Flash Size 32Mbit
— поставить галку DoNotChgBin
— адрес для fw_latest.bin 0x00000
— адрес для fs_latest.bin 0x200000
Настройка:
Если вы все сделали правильно, то по после прошивки и нажатия reset у вас должна появится новая точка доступа MatrixClock. Подключитесь к ней введя пароль 12345678. После удачного подключения введите в браузере 192.168.4.1 и в появившемся окне User name: admin и Password: 12345678.
В целях безопасности меняем пароль точки доступа Settings -> Access Point Config и входа в систему Settings -> Server Config. Не забываем нажимать Save.
Дальше идем в Settings -> Station Config и вписываем имя и пароль вашего роутера. Для тех кому лень жмем кнопку Scan. ESP8266 найдет все точки доступа и рассортирует их по уровню сигнала. Если точек с одинаковым именем несколько, то ориентируемся по полю BSSID c MAC адресом роутера.
Было замечено, что ESP8266 неадекватно медленно отдает страницы при уровне сигнала меньше -60dBm. Советую подобрать уровень мощности передатчика в поле Power под себя. Помним — чем выше мощность, тем больше потребление. Еще ходят слухи, что ESP8266 создает помехи другим при мощностях выше +18.0dBm. Текущий уровень сигнала можно посмотреть во вкладке Settings -> ESP8266 Modem Info, а качество сигнала в % на странице Settings -> ESP8266 Info
Жмем Save & Reboot. Если матрицы не мигают 5 раз и не показывают время, перейдите на страницу Settings -> Matrix Driver Config и переставьте вывод CS в соответствии со схемой, затем нажмите Save & Reboot. Убедитесь, что GPIO13 / D7 подключен к DIN / MOSI, а GPIO14 / D5 — к CLK / SCLK.
После удачного подключения MatrixClock к вашему роутеру — Wi-Fi точка доступа Matrix Clock исчезнет. Теперь чтобы попасть в вебморду, на машине с Windows 10, в браузере набираем http://matrixclock.local/. На Android и Win7 используйте IP-адрес часов вместо mDNS. Его можно найти в логах UART на скорости 115200 бит/с или в админке вашего роутера. Переходим в Settings -> NTP Config и устанавливаем часовой пояс, затем нажмите Save & Reboot. Если подключения к интернету не планируется жмем sync Device Time with Browser Time и часы возьмут время из браузера. Точность хода у софтового генератора ESP8266 не очень, так что жать кнопку придется раз в неделю.
Получаем бесплатный ключ API от OpenWeatherMap и копируем его в соответствующее поле на странице Settings -> Weather Config, меняем другие поля под себя. Жмем Save & Reboot. Теперь часы начнут обновлять текущую погоду каждые 2.5 минуты и показывает значок погоды и температуру в течение 5 секунд каждые 10 секунд. Если по какой-то причине у вас пропадет интернет, то вместо погоды будет выводиться иконка ошибки и надпись WiFi как бы намекая вам что верить часам пока не стоит. Не хотите погоды? Просто вводим axxxxbxxcxxxxxxxxxdxxxxxxxexfxxx в поле API Key или оставляем его пустым.
Чтобы кукушка заработала нужно включить DFPlayer Mini модуль на странице Settings -> MP3 Player Config и настроить громкость MP3 Player-а. Если плеер заикается, ведет себя не адекватно — у вас плохой БП или плохой контакт с SD карточкой. Замените блок питания на что нибудь по мощнее. Не лишним будет конденсатор на 1000мкФ..2000мкФ параллельно DFPlayer Mini.
После этого идем в Settings -> Alarm Config и настраиваем сигнализацию каждого часа (кукушку) с будильником. Чтобы будильник гарантированно отыграл хотя бы минуту ему дан повышенный приоритет. Например сигнализация каждого часа не сработает в 22-00 если будильник стоит на 22-00 или 22-01.
Жмем Save & Reboot. Каждый раз при сохранении срабатывает Hourly Chime как бы намекая, что модуль в порядке. Все, минимальная настройка часов завершена.
Внимание: Для ускорения работы сервера, в проекте используются очень агрессивны настройки кеширования HTML и JavaScript. Браузер только первый раз читает эти файлы с MatrixClock и сохраняет себе в кеш. Про последующие обновление fs_latest.bin он ничего не знает и вместо новых HTML и JavaScript, с вероятностью 100%, будет тянуть старые из кеша. Обязательно чистите кеш после обновления файловой системы.
UDP: Где исходники? Их не будет. Есть только скомпилированные бинарники. Лицензия arduino (именно в ней написан проект) позволяет не открывать исходный код. То что я сам у себя своровал библиотеку DFPlayer принято к сведению и виновные будут наказаны.