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

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

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

     

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

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

    Этот проект является продолжением раннего проекта часов Часы на RTC DS3231 и TM1637. По просьбе моего знакомого Константина К. добавил вывод на экран дисплея температуру. А потом вспомнил, что читатели сайта просили добавить будильник, что и сделал. Потом дошла очередь и до барометра. Получились не обычные такие часы, а часы с расширенными функциями улыбка.


    При модернизировании предыдущего проекта #8 Часы на RTC DS3231 и TM1637 вышло, что проще написать всё по новому, поэтому программа была написана заново. Схема тоже усложнилась добавлением разными компонентами.



    Схема часов

    Схема часов немного сложнее, чем в предыдущем проекте. Добавлен активный Buzzer для сигнала будильника. Добавлен светодиод для индикации активности будильника. Добавлена ещё одна кнопка для установки будильника. Добавлен датчик температуры DS1820. Добавлен модуль абсолютного давления BMP280. Замечу, что для него требуется напряжение питания +3,3В. Если использовать Arduino Uno R3 или Arduino Nano, то у них на платах уже имеется стабилизатор на +3,3В. Если же использовать Arduino Pro Mini, то придётся добавить такой стабилизатор дополнительно или, как вариант, запитать датчик от +5В через два последовательно соединённых диода 1N4148.

    Блок питания используется импульсный, обратноходовый. Выдаёт +6.5 В. Это напряжение подаётся на стабилизатор Arduino Pro Mini – на контакт RAW. Можно использовать БП на +5В, но тогда подавать питание нужно на контакт VCC.

    Выключатель SA2 можно не ставить. Работающий будильник можно отключить нажав на кнопку ALARM.

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


    Монтажную схему см. ниже. Резистор R2 можно ставить от 4.7кОм до 12кОм. Чем больше сопротивление, тем тусклее будет светить светодиод HL2. Вполне нормально светит при R2 = 10кОм.

    Схема монтажная для скетча #21
    Pic 2. Схема монтажная для скетча #21


    Скетч часов

    Далее представлен скетч. Рассмотрю некоторые его особенности. В предыдущем проекте у автора для мигания точек используется сигнал с модуля реального времени с контакта SQW, который подаётся на контакт 2 Ардуино. Но оказывается не все модули имеют такой сигнал и чтобы сделать программу более универсальную – отказался от этого и мигание точек делаю за счёт Timer1.

    Так как в модуле реального времени имеется встроенный датчик температуры, то используем его, если не подключен внешний датчик семейства DS1820. При включении часов идёт тестирование подключения датчика температуры DS1820. При его наличии температура выводится с него.

    Во время начального теста, если датчик DS1820 не подключен, то на индикаторе выводится 2 секунды тип 3231 встроенного датчика температуры DS3231. Если датчик температуры DS1820 подключен, то выводится его тип 1820 2 секунды. После чего выводится разрешение датчика в 3-м и 4-м разрядах 2 секунды. Максимальное разрешение датчика DS1820 равно 12 бит. Далее, если подключен датчик абсолютного давления BMP280, то на индикаторе на 2 секунды выводится сообщение 280P. Если в схеме нет датчика абсолютного давления BMP280, то программа переходит к выводу времени.

    Весь код подробно закомментирован, с его пониманием, надеюсь, проблем не будет. Хочу лишь обратить внимание, что когда происходит запись значения в EEPROM, то индикатор гашу на 300 мс, чтобы видеть, что команда записи отработала – индикация записи.

    Для вывода отрицательных температур с датчика DS1820 была сделана доработка. Теперь если использовать внешний подключаемый датчик, то можно измерять температуру и за пределами жилища. Эта доработка в опубликованном скетче.

    2021-12-22

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


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

    1. U1 – Arduino UNO R3, Arduino Pro Mini или другое.
    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. SA2 – Выключатель (любой).
    13. SB1...SB5 – Микрокнопка (любая).
    14. BA1 – Buzzer активный.

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

    Законченной конструкции на данный момент у меня нет. Всё собиралось на макетных панельках с использованием Arduino Uno R3. Возможно, что впоследствии, как будет сделана законченная конструкция, то тут добавлю фото реализации.

    Далее несколько фото макетного варианта.

    Мой макетный вариант. Вывод времени
    Pic 3. Мой макетный вариант. Вывод времени
    Мой макетный вариант. Вывод температуры
    Pic 4. Мой макетный вариант. Вывод температуры
    Мой макетный вариант. Вывод атмосферного давления
    Pic 5. Мой макетный вариант. Вывод атмосферного давления

    Константин К. сделал свой вариант этих часов с использованием mp3 проигрывателя, который озвучивает заданные часы. Вместо обычного семисегментного индикатора сделан самодельный на красных 5 мм светодиодах. Ниже на ряде фото реализация конструкции.

    Часы с mp3 проигрывателем. Вывод времени
    Pic 6. Часы с mp3 проигрывателем. Вывод времени
    Часы с mp3 проигрывателем. Вывод температуры с датчика DS18B20
    Pic 7. Часы с mp3 проигрывателем. Вывод температуры с датчика DS18B20
    Часы с mp3 проигрывателем. Вывод атмосферного давления
    Pic 8. Часы с mp3 проигрывателем. Вывод атмосферного давления

    Далее фото конструкции. Как всё устроено внутри.

    Часы с mp3 проигрывателем. Платы часов
    Pic 9. Часы с mp3 проигрывателем. Платы часов
    Часы с mp3 проигрывателем. Платы часов
    Pic 10. Часы с mp3 проигрывателем. Платы часов
    Часы с mp3 проигрывателем. Задняя крышка снята
    Pic 11. Часы с mp3 проигрывателем. Задняя крышка снята
    Часы с mp3 проигрывателем. Задняя крышка и панель с платами
    Pic 12. Часы с mp3 проигрывателем. Задняя крышка и панель с платами
    Часы с mp3 проигрывателем. Самодельный индикатор
    Pic 13. Часы с mp3 проигрывателем. Самодельный индикатор

    Сзади на крышке установлены кнопки управления и отверстия под звуковой излучатель.

    Часы с mp3 проигрывателем. Вид сзади
    Pic 14. Часы с mp3 проигрывателем. Вид сзади
    Часы с mp3 проигрывателем. Вид индикатора в темноте
    Pic 15. Часы с mp3 проигрывателем. Вид индикатора в темноте


    Часы с mp3 проигрывателем

    Продолжительность фильма 0:39 [мм:сс]

    В этом видео демонстрация работы звукового сигнала в конструкции Константина К.


    Доработка

    Переделка на вариант без bmp280. Тогда скетч использует всего 10066 байт и его можно записать в AVR ATMega168P. Этот скетч можно скачать по ссылке ниже.

    Доработка скетча для вывода на индикатор отрицательных температур. Если датчик DS1820 сделать внешним, то можно измерять внешние температуры в диапазоне от -55°С до +125°С. Чтобы этот скетч работал, скачайте изменённую библиотеку <TM1637_mralb.h>, которая находится в архиве: my_Clock_Lib.rar

    Константик К. выявил ошибку: При настройке яркости возникает отставание времени из-за обнуления секунд. Ошибка устранена.

    Использование новой библиотеки <TM1637new.h>. Улучшение включения будильника. Оптимизация кода.

    Доработка скетча для Константина К. – часы с mp3 и пультом, см. в Приложении konst_clock_pult_mp3_4.rar.

    Создание на основе новой библиотеки <TM1637new.h> вариантов часов: с датчиком давления BMP280, с датчиком температуры DS1820. Все скетчи опробованы на Arduino UNO, Arduino Nano, LGT8F328P.

    В новой библиотеке выявлен глюк – не выводится 0. При использовании функции void TM1637::displayInt(int value).

    Вывод значений: времени, температуры, давления привязан к секундам, что уменьшило объём программы: Скетч использует 15342 байт (51%) памяти устройства.

    Проверка звука при установке будильника.

    Изменил программу под единичный вывод температуры и давления. Смотрите архивы с этой же меткой времени.

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


    Приложение

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

    2021-12-04
    2021-12-22
    2022-01-05
    2022-02-02
    2022-04-02
    Спасибо за внимание!
    Анатолий Беляев

    На развитие сайта и проектов Arduino

    Ниже на форме выберите/укажите сумму и источник перевода:
        Кошелёк Ю-money или
        Карта банка: Visa, MasterCard, МИР, Alfa-bank


    Yoomoney.ru (Яндекс.Деньги)  
    9516

    Другим способом оказать помощь на развитие сайта.


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