Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #28

    Часы на RTC DS3231, с расширенными функциями v3

    Продолжение проекта часов Часы на RTC DS3231, с расширенными функциями. После наработок в программе Универсальный таймер по управлению устройством с помощью всего трёх кнопок, пришёл к мнению, что такое управление необходимо внедрить в программу часов, созданных ранее.


    Описание

    Предыдущий проект #21 Часы на RTC DS3231, с расширенными функциями подвергся сильнейшей переработке и поэтому решил под этот проект выделить отдельную страницу. Схема упростилась благодаря тому, что для управления используется всего три кнопки:

    • [MODE] - Настройка
    • [MINUS] - Убавить [-]
    • [PLUS] - Прибавить [+]

    Переход по пунктам меню параметров настройки осуществляется по нажитаю на кнопку [MODE]. Во 2-м разряде индикатора выводится номер параметра. Далее каждый параметр может настраиваться кнопками [MINUS] и [PLUS]. Значение параметра отображается в 3-м и 4-м разрядах индикатора. Всего возможно настраивать 8 параметров:

    1. Активность будильника 0|1
    2. Установка часов будильника 0...23
    3. Установка минут будильника 0...59
    4. Настройка часов 0...23
    5. Настройка минут 0...59
    6. Яркость индикатора 0...7
    7. Коэф. коррекции температуры для DS3231 +/-10° => 0...20.
      Значение температуры вычисляется через отнимание 10, так:
      –1° => установить 9   => 9-10 = -1°
      +1° => установить 11 => 11-10 = +1°
    8. Коэффициент коррекции давления +/-4.5 мм рт.ст. => 0..99.
      Значение коррекции вычисляется через отнимание 50 и деление на 10, так:
      +0.5 mm => установить 50 => 55-50 = 5 / 10 = +0.5 mm
      -0.5 mm => установить 40 => 45-50 = -5 /10 = -0.5 mm

    Индикация текущих значений при mode = 0:

    • Время с DS3231
    • Температура с DS1820/DS3231
    • Давление с BMP280

    Выход из меню настройки параметров осуществляется через выбор mode = 0 (следующее нажатие [MODE] после 8-го параметра) или автоматически через 16 секунд бездействия в меню настройки параметров.



    Схема часов

    Схема часов проще, чем в предыдущем проекте. Убрал лишние кнопки. Теперь осталось всего три кнопки для полного управления настройками часов. В остальном схема подобная предыдущим. Маленькая особенность: подключил управление индикатором к контактам 2 и 3 Ардуино.

    Схема электрическая принципиальная для скетча #28
    Pic 1. Схема электрическая принципиальная для скетча #28


    Перечень элементов

    1. U1 – Arduino UNO R3, Arduino Pro Mini, LGT8F328P, WAVGAT Nano или другое.
    2. U2 – Модуль питания AC-DC на 5...6 В.
    3. U3 – Модуль стабилизатора на +3,3 В, если нет на плате Arduino.
    4. U4 – Модуль датчика абсолютного давления BMP280 (допустимо без него).
    5. DD1 – Датчик температуры семейства DS1820 (допустимо без него).
    6. RTC1 – Модуль реального времени DS3231.
    7. R1 – Резистор 4.7 кОм (при наличии датчика DS1820).
    8. R2 – Резистор 10 кОм (4.7кОм...12кОм).
    9. HL1 – Дисплей 4-х разрядный 7-и сегментный TM1637.
    10. HL2 – Светодиод красный.
    11. SA1 – Выключатель (любой).
    12. SB1...SB3 – Микрокнопка (любая).
    13. BA1 – Buzzer активный.


    Скетч часов

    Скетч часов претерпел сильные изменения, написаны новые функции вывода на индикатор. Постарался сделать всё более понятным и интуитивным. Главная особенность программы в том, что в неё заложена условная компиляция и автоматическое определение подключенных устройств (датчиков).

    Условная компиляция позволяет легко перенастраивать скетч под любой используемый МК. Работоспособность программы проверена на следующих МК:

    • Arduino Uno R3;
    • Arduino Nano, Arduino Pro Mini;
    • LGT8F328P *, WAVGAT Pro Mini *;
    • WAVGAT Nano *.

    Ниже на фото все проверенные платы Arduino, кроме Arduino Uno R3 (в кадр не вошла).

    Проверенные платы
    Pic 2. Проверенные платы

    Скетч написан так, что при наличии датчиков DS1820 и BMP280, будут выводится значения с них, но если этих датчиков нет, или нет какого-то любого из них, то выводиться значения будут только с подключенных. Если не подключен внешний датчик семейства DS1820, то температура будет выводиться со встроенного датчика температуры модуля реального времени. Проверка наличия подключенных датчиков осуществляется при включении. До включения можно подсоединять или отсоединять датчики, а после включения программа сама определит наличие датчиков и будет выводить их значения при индикации.

    Весь код подробно закомментирован. Хочу лишь обратить внимание, что запись/чтение значения в/из EEPROM были проверены со всеми платами, кроме WAVGAT Nano *. Вначале запись в эту плату не удавалась, а потом не стал добавлять код для этой платы для работы с EEPROM.

    Сам скетч и библиотеки можно скачать ниже в подразделе Приложение.



    Конструкция часов

    Пока конструкции под этот вариант нет, но можно использовать, конструкцию первого варианта часов, только переделать узел кнопок и добавить светодиод HL2 (активность будильника) и активный буззер для сигнала будильника.

    Макетирование на плате WAVGAT Pro Mini. Долго она ждала своего часа улыбка. В итоге даже она заработала и получается, что можно использовать любую доступную плату Arduino вплоть до самых бюджетных вариантов.

    Макет на <i>WAVGAT Pro Mini</i>
    Pic 3. Макет на WAVGAT Pro Mini

    Приложение

    Используемые библиотеки и программы:

    В заключение можно сказать, что это, на данный момент, самая лучшая программа часов, в которой реализованы расширенные функции и, которая работает со всеми имеющимися у меня разновидностями Arduino и их клонами. Очень мне это нравится!

    2022-05-12
    Спасибо за внимание, Анатолий Беляев

    Yoomoney.ru
    Есть возможность другим способом оказать помощь на развитие сайта


    . Mr.ALB
    Предыдущая страница Страница 29