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

Sergo_ST

★★★★★★✩
15 Мар 2020
938
819
Рекомендуется длинные описания убрать под спойлеры
Альтернативная прошивка для различных проектов часов на ГРИ под 4/6 ламп.
Имеет большую гибкость настройки и немалый функционал на борту.

Актуальная версия прошивки находится здесь. Последняя версия 2.2.5 от 05.11.2024.

Видео-обзор прошивки:
Для настройки прошивки под другую разводку плат, отличающуюся от "Часов на ГРИ v2", необходимо указать пины подключения периферии в "connection.h" и настроить используемую периферию в "userConfig.h", "config.h".

Поддерживаются:
  • MH2024K-24
  • GD3200B
  • YX5200-24
  • AB23A797393.1-74
  • AB23A795250.1-74
  • AA19HFF859-94
  • TD5580A
Не поддерживаются:
  • MH2024K-16
  • AS21CN27OC
Connecting peripherals.png
Wireless_Sensor.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 часовой формат времени.
  • Переход на летнее/зимнее время(Только при использовании есп).
  • Будильник(Один или несколько).
  • Радиобудильник(При наличии модуля радио).
  • Автоматическое определение подключенного датчика температуры(Если выбрано несколько датчиков).
  • Второй датчик температуры(DHTxx или DS18x20) для "Улицы"(Требуется наличие есп).
  • Беспроводной WiFi датчик температуры(Требуется наличие есп).
  • Авто-показ температуры(Влажности/Давления).
  • Авто-показ даты/года.
  • Отображение метеоданных из погодного сервиса(Требуется наличие есп).
  • Отображение текущей температуры/давления/влажности.
  • Отображение текущей даты/года.
  • Режим сна(Отключение ламп через заданное время).
  • Упрощённый режим управления в режиме часов.
  • Меню настройки яркости и др. функций.
  • Быстрое меню для выбора анимации смены минут(секунд)/точек/подсветки.
  • Таймер - секундомер(Только при наличии доп. кнопки).
  • Радиоприёмник(Только при наличии доп. кнопки или есп).
  • Антиотравление ламп(3 варианта анимации, выбор из меню).
  • Мелодия смены часа(Или озвучка при использовании плеера).
  • Озвучка пунктов меню, времени и температуры.
  • Смена яркости по времени и по датчику освещённости.
  • Анимация глюков.
  • 10 режимов анимации авто-показа(Есть случайный режим).
  • 10 режимов анимации минут(Есть случайный режим).
  • 3 режима анимации секунд для 6-ти ламп.
  • 3 режима подсветки для обычных диодов и 15 для адресных WS2812B.
  • 5 режимов работы секундных точек (2 режим для двух неоновых ламп / 6 режимов разделительных точек).
  • Возможность создания собственных мелодий будильника.
  • Система контроля основных параметров часов(Ошибки).
  • Меню отладки(Для опытных пользователей).
  • Программирование кнопок ИК пульта из меню отладки.
  • Веб-интерфейс для настройки и мониторинга.
  • Обновление прошивки часов через веб интерфейс.
  • Добавить возможность выбора перехода на зимнее/летнее время в часах.
  • Добавить возможность воспроизводить музыку.
  • Добавить поддержку подключения двух дешефраторов к сдвиговому регистру.
  • Добавить поддержку декатрона вместо секундных неонок.

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

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

Если при работе часов возникла какая-то проблема, то при старте часов будет звуковой код, а на индикаторах отобразится код ошибки:
  • 0001 - Нет связи с модулем DS3231(модуль часов неисправен или проблемы с шиной i2c).
  • 0002 - Сбой осциллятора DS3231(батарейка модуля часов разряжена или проблемы с тактированием модуля часов).
  • 0003 - Слишком короткий сигнал SQW(во время работы часов были обнаружены помехи или неверный сигнал на SQW).
  • 0004 - Слишком длинный сигнала SQW(пропал сигнал SQW во время работы часов или сигнал отсутствовал при запуске).
  • 0005 - Выбранный датчик температуры не обнаружен(проверить подключение датчика температуры).
  • 0006 - Слишком низкое или слишком высокое напряжение питания(проверить источник питания).
  • 0007 - Сбой памяти EEPROM(повреждение данных, если ошибка будет повторятся слишком часто - износ EEPROM).
  • 0008 - Софтовая перезагрузка(говорит о нестабильности программы или об аппаратных проблемах с мк).
  • 0009 - Сбой работы преобразователя(регистры таймера были неожиданно изменены).
  • 0010 - Переполнение заполнения шим преобразователя(превышен верхний предел заполнения шим).
  • 0011 - Переполнение стека(утечка памяти).
  • 0012 - Переполнение тиков времени(основная программа не отвечает).
  • 0013 - Сбой работы динамической индикации(регистры таймера были неожиданно изменены или превышен предел регистра сравнения).
Если по какой-то причине нету сигнала от SQW или если во время работы сигнал он выйдет за рамки то часы перейдут на внутренний источник тактирования и по возможности будут синхронизироваться с модулем часов.
Для синхронизации хода секунд желательно подключить пин 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. Ждём окончания загрузки(появится надпись "Загрузка прошивки завершена").
web1.pngweb2.pngweb3.pngweb4.pngweb5.pngweb6.pngweb7.pngweb8.pngweb9.pngtemp8.png
  • После включения питания часов автоматически создаётся точка доступа "NixieClockAP"(после подключения к роутеру отключится через 5 мин).
  • С любого устройства(Смартфон, ПК и пр.) ищем сеть "NixieClockAP" и подключаемся к ней(Пароль по умолчанию 1234567890).
  • Далее с этого же устройства в браузере пишем в адресной строке: http://192.168.4.4/
  • Далее переходим во вкладку «Сетевые настройки» и в блоке «Локальная сеть WIFI» выбираем свой роутер из списка и вводим пароль(если нужной сети нет или ваша сеть скрыта, необходимо нажать на ссылку "Ручной режим").
  • При успешном соединении с роутером будет выдан IP адрес для доступа к веб интерфейсу по локальной сети(Далее всё управление в локальной сети будет именно по этому адресу).

Отладка: Удерживать "левую" кнопку при включении питания
Ввод пароля:
  • Клик по "средней кнопке" - переход между разрядами
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - подтвердить ввод пароля
Меню отладки:
  • Клик по "средней кнопке" - выбор пункта отладки
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - выход к часам
Пункты отладки:
  • 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 - подтверждение)
  • Войти в режим отладки(удерж. левой кнопки при подаче питания).
  • Выбрать пункт меню отладки 07(калибровка датчика освещенности).
  • Поставить часы в светлое место(на 1-3 сек).
  • Поставить часы в тёмное место(на 1-3 сек).
  • Клик средней кнопкой(выйти к выбору пунктов меню отладки).
  • Удержание средней кнопки(выйти из меню отладки и сохранить настройки).
Управление:
  • Клик по "средней кнопке" - выйти из режима программирования кнопок ИК пульта
  • Клик по "левой кнопке" - уменьшить значение номера кнопки ИК пульта
  • Клик по "правой кнопке" - увеличить значение номера кнопки ИК пульта
  • Удержать "среднюю кнопку" - сбросить текущую кнопку ИК пульта

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

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

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
Купил конструктор по этому проекту, продавец дал ссылку на этот форум. Часы спаял, с обычной прошивкой работает как надо, ставлю альтернативную не могу выставить время, держу правую кнопку цифры не начинают мигать, как на обычной прошивке. Если бы не правильно было спаяно на обычной прошивке тоже бы не работало? В чем может быть причина? В альтернативной прошивке есть файл с настройками, может в нем надо внести изменения? На плате написано проект Альфа. файлы с настройками из прошивки присланной продавцом.
 

Вложения

Изменено:

psyx86

★★★★✩✩✩
31 Янв 2020
412
235
альтернативной прошивке есть файл с настройками, может в нем надо внести изменения?
Не может, а нужно указывать подключение согласно разводки платы. Для этого у продавца спрашивайте подключение к микроконтроллеру и выставляйте их в скетче альтернативной прошивки.
Если не даст, то придется вызванивать дорожки
 

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
@alexios_1104, другая версия платы. Модуль часов не впаян, это фото из интернета.

Не может, а нужно указывать подключение согласно разводки платы. Для этого у продавца спрашивайте подключение к микроконтроллеру и выставляйте их в скетче альтернативной прошивки.
Если не даст, то придется вызванивать дорожки
В каком из файлов config.h или userConfig.h это прописывается. От продавца есть электрическая схема. Файлы прошивки он видимо правил, так как если прошить прошивку напрямую с сайта без изменений, ничего не работает пишет 01. Но видимо не все правильно в файлах. Есть описание, как редактировать эти файлы? Первый раз сталкиваюсь с такими часами и ничего не понятно.
 

Вложения

Изменено:

psyx86

★★★★✩✩✩
31 Янв 2020
412
235
@iv_sa,
  • в config.h указываете маску своей платы;
  • в connection.h указываете подключения;
  • в userConfig.h все настройки, строчки имеют комментарии.
Если нет опыта, будет очень сложно разобраться, обращайтесь к продавцу если он заявлял что прошивка подходит.
Она подходит к любой плате, но нужно знать что куда подключается
 
  • Лойс +1
Реакции: Sergo_ST

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
Почему не видит датчик ds18b20? По схеме вроде бы все правильно, но выдает ошибку 5 при включении. Подключен к d7. Этот датчик только в одном файле прописывается connection.h в строке
#define SENS_PIN 7 //пин сенсора температуры(для DS18xx и DHTxx)(0..13)(pin D) или еще где надо указать? Продавец не может помочь не знает.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
938
819
@iv_sa, Для сигнальной линии датчика температуры DS18B20 нужна подтяжка к +питнию часов. При этом на входе D7 не должно быть любой другой периферии, как программно так и в железе.
SENS_PORT_ENABLE должен быть установлен в 1 или 3.
 
Изменено:

NOKIA

✩✩✩✩✩✩✩
23 Сен 2023
5
0
Всем доброго времени суток!
Возник следующий вопрос для прошивки от Sergo_ST 2.0.6 в свободном доступе есть исходники плат только от psyx86?
Или может кто-то еще что-то годное выкладывал? Хотелось бы посмотреть проанализировать что народ делает, может что-то для себя из разных источников надергать. А то есть разные лампы ИН-1, ИН-2, ИН-8, ИН-12 в плане прошивки как я понял Sergo_ST сейчас лучший вариант, а вот с платой пока не понятно. Хочу что-то +- универсальное т.к. разные лампы и разное количество (4, 6 гри на циферблат), надежное (работало стабильно) и простое (будильники, WI-fi, термометры, барометры мне не особо нужны, максимум подсветка на адресных светодиодах и то приятным плюсом).
 

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
в плане прошивки как я понял Sergo_ST сейчас лучший вариант, а вот с платой пока не понятно.
Я недавно купил часы на ИН-12 в виде конструктора. До этого с этим проектом не сталкивался и не знал о этом форуме. Прошивку на ту плату, что купил можно было поставить любую и классическую и альтернативную. Классическая от Алекса Гайвера проще в настройке, но возможности ограничены. Как только захотел подключить датчик температуры, выбора не осталось только альтернативная прошивка. Те платы, что я покупал по альфа проекту, они универсальные, но нужна поддержка. Прошивку нужно подстраивать под платы, мне продавец помогал и присылал адаптированную под именно его платы прошивку. Без помощи продавца, я бы часы на альтернативной прошивке не запустил, очень там много настроек связанных со схемотехникой платы. Добавил термомодатчик ds18b20 прошивку нужно изменять, добавил вторую неонку опять менять настройки прошивки.
 

NOKIA

✩✩✩✩✩✩✩
23 Сен 2023
5
0
@iv_sa, В курсе про альфа проджект долго на Авито его платы разглядывал, вроде годный проект, но не мой вариант. Мне нужно чтоб именно были исходники чтобы все самому подробно изучить и в случае необходимости поменять и настроить. Сегодня плату от psyx86 изучал и понял что нижняя часть идеально для меня подходит, а верхнюю немного под себя переделаю и все.
У Sergo_ST и psyx86 все таки самый лучший проект по часам на ГРИ, только трудно на них выйти. Я пока о них узнал столько проектов пересмотрел AlexGyver, Anatoly Dayneko (feat. AG), technotracher (feat. Sergo_ST), Project alpha (feat. Sergo_ST).
 

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
@NOKIA, я когда покупал конструктор не очень имел представление о вариантах плат и о самой прошивке. Насколько я понял все платы отличаются разводкой элементов, поэтому и адаптировать прошивку под плату должен ее разработчик. В прошивке несколько файлов с настройками и если там они неправильные ничего работать не будет. По мне так проект сложный, если никогда с этим не сталкивался. Можно собрать, если тебе будут помогать и объяснять, хоть и была инструкция довольно подробная не все там соответствовало, платы у них разных версий, плата у меня и в инструкции разные. Про альтернативную прошивку ссылка на этот форум и все. Еще хочу сказать, что боковая подсветка обычными светодиодами, это ерунда, если корпуса нет или корпус прозрачный. Переделал на многоцветные светодиоды, под лампами. Но для монтажа многоцветных светодиодов нужен фен, поэтому этот вариант и не предлагается, как базовый в конструкторе.

@alexios_1104, я со своими часами решил проблему, продавец помог. Судя по вашему первому посту с фото в прошивке не верные настройки. Вам продавец не давал адаптированную под плату прошивку? У меня часы на 4 лампы и 2 неонки.
 

alexios_1104

✩✩✩✩✩✩✩
11 Июл 2023
3
0
@iv_sa,продавец оперативно подправил скетч под мою плату, но у меня нет пока возможности проверить.
 

psyx86

★★★★✩✩✩
31 Янв 2020
412
235
@NOKIA, исходники хорошей и идеальной платы вы вряд ли найдете бесплатно.
Это титанический труд проб и ошибок, который требует большого количества свободного времени.
Лично для себя я не создал идеальной платы, постоянно что то улучшаю.
В шапке выложил самый первый вариант, на начальном этапе развития прошивке, можете брать за основу и улучшать под себя.
Прошивка давно перешла из любительской в сложную, но практически каждая строчка имеет комментарии, который поможет разобраться.
Лично мои потребности она удовлетворяет на все 1000%, и ранее ни чего подобного в свободном доступе я не встречал.
Так что берите, изучайте.
 
  • Лойс +1
Реакции: vlastan, Sher и Sergo_ST

Sergo_ST

★★★★★★✩
15 Мар 2020
938
819
Выкладываю обновлённую схему всех основных подключений периферии, так-же в шапке темы она продублирована под спойлером "Схемы подключения периферии" и эта схема доступна для просмотра по ссылке с платами от @psyx86.
 

Вложения

  • Лойс +1
Реакции: Emiliano и vlastan

amezit

★✩✩✩✩✩✩
22 Мар 2021
19
11
@NOKIA, исходники хорошей и идеальной платы вы вряд ли найдете бесплатно.
Это титанический труд проб и ошибок, который требует большого количества свободного времени.
Лично для себя я не создал идеальной платы, постоянно что то улучшаю.
В шапке выложил самый первый вариант, на начальном этапе развития прошивке, можете брать за основу и улучшать под себя.
Прошивка давно перешла из любительской в сложную, но практически каждая строчка имеет комментарии, который поможет разобраться.
Лично мои потребности она удовлетворяет на все 1000%, и ранее ни чего подобного в свободном доступе я не встречал.
Так что берите, изучайте.
Согласен на все сто! Имя Sergo ST вписано золотыми буквами в историю часостроения, наряду с такими именами, каки, Носов и Славик. Но такая гибкость проекта, его развитие и возможность вхождения в него, встречается впервые. Творческих успехов Вам, Sergo ST, ну и всего наилучшего!
 

NOKIA

✩✩✩✩✩✩✩
23 Сен 2023
5
0
@psyx86,Спасибо вам за то что выложили в свободный доступ свою плату, это очень сильно помогло разобраться и вникнуть в тему. Сейчас, спустя 2 дня ее переделки под себя, я понимаю что мне придется менять практически все и чем дольше я этим занимаюсь тем чаще мне приходит мысль, "а не проще ли начать с нуля?".
Думал посмотрю видос Гайвера, закажу себе все и соберу конструктор, готово.
В итоге: Как работать в EasyEDA?, габариты и номиналы компонентов, Зачем нужны подтягивающие резисторы?, шинаi2c?, нужны ли подтягивающие резисторы если они уже есть в модулях?, схемы модулей, как все впихнуть в плату 100х100 чтоб китайцы сделали ее за 2$, нужна ли мне эта пищалка которая занимает пол платы?, а может нафиг оптопары и развести все сразу на транзисторы?
Но это оказалось очень интересно.
 

MoonLight33

✩✩✩✩✩✩✩
16 Мар 2023
53
9
Russia, Moscow
@NOKIA, вы еще забыли самый главный в нынешние времена вопрос)
Где именно заказать плату, ведь JLCPCB не доставляет в РФ (если вы конечно из РФ)
А те кто доставляет берут немного (или много) больше чем 2$ за плату 100х100 мм =(
 

NOKIA

✩✩✩✩✩✩✩
23 Сен 2023
5
0
@MoonLight33,А вот этого я не знал, блин, у меня все решения были чтоб впихнуть в эти несчастные 100х100. И я прям рассчитывал на JLCPCB.
 

MoonLight33

✩✩✩✩✩✩✩
16 Мар 2023
53
9
Russia, Moscow
@NOKIA, 100х100 в любом случае будет дешевле, где бы вы не заказывали (есть посредники разные, есть сервисы которые доставляют в РФ), но будет дороже чем 2$
 

NOKIA

✩✩✩✩✩✩✩
23 Сен 2023
5
0
Я смотрю код и там следующие строки:

//Дешифратор ламп
#define DECODER_1 3 //пин дешефратора X1(0..3)(pin A)
#define DECODER_2 1 //пин дешефратора X2(0..3)(pin A)
#define DECODER_3 0 //пин дешефратора X4(0..3)(pin A)
#define DECODER_4 2 //пин дешефратора X8(0..3)(pin A)

Не могу понять к чему относятся в комментарии X1, X2, X4, X8?
Посмотрел распиновку К155ИД1 и SN74141 там все совсем по другому.

123.png


Заранее прошу прощения если лезу не в свое дело, но если я все правильно понял, чтобы было понятнее можно как-то так обозначить:
//Дешифратор ламп
#define DECODER_1 3 //пин дешифратора A0/A (0..3)(pin A)
#define DECODER_2 1 //пин дешифратора A1/B (0..3)(pin A)
#define DECODER_3 0 //пин дешифратора A2/C (0..3)(pin A)
#define DECODER_4 2 //пин дешифратора A3/D (0..3)(pin A)
И на схеме:
321.PNG
 

Вложения

Sergo_ST

★★★★★★✩
15 Мар 2020
938
819
@NOKIA, Их просто где как обозначают...
Всё это одно и тоже - X1/A0/A, X2/A1/B, X4/A2/C, X8/A3/D.

Вот даташит, тыц. Вся информация бралась оттуда. В схеме обозначения поправим.
 
Изменено:

iv_sa

✩✩✩✩✩✩✩
14 Сен 2023
7
0
Сделал корпус, теперь можно пользоваться. Часы периодически сами показывают температуру, поочередно со временем, а дату нет. Для даты нужно нажимать кнопку. Автопоказа даты нет?
Светодиодная подсветка красивая, но очень яркая, ночью с ней невозможно, отключил ее совсем. Днем можно было бы подсветку использовать, не очень разобрался можно ли настроить отключение подсветки по времени на ночь и ее автоматическое включение утром?
Термометр ds18b20 сделал выносной, датчик использую китайский с проводом с защитной металлической гильзой. Сделал подключение датчика через трехконтактный разъем для наушников. На проводе датчика штекер, на корпусе часов гнездо.
Также заказал bme280 его тоже нужно наружу выносить, но это отдельная плата. При наружном использовании на плату bme280 нужна защита. Готового датчика с проводом и защитой, как ds18b20 не нашёл.
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
938
819
@iv_sa, Что отображать в автопоказе задаётся в userConfig.h - AUTO_SHOW_MODES и AUTO_SHOW_TIMES.
Для отключения подсветки необходимо установить ночную яркость 0 в основном меню - пункт 7.
 

olegvs2002

✩✩✩✩✩✩✩
28 Ноя 2022
34
4
Доброе утро. Подскажите кто прошивал esp8266, можно-ли в прошивке указать gpio0 и gpio2 в качестве scl и sda так как других выведенных пинов у неё нет. Знаю что gpio0 замыкается на землю для входа в режим прошивки, это не отразится на последующей работе? Спасибо.