ARDUINO Часы на ГРИ v2. Альтернативная прошивка

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
Рекомендуется длинные описания убрать под спойлеры
Прошивка изначально создавалась для часов на ГРИ v2 от AlexGyver, но на данный момент возможно применение и в других проектах часов на 4/6 ламп.
Актуальная версия прошивки находится здесь. Последняя версия 2.1.8 от 08.03.2024.

Видео-обзор прошивки:
Если при работе часов возникла какая-то проблема, то при старте часов будет звуковой код, а на индикаторах отобразится код ошибки.
  • 0001 - Нет связи с модулем DS3231(модуль часов неисправен или проблемы с шиной i2c).
  • 0002 - Сбой осциллятора DS3231(батарейка модуля часов разряжена или проблемы с тактированием модуля часов).
  • 0003 - Слишком короткий сигнал SQW(во время работы часов были обнаружены помехи или неверный сигнал на SQW).
  • 0004 - Слишком длинный сигнала SQW(пропал сигнал SQW во время работы часов или сигнал отсутствовал при запуске).
  • 0005 - Выбранный датчик температуры не обнаружен(проверить подключение датчика температуры).
  • 0006 - Слишком низкое или слишком высокое напряжение питания(проверить источник питания).
  • 0007 - Сбой памяти EEPROM(повреждение данных, если ошибка будет повторятся слишком часто - износ EEPROM).
  • 0008 - Софтовая перезагрузка(говорит о нестабильности программы или об аппаратных проблемах с мк).
  • 0009 - Сбой работы преобразователя(регистры таймера были неожиданно изменены).
  • 0010 - Переполнение заполнения шим преобразователя(превышен верхний предел заполнения шим).
  • 0011 - Переполнение стека(утечка памяти).
  • 0012 - Переполнение тиков времени(основная программа не отвечает).
  • 0013 - Сбой работы динамической индикации(регистры таймера были неожиданно изменены или превышен предел регистра сравнения).
Для синхронизации хода секунд желательно подключить пин SQW модуля DS3231 к пину ардуино D2, если у вас модуль DS3231mini, то необходимо найти 3-ю ножку микросхемы и также проводком подпаять к пину D2.
Доработка DS3231.jpg
  • NEON_DOT 0 - Обычная светодиодная секундная точка(пин подключения указывается в DOT1_PIN)(возможно комбинирование с точками в индикаторах)
  • NEON_DOT 1 - Одна неоновая лампа в качестве секундной точки(пин подключения указывается в DOT1_PIN)(возможно комбинирование с точками в индикаторах)
  • NEON_DOT 2 - Две неоновые лампы в качестве секундных точек(пин подключения указывается в DOT1_PIN и DOT2_PIN)(возможно комбинирование с точками в индикаторах)
  • NEON_DOT 3 - Точки в индикаторах в качестве секундных точек(пин подключения указывается в DOTL_PIN и DOTR_PIN)
Пины подключения периферии к сдвиговому регистру указываются в connection.h: ANODE_1_PIN..ANODE_6_PIN, DOTL_PIN, DOTR_PIN, DOT_1_PIN, DOT_2_PIN. Доступные номера пинов 0..7.
  • Аноды ламп.
  • Разделительные точки в индикаторах.
  • Две раздельные неоновые лампы.
  • Одну неоновую лампу.
При использовании сдвигового регистра есть ограничения на пины D13-D10, а именно:
  • D13 может быть использован только как пин сдвигового регистра - SCK.
  • D12 может быть использован для остальной периферии в качестве входа(цифровые кнопки, датчик движения, ИК приёмник, BUSY DF плеера, MISO SD карты).
  • D11 может быть использован только как пин сдвигового регистра - DATA.
  • D10 может быть использован для остальной периферии в качестве выхода(ВВ преобразователь, секундные точки, подсветка, бузер, управление питанием усилителя, RX DF плеера при использовании софтового UART, MOSI/SCK/CS SD карты, защёлка сдвигового регистра).
Модуль ESP8266 подключается к шине I2C, пины которые модуль ESP8266 использует в качестве SCL/SDA нужно указать в прошивке модуля ESP8266. При использовании модуля ESP8266 подтяжка шины I2C должна быть организована к источнику 3.3в!
Питать модуль ESP8266 от вывода 3.3 ардуино нельзя! Нужно использовать линейный стабилизатор или DC-DC преобразователь на 3.3в!
Инструкцию по загрузке прошивки и файловой системы смотрите в шапке прошивки веб интерфейса.

Обновление прошивки часов возможно только после записи кастомного загрузчика!
Порядок записи нового загрузчика(потребуется isp программатор и программа avrdude_prog):
  1. Настраиваем фьюзы(установив загрузчик для "Arduino UNO" или выставить вручную по картинке в папке загрузчика).
  2. Записываем кастомный загрузчик который идёт с прошивкой(i2c_bootloader_v2.hex).
  3. Загружаем прошивку в есп(по UART).
  4. Компилируем прошивку часов(нужно выбрать плату "Arduino UNO").
  5. Экспортируем прошивку часов в hex(скетч -> экспорт бинарного файла).
  6. Заходим в веб интерфейс, вкладка "Обновление", загружаем файл прошивки часов(который без подписи "with_bootloader")(поддерживаемые расширения файла - .hex).
  7. Зажимаем кнопку ресет на мк часов(нужно только при первой загрузке прошивки или при нештатной ситуации).
  8. Ждём появления окна о начале загрузки прошивки(появится надпись "Подключение...").
  9. Отпускаем кнопку ресет на мк часов(появится надпись "Загрузка...").
  10. Ждём окончания загрузки(появится надпись "Загрузка прошивки завершена").
temp1.pngtemp2.pngtemp3.pngtemp4.pngtemp5.pngtemp6.pngtemp7.pngtemp8.png
  • После включения питания часов автоматически создаётся точка доступа "NixieClockAP"(после подключения к роутеру отключится через 5 мин).
  • С любого устройства(Смартфон, ПК и пр.) ищем сеть "NixieClockAP" и подключаемся к ней(Пароль по умолчанию 1234567890).
  • Далее с этого же устройства в браузере пишем в адресной строке: http://192.168.4.4/
  • Далее переходим во вкладку «Сетевые настройки» и в блоке «Локальная сеть WIFI» выбираем свой роутер из списка и вводим пароль(если нужной сети нет или ваша сеть скрыта, необходимо нажать на ссылку "Ручной режим").
  • При успешном соединении с роутером будет выдан IP адрес для доступа к веб интерфейсу по локальной сети(Далее всё управление в локальной сети будет именно по этому адресу).
Для настройки прошивки под другую разводку плат, отличающуюся от "Часов на ГРИ v2", необходимо указать пины подключения периферии в "connection.h" и настроить используемую периферию в "userConfig.h", "config.h".

Так-же не забудьте выбрать свою плату в "userConfig.h" - BOARD_TYPE.
Для других ламп(плат) используйте - BOARD_TYPE 3.
Маска дешефратора и порядок катодов указываются в "config.h".

Если по какой-то причине нету сигнала от SQW или если во время работы сигнал он выйдет за рамки то часы перейдут на внутренний источник тактирования и по возможности будут синхронизироваться с модулем часов.

Для сброса настроек -
необходимо зажать среднюю кнопку и подать питание на часы.
Для запуска меню отладки - необходимо зажать левую кнопку и подать питание на часы.
Для запуска теста системы(ламп тест) - необходимо зажать правую кнопку и подать питание на часы.

Поддерживаются:
  • MH2024K-24
  • GD3200B
  • YX5200-24
  • AB23A797393.1-74
  • AB23A795250.1-74
  • AA19HFF859-94
Не поддерживаются:
  • MH2024K-16
  • AS21CN27OC
Schematic_NixieClock.png
Периферия:
  • Датчики температуры DHT11/DHT12/MW33/DHT21/DHT22(AM2301/AM2302), DS18B20/DS18S20/DS1820 - доступные пины подключения(D0..D13) с подтяжкой 4.7-10кОм к +5в.
  • Датчик температуры BME280(BMP085/180/280) - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры SHT20(SHT21/SHT25), SHT30(SHT31/SHT35) - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры AHT10(AHT15), AHT20 - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры DS3231 - встроенный в модуль часов реального времени.
  • Синхронизация времени по SQW - доступные пины подключения(D2).
  • Управление разделительными точками в индикаторах ИН12Б/14/16 - доступные пины подключения(D0..D13), для каждой точки используется свой пин.
  • Радиоприёмник RDA5807M - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Неоновая секундная точка(одна или две) - доступные пины подключения(D0..D13), для каждой точки используется свой пин.
  • Бузер(Для будильника и оповещений) - доступные пины подключения(D0..D13).
  • Подсветка на адресных светодиодах WS2812B - доступные пины подключения(D0..D13).
  • Подсветка на обычных светодиодах - доступные пины подключения(D11), с софт. шимом(D0..D13).
  • Дополнительная цифровая кнопка для управления таймером - секундомером - доступные пины подключения(D0..D13).
  • Преобразователь ВВ напряжения(Затвор мосфета) - доступные пины подключения(D9..D10).
  • Аналоговые кнопки(в т.ч. и дополнительная) - доступные пины подключения(A6..A7).
  • Обратная связь преобразователя ВВ напряжения на резистивном делителе(АЦП или компаратор) - доступные пины подключения(для АЦП)(A6..A7)(для компаратора)(только пин D7).
  • Озвучка на DF player - доступные пины подключения указаны в прошивке.
  • Озвучка на SD карте - доступные пины подключения указаны в прошивке.
  • Управление питание усилителя - доступные пины подключения(D0..D13).
  • Приемник ИК пульта(Пульты только с протоколом NEC) - доступные пины подключения(D0..D13).
  • Датчик яркости освещения - доступные пины подключения(A6..A7).
  • Датчик движения - доступные пины подключения(D0..D13).
  • Сдвиговый регистр для управления анодами ламп и разделительными точками(неоновыми лампами) - доступные пины подключения указаны в прошивке.
  • Модуль ESP8266 - доступные пины подключения(A4 и A5) параллельно модулю часов.
Программно:
  • Поддержка часов на 4/6 ламп.
  • 12/24 часовой формат времени.
  • Переход на летнее/зимнее время(Только при использовании есп).
  • Будильник(Один или несколько).
  • Радиобудильник(При наличии модуля радио).
  • Автоматическое определение подключенного датчика температуры(Если выбрано несколько датчиков).
  • Авто-показ температуры(Влажности/Давления).
  • Авто-показ даты/года.
  • Отображение текущей температуры/давления/влажности.
  • Отображение текущей даты/года.
  • Меню настройки яркости и др. функций.
  • Быстрое меню для выбора анимации смены минут(секунд)/точек/подсветки.
  • Таймер - секундомер(Только при наличии доп. кнопки).
  • Радиоприёмник(Только при наличии доп. кнопки или есп).
  • Антиотравление ламп(3 варианта анимации, выбор из меню).
  • Мелодия смены часа(Или озвучка при использовании плеера).
  • Смена яркости по времени и по датчику освещённости.
  • Анимация глюков.
  • 10 режимов анимации авто-показа(Есть случайный режим).
  • 10 режимов анимации минут(Есть случайный режим).
  • 3 режима анимации секунд для 6-ти ламп(Выбор из меню).
  • 3 режима подсветки для обычных диодов и 15 для адресных WS2812B.
  • 3 режима работы секундных точек (1 режим для двух неоновых ламп / 6 режимов разделительных точек) и доп.режимы для отображения состояния будильника.
  • Возможность создания собственных мелодий будильника.
  • Система контроля основных параметров часов(Ошибки).
  • Меню отладки(Для опытных пользователей).
  • Озвучка пунктов меню, времени и температуры.
  • Программирование кнопок ИК пульта из меню отладки.
  • Режим сна(Отключение ламп через заданное время).
  • Веб-интерфейс для настройки и мониторинга.
  • Обновление прошивки часов через веб интерфейс.
  • Второй датчик температуры(DHTxx или DS18x20) для "Улицы"(Требуется наличие есп).
  • Добавить выбор основного датчика(при разделении двух датчиков) в веб интерфейсе.
  • Добавить вывод температуры с двух датчиков(при разделении двух датчиков) для ручного отображения.
  • Добавить возможность выбора перехода на зимнее/летнее время в часах.
  • Добавить возможность воспроизводить музыку.
  • Добавить анимации перехода подсветки на адресных светодиодах.
  • Добавить беспроводной датчик температуры на esp8266.
  • Добавить поддержку подключения двух дешефраторов к сдвиговому регистру.
ver 2.0.8
  • Добавлен выбор голоса озвучки из меню и веб интерфейса.
  • Добавлена озвучка параметров основного меню.
  • Добавлена настройка интервала антиотравления в основное меню.
  • Переработано быстрое меню(см. описание).
  • Исправление работы с таймером.
  • Исправление работы с радио.
  • Мелкие исправления.
ver 2.0.9
  • Добавлено подтверждение обновления по OTA.
  • Доработана вкладка "климат".
  • Исправлено отображение спиннеров в мобильной версии.
  • Исправление выбора озвучки при запуске.
  • Исправление озвучки нового часа.
ver 2.1.0
  • Добавлена одновременная поддержка нескольких датчиков i2c(BME/BMP/AHT/SHT) на стороне esp.
  • Добавлена возможность выбрать какие данные с датчиков отправлять в часы.
  • Добавлена поддержка отрицательной температуре для датчиков DS18x20 и DHTxx.
  • Добавлена поддержка одновременной работы "комнатного" и "уличного" датчика температуры.
  • Переработан алгоритм обработки времени.
  • Добавлена возможность выбрать с какого источника отображать данные о климате в часах при использовании двух датчиков(часы или esp)(SHOW_TEMP_MODE).
  • Добавлена возможность выбрать с какого источника отображать данные о климате в автопоказе.
  • Добавлена возможность выбрать тип отображения устойчивости сигнала радиостанции(RADIO_STATUS_DOT_TYPE).
  • Мелкие исправления.
ver 2.1.1
  • Добавлена кнопка во вкладке "Сетевые настройки" для удаления данных о сохранённой точке доступа из памяти.
  • Добавлены кнопки во вкладке "О системе" для сброса настроек и перезагрузки устройства.
  • Добавлен выбор предустановленных интервалов синхронизации с ntp сервером.
  • Добавлена возможность во вкладке "О системе" указать имя для устройства(отображение в меню/заголовке вкладки/точке доступа wifi).
  • Добавлено динамическое отслеживание состояния связи с шиной часов.
  • Добавлена индикация состояния подключения к сети wifi.
  • Исправление интерфейса радиоприёмника.
  • Переработан алгоритм работы с шиной.
  • Добавлены доп кнопки ИК пульта для выбора ячеек радиостанций.
  • Добавлена возможность сбросить конкуренту кнопку ИК пульта в отладке.
  • Переработано быстрое меню радиоприёмника.
  • Мелкие исправления.
ver 2.1.2
  • Критическое исправление работы с шиной.
  • Исправление работы с радиоприёмником.
  • Исправление инициализации микроклимата.
  • Исправление синхронизации времени.
  • Мелкие исправления.
ver 2.1.3
  • Добавлен загрузчик прошивки для мк часов.
  • Добавлена возможность обновить прошивку часов через веб интерфейс.
  • Мелкие исправления.
ver 2.1.4
  • Добавлена защита от рассинхронизации времени.
  • Исправление первой синхронизации для летнего времени.
  • Добавлена возможность отключить датчик температуры DS3231.
  • Исправление подсветки радиоприёмника.
  • Мелкие исправления.
ver 2.1.5
  • Добавлена поддержка DS3231 на стороне esp8266.
  • Исправление инициализации прерываний портов при прошивке через веб интерфейс.
  • Исправление воспроизведения трека будильника из веб интерфейса.
  • Исправление сохранения настроек при использовании веб интерфейса.
  • Исправление отметок времени микроклимата.
  • Исправление индикации устойчивого сигнала радио для левой разделительной точки.
  • Исправление отображения температуры.
  • Сжаты скрипты графика для экономии места.
  • Удалено сохранение времени в еепром.
  • Мелкие исправления.
ver 2.1.7
  • Добавлена поддержка аналоговых кнопок с подтяжкой HIGH_PULL.
  • Добавлен поиск и выбор из списка найденных сетей wifi.
  • Добавлена страница ожидания подключения к сети wifi.
  • Мелкие исправления.
ver 2.1.8
  • Добавлена возможность настроить групповое управление(пока только тестовый ручной режим).
  • Добавлена верификация прошивки перед загрузкой в часы.
  • Критическое исправление при загрузке прошивки по шине без загрузчика.
  • Исправление отправки расширенных настроек из веб.
  • Исправление интерфейса.
  • Мелкие исправления.

Отладка: Удерживать "левую" кнопку при включении питания
Ввод пароля:
  • Клик по "средней кнопке" - переход между разрядами
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - подтвердить ввод пароля
Меню отладки:
  • Клик по "средней кнопке" - выбор пункта отладки
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - выход к часам
Пункты отладки:
  • 01 - Коррекция хода часов DS3231(Коррекция (0..255)(128 = 0))
  • 02 - Коррекция хода внутреннего осциллятора(Коррекция (2000..4000)(мкс))
  • 03 - Минимальное значение шим(Для линейной регулировки)(100..150)
  • 04 - Максимальное значение шим(Для линейной регулировки)(150..200)
  • 05 - Коррекция напряжения преобразователя(Для регулировки по обратной связи)(Внимание! Значение может меняться в зависимости от напряжения питания)(+-30)
  • 06 - Программирование кнопок ИК пульта(Поддерживаются пульты только с протоколом NEC)(1..8)
  • 07 - Калибровка датчика освещенности(Автоматическое определение диапазона)
  • 08 - Сброс настроек отладки(0..1)(0 - отмена | 1 - подтверждение)
Управление:
  • Клик по "средней кнопке" - выйти из режима программирования кнопок ИК пульта
  • Клик по "левой кнопке" - уменьшить значение номера кнопки ИК пульта
  • Клик по "правой кнопке" - увеличить значение номера кнопки ИК пульта
  • Удержать "среднюю кнопку" - сбросить текущую кнопку ИК пульта

Нумерация кнопок:
  • 1 - Левая клик.
  • 2 - Левая удержание.
  • 3 - Правая клик.
  • 4 - Правая удержание.
  • 5 - Средняя клик.
  • 6 - Средняя удержание.
  • 7 - Доп.кнопка клик.
  • 8 - Доп.кнопка удержание.
  • 9 - Вкл/выкл питание радио.
  • 10 - Прибавить громкость радио.
  • 11 - Убавить громкость радио.
  • 12 - Переключить на следующую радиостанцию.
  • 13 - Переключить на предыдущую радиостанцию.
  • 14..23 - Переключить на ячейку памяти радиостанции 0..9

Настройка времени: Удерживать "правую" кнопку
  • Средняя кнопка - выбор, остальные "меньше" и "больше"
  • Клик по "выбору" - смена настройки часы/минуты | месяц/дата | год
  • Клик "меньше" или "больше" - изменение времени/даты
  • Удержать "выбор" - возврат к режиму часов

Настройка будильника: Удерживать "левую" кнопку
В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:
  • В левых двух разрядах отображается текущий номер будильника (0 – нет будильников).
  • В четвёртом разряде отображается текущий режим будильника (если будильников нет – ничего не отображается).
Экран «Выбор номера будильника»
Нажатие на:
  • Правую клавишу – увеличивает значение.
  • Левую клавишу – уменьшает значение.
  • Среднюю клавишу - переход к настройке выбранного будильника.
Удержание:
  • Правой клавиши – добавить новый будильник.
  • Левой клавиши – удалить текущий будильник.
  • Средней клавиши – выход к режиму часов.
После перехода к настройке будильника:
  • Средняя кнопка - выбор, остальные "меньше" и "больше".
  • Клик по "выбору" - перемещение по индикаторам.
  • Клик "меньше" или "больше" - изменение значений.
  • Удержать "меньше" или "больше" - смена настройки часы/минуты -> режим -> день недели/активация -> громкость(для плеера)/мелодия.
  • Удержать "выбор" - возврат к выбору будильника.
  • Удержать "доп. кнопку" - переключить режим мелодия/радио.
В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:
  • Средняя кнопка - выбор, остальные "меньше" и "больше".
  • Клик по "выбору" - перемещение по индикаторам.
  • Клик "меньше" или "больше" - изменение значений.
  • Удержать "меньше" или "больше" - смена настройки часы/минуты -> режим -> день недели/активация -> громкость(для плеера)/мелодия.
  • Удержать "выбор" - возврат к режиму часов.
  • Удержать "доп. кнопку" - переключить режим мелодия/радио.
Для начала нужно создать новый массив мелодии и прописать его в основном массиве всех мелодий(в config.h):
C++:
const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)

};
const uint16_t alarm_sound[][2] = {  //массив мелодий будильника
  SOUND_PATTERN(_sound_1),
  SOUND_PATTERN(_sound_2)
};
Затем в массив добавить патерны:

C++:
const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)
   {392, 700, 700}, //можно добавлять n-е количество
};
Патерн состоит из 3-х значений:
C++:
const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)
  {/*Частота звука*/, /*Длительность звука*/, /*Пауза звука*/},
};
  • Частота звука(в герцах)
  • Длительность звука(в мс)
  • Пауза звука между патернами(в мс):
    Если равно длительности звука: паузы не будет.
    Если больше: пауза звука = (пауза звука - длительность звука).
  • 00 - выключен
  • 01 - однократный
  • 02 - каждый день
  • 03 - по будням
  • 04 - выбор по дням недели

Основные настройки: Удерживать "среднюю" кнопку
  • Средняя кнопка - выбор, остальные "меньше" и "больше"
  • Клик по "выбору" - переход в пункт меню для настройки/выход к выбору пункта меню
  • Клик "меньше" или "больше" - выбор пункта меню
  • Удержать "выбор" - возврат к режиму часов
  • Удержать "меньше" или "больше" - выбор подпункта меню.
Пункты меню:
  • 01 - Бузер(Формат времени(12ч | 24ч)), Плеер(Формат времени(12ч | 24ч) : Глюки(0 - выкл | 1 - вкл))
  • 02 - Бузер(Глюки(0 - выкл | 1 - вкл)), Плеер(Громкость озвучки : Глюки(0 - выкл | 1 - вкл))
  • 03 - Бузер(Звук кнопок(0 - выкл | 1 - вкл)), Плеер(Озвучка часа(Температура/Новый час) : Озвучка действий(0 - выкл | 1 - вкл))
  • 04 - Время звука смены часа(Начало : Конец)(Выключить звук смены часа: начало = конец)
  • 05 - Время смены подсветки(Ночь : День)(Выключить смену яркости(включить датчик освещения): ночь = день)
  • 06 - Яркость индикаторов(Ночь : День)
  • 07 - Яркость подсветки(Ночь : День)
  • 08 - Яркость секундных точек(Ночь : День)
  • 09 - Коррекция датчика температуры(Коррекция : Сенсор(только отображение))
  • 10 - Настройка интервала и анимации автоматического отображения(Время в минутах(0 - выключить) : Анимация)
  • 11 - Настройка интервала и анимации антиотравления индикаторов(Время в минутах : Анимация)
  • 12 - Установка времени ожидания после выхода из сна(Ночь : День)(0 - выключить)

Таймер/секундомер: Клик по "дополнительной" кнопке
  • Клик по "дополнительной кнопке" - пуск/пауза
  • Клик по "средней кнопке" - вход в настройку таймера(только в режиме таймера)
  • Клик по "левой кнопке" или Удержать "левую кнопку" - режим секундомера
  • Клик по "правой кнопке" или Удержать "правую кнопку" - режим таймера
  • Удержать "дополнительной кнопку" - сброс таймера/секундомера
  • Удержать "среднюю кнопку" - возврат к режиму часов(таймер продолжает работать в фоне, секундомер ставится на паузу)

Настройка таймера: В режиме таймера - Клик по "средней" кнопке
  • Клик по "средней кнопке" - переключение разрядов ММ:СС(максимум 99:59)
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" или Удержать "дополнительной кнопку" - выход к таймеру

Радиоприёмник: Удерживать "дополнительную" кнопку(или клик по "дополнительной" кнопке, если таймер/секундомер отключен)
  • Клик по "дополнительной кнопке" - переключить ячейку памяти радиостанций
  • Клик по "средней кнопке" - настройка громкости(текущая громкость):
    • Клик по "левой/правой кнопке" - изменить громкость.
    • Клик по "средней кнопке" - выход к часам(радио останется включенным).
    • Клик по "дополнительной кнопке" - вернуться к радио.
  • Клик по "левой/правой кнопке" - изменить текущую частоту
  • Удержать "дополнительной кнопку" - настройка ячеек памяти радиостанций(запись в ячейке : номер ячейки):
    • Клик по "левой/правой кнопке" - выбрать номер ячейки.
    • Клик по "дополнительной кнопке" - сохранить текущую частоту в выбранную ячейку.
    • Удержать "дополнительной кнопку" - удалить данные из выбранной ячейки.
  • Удержать "среднюю кнопку" - выход к часам(радио выключится)
  • Удержать "левую/правую кнопку" - авто поиск станций вниз/вверх

Управление кнопками В РЕЖИМЕ ЧАСОВ:

  • Клик по "правой" кнопке отображает текущую дату, затем клик по "правой" кнопке переключает дату/год.
  • Клик по "средней" кнопке отображает текущий режим секундных точек, затем:
    • Клик по "правой" кнопке - переключает режим анимации смены минут(0 - выкл, 1 - случайная анимация, 2 - плавное угасание и появление , 3 - перемотка по порядку числа, 4 - перемотка по порядку катодов в лампе, 5 - поезд, 6 - резинка, 7 - ворота, 8 - волна, 9 - блики, 10 - испарение | 11 - игровой автомат)
    • Удержание "правой" кнопки во время отображения режима анимации смены минут(если нет дополнительной кнопки) - переводит в режим установки анимации смены секунд, выбор анимации осуществляется "левой" кнопкой.
    • Клик по "левой" кнопке переключает режим подсветки -
      • Для обычных светодиодов: (0 - выкл | 1 - статичная | 2 - динамичная(дыхание))
      • Для адресных светодиодов: (0 - выкл | 1 - статичная | 2 - дыхание | 3 - дыхание со сменой цвета при затухании | 4 - бегущий огонь | 5 - бегущий огонь со сменой цвета | 6 - бегущий огонь с радугой | 7 - бегущий огонь с конфетти | 8 - волна | 9 - волна со сменой цвета | 10 - волна с радугой | 11 - волна с конфетти | 12 - плавная смена цвета | 13 - радуга | 14 - конфетти)
    • Удержание "левой" кнопки во время отображения режима подсветки(для адресных светодиодов) - переводит в режим установки цвета, выбор цвета осуществляется "левой" кнопкой(войти можно только в режимах поддерживающих смену цвета - статичная, дыхание, бегущий огонь, волна)
    • Клик по "средней" кнопке - переключает режим точек(0 - выкл | 1 - статичная | 2 - динамичная(плавно мигает)), (для двух неоновых ламп)(3 - маятник), (для точек в индикаторах)(3 - мигающая | 4 - бегущая | 5 - змейка | 6 - резинка | 7 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 8 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки))
    • Клик по "дополнительной" кнопке - переключает режим анимации смены секунд(0 - выкл, 1 - плавное угасание и появление , 2 - перемотка по порядку числа, 3 - перемотка по порядку катодов в лампе)
  • Клик по "левой" кнопке отображает текущую температуру, затем клик по "левой" кнопке переключает температуру/давление/влажность.

Если есть вопросы/проблемы, или вы нашли баг, пишите в ЛС или ниже в теме.

Огромное спасибо psyx86 за тестирование, видео-обзоры и идеи для прошивки! Так-же есть версия плат для часов от psyx86 и плата-модуль для замены оптопар на транзисторы.
 
Изменено:

Helpers

★✩✩✩✩✩✩
21 Мар 2019
66
17
@Sergo_ST,а. Пин dht можно переназначить? У меня свободный D13, не шарю за программу и железо
 

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
@Helpers, Да, DHT можно назначить на любой свободный цифровой пин. Для использования D13 желательно отключить/выпаять светодиод L на ардуино.
 
  • Лойс +1
Реакции: Helpers

Helpers

★✩✩✩✩✩✩
21 Мар 2019
66
17
@Sergo_ST, можно ещё вопрос, мне попался модуль перемаркированный походу, тактирует 1 герц, а должно быть много больше, в прошивке надо что то менять? И поддерживает ли прошивка? Я в конфиге не нашел упоминания про такты
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
@Sergo_ST, а можете в будущих обновлениях добавить в ежечасный сигнал опциональное отбивание конкретного часа после мелодии в 12 часовом формате? (Например 11 часов - 11 гудков, 18 часов - 6 гудков)
 
  • Лойс +1
Реакции: Sergo_ST и pepino

Helpers

★✩✩✩✩✩✩
21 Мар 2019
66
17
У меня вопрос не совсем по теме, у меня есть модуль ds3231 который отстаёт за сутки секунд на 20-30 подключенные только по i2c, кто то пробовал такие модули подключать к шине через подтягивающие резисторы на +5в? Есть практические испытания? Я подключал только аудиопроцессор, который через раз работал без подтяжки, прокатило. Или если он спешит или отстаёт и кроме как калибровки через прошивку все с ним безнадежно? Я не заморачивался и ставил другой.
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
@Helpers, Если это именно модуль, а не отдельно микросхема, то подтяжка i2c к питанию у него уже должна быть на самом модуле (либо это модуль, который я не встречал), у самой атмеги внутренние подтяжки на 100 кОм, что маловато для стабильной работы, однако к ходу самого 3231 это отношения не имеет. Попробуйте керамический конденсатор 100 нФ - 1 мкФ по питанию модуля добавить, также сменить блок питания (может пульсации большие).
Кстати, если это полноразмерный китайский модуль с батарейкой CR2032, то следует проверить, не подключен ли + батарейки к +5 В через диод и резистор, если подключен, то настоятельно рекомендуется диод либо резистор убрать (CR2032 нельзя заряжать в отличие от LIR2032). Если питание чистое, но модуль отстаёт/спешит сильно, то тогда действительно брак микросхемы.
 
  • Лойс +1
Реакции: Helpers

psyx86

★★★★✩✩✩
31 Янв 2020
374
225
Omsk
кто то пробовал такие модули подключать к шине через подтягивающие резисторы на +5в?
Эти модули уже имеют подтяжку к питанию на своей плате, сопротивление 4.7к.
отстаёт за сутки секунд на 20-30
Такое отставание врятли программно удастся поправить. Скорее всего брак, которого становиться все больше
Воспользуйтесь советом @KennyZloj по поводу керамического конденсатора по питанию ближе к модулю.
Возможно разводка платы оказывает воздействие на конкретный модуль.
 
  • Лойс +1
Реакции: Helpers

Helpers

★✩✩✩✩✩✩
21 Мар 2019
66
17
Да уж, модуль точно погибший, про диод спасибо, в этот раз про него как раз забыл, кондеры на 100 нф я уже везде ставлю вдовесок, столкнулся с этим... Можете не тратить время, а сразу выкидывать такие модули..... Как делал раньше. Пин sqw совершенно не исправил ситуацию. У меня вчера когда его подкинул часы стали перескакивать на 47 часов, с 00.50 минут например.. прошивка 1.8.8 может совпадение конечно. Блок питания подкинул утром оригинальный Самсунг от цифровой видеокамеры. Дополнительно кондеры поставил как обычно на dht и ардуину.
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
Модуль то можно и не выкидывать, а плохую микросхемку с него сдуть и хорошую припаять ;)
 

ЗлойЛев

✩✩✩✩✩✩✩
20 Апр 2021
1
0
Всем добра! Подскажите пожалуйста, как изменить положение первого светодиода WS2812 (изменить порядок расположения на противоположный)? Что-то не нашел это в настройках.
 

psyx86

★★★★✩✩✩
31 Янв 2020
374
225
Omsk
@ЗлойЛев,
вкладка userConfig.h строка 122
C++:
#define BACKL_REVERSE 0            //реверс порядка светодиодов WS2812B(0 - нормальное отображение | 1 - реверсивное отображение)(только для светодиодов WS2812B)
 
  • Лойс +1
Реакции: ЗлойЛев

berrymore

✩✩✩✩✩✩✩
14 Июл 2022
14
0
Добрый день! Столкнулся с проблемой, часы на 6 ламп. Работают без проблем примерно час, затем переходят в странный режим, горят только первые 4 лампы - 0-1-0-0. Также на шестой цифра 1. Помогают только два долгих нажатия на кнопку меню, после первого нажатия горят только минутные лампы - 0-1, после второго часы переходят в нормальный режим работы. Куда копать? подскажите пожалуйста
 

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
@berrymore, Проблема с кнопкой или цепью кнопки(в данном случае средней), то что вы видите это основное меню, пункт меню 1.
Если у вас используется ИК приемник, возможно эта команда поступает от какого то другого пульта.
 

berrymore

✩✩✩✩✩✩✩
14 Июл 2022
14
0
@Sergo_ST, ИК приемника нет. Кнопки аналоговые, возможно действительно дело в них. А что могут означать цифры 0 - 1 - 0 - 0 на часовых и минутных лампах?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
@berrymore, Если аналоговые то могут ещё и наводки от чего-нибудь быть, нужно смотреть по разводке платы. Может быть непропай где-нибудь.
То что отображается на индикаторах я вам выше ответил - это первый пункт меню(звук кнопок или озвучка).
 
Изменено:

rdvsha

✩✩✩✩✩✩✩
31 Окт 2022
6
0
У меня работает на D1.Можно ли скорректировать показания температуры от DS18D20 в скетче. Если можно то как?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
@rdvsha, Пункт меню 09 - Настройка датчика температуры(Коррекция : Сенсор)
 

rdvsha

✩✩✩✩✩✩✩
31 Окт 2022
6
0
спасибо но я пока еще лох... как это сделать(скорректировать показания температуры от DS18D20) ? уж извините меня за это но япока нахожусь на уровне заливки скетча. вот в этом скетче nixieClock_2_v2.6.4_mod
 

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
@rdvsha, Это тема именно по альтернативной прошивке. Данный мод давно не поддерживается и насколько я помню никакой коррекции там никогда не было.
Запрос и отрисовка температуры находится в этой процедуре: sendNewTemp().
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
С BME280 странный баг заметил. Автопоказ температуры, влажности и давления отключен, вызываю их по нажатию "левой" кнопки. Показания температуры как бы запаздывают от её изменения в помещении. В помещении около 24-х, нажал показывает 21.3, потом нажимаю много десятков раз левую и среднюю кнопки туда-сюда, показывает с каждым нажатием всё выше температуру в итоге до 24.5. И спустя несколько часов показания держатся на актуальной величине (комнатная температура изменялась незначительно), так что это не саморазогрев датчика от частых обращений, а какой-то баг. На похолодание реагирует также, после многократных нажатий туда-сюда показываемая температура понемногу снижается.
 
Изменено:

MoonLight33

✩✩✩✩✩✩✩
16 Мар 2023
41
8
Russia, Moscow
подскажите пожалуйста мне такой момент. DFplayer можно использовать как будильник + озвучивать время/температуру/пункты меню. А есть ли возможность закачать на карту памяти свои мелодии и воспроизводить их по какой нибудь кнопке?
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
@MoonLight33, да, смотри config.h, там можно добавить мелодии будильника. После закачки в нужную директорию на сд-карте в файле количество их указать надо. По кнопке наверное прослушать там, где выбор мелодии будильника, но там вроде секунд 30 только прослушивается.

Config.h:
#define PLAYER_ALARM_FOLDER 5        //папка с озвучкой будильника(1..16)
#define PLAYER_ALARM_START 1         //первый трек будильника(1..255)
#define PLAYER_ALARM_MAX 3           //количество треков будильника(1..99)
 

MoonLight33

✩✩✩✩✩✩✩
16 Мар 2023
41
8
Russia, Moscow
@KennyZloj, Да, это я понимаю, но речь в моем вопросе идет скорее не об установке своих мелодий для будильника, а просто о возможности использовать DFPlayer для прослушивания музыки. Я так понимаю что такой возможности пока что нет?
 

KennyZloj

★✩✩✩✩✩✩
26 Апр 2023
15
11
@MoonLight33, Ну таки это прошивка часов, а не музыкальный центр. Возможность то есть, надо только в коде покопаться, тогда уж добавить кнопку наверное проводками на свободный порт атмеги. Мне dfplayer только с Китая ещё едет, в третьи часы его запихнуть собираюсь.