8 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Урок 19

Урок 19. RTC часы с будильником

В предыдущем уроке 18, мы подключили Trema RTC часы реального времени с Trema кнопками и LCD I2C дисплеем к arduino Uno, написали скетч, для установки времени при помощи кнопок.

Теперь расширим функционал получившихся часов, добавив к ним функцию будильника. А код, который будет выполняться при срабатывании будильника выведем в отдельную функцию «Func_alarm_action()», чтоб Вы смогли легко его найти и изменить. Например, при срабатывании будильника, открывать жалюзи, включать свет или музыку, включить через реле тостер или кофе-машину и т.д.

Нам понадобится:

  • Arduino х 1шт.
  • RTC модуль Trema на базе чипа DS1307 х 1шт.
  • LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт.
  • Trema Shield х 1шт.
  • Trema-модуль i2C Hub х 1шт.
  • Trema-модуль кнопка c проводами х 3шт.
  • Шлейф «мама-мама»для шины I2С х 2шт.
  • Trema-модуль зуммер х 1шт.
  • Trema-модуль светодиод х 1шт. (белый, синий, красный, оранжевый или зелёный)

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека iarduino_RTC (для подключения RTC часов реального времени DS1302, DS1307, DS3231)
  • Библиотека LiquidCrystal_I2C_V112 (для подключения дисплеев LCD1602 по шине I2C)

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.

RTC модуль Trema на базе чипа DS1307 / LCD дисплей на базе чипа LCD1602Arduino Uno
GNDGND
Vcc+5V
SDA (Serial DAta)A4
SCL (Serial CLock)A5

Подключение кнопок: кнопка «SET» к выводу 2, кнопка «UP» к выводу 3 и копка «DOWN» к выводу 4.

Зуммер подключаем к выводу 5, а светодиод к выводу 13 (дублируя встроенный в arduino).

Алгоритм работы кнопок следующий:

  • В режиме вывода даты/времени/будильника (обычный режим):
    • Кратковременное нажатие на кнопку SET переключает режимы вывода: даты/времени/будильника
    • Удержание кнопки SET переводит часы в режим установки даты/времени/будильника (зависит от того, каким был режим вывода)
    • Кнопки UP и DOWN, в режиме вывода будильника, активируют/деактивируют будильник.
      Если будильник активен, то в правом верхнем углу экрана появляется значок будильника.
  • В режиме установки даты/времени/будильника:
    • Кратковременное нажатие на кнопку SET — переход между устанавливаемыми параметрами (сек, мин, час, дни, мес, год, д.н.)
    • Удержание кнопки SET выводит часы из режима установки
    • Каждое нажатие на кнопку UP увеличивает значение устанавливаемого параметра даты или времени
    • Каждое нажатие на кнопку DOWN уменьшает значение устанавливаемого параметра даты или времени
  • Во время работы сигнализации будильника:
    • Удержание любой кнопки в течении 1 секунды, отключает сигнализацию (без выполнения их действий, в любом режиме)

Код программы:

Работа кнопок, вывод и установка времени, описывались в уроке 18, в этом уроке рассмотрим работу будильника:

В начале кода добавляем две константы: PIN_alarm_TONE и PIN_alarm_LED, указывающие номера выводов зуммера и светодиода.
А также добавляем четыре переменные: VAR_alarm_MIN , VAR_alarm_HOUR , VAR_alarm_FLAG1 и VAR_alarm_FLAG2 .

  • VAR_alarm_MIN — переменная в которой хранится значение минут, при котором сработает будильник (по умолчанию 0 минут)
  • VAR_alarm_HOUR — переменная в которой хранится значение часов, при котором сработает будильник (по умолчанию 0 часов)
  • VAR_alarm_FLAG1 — флаг разрешения работы будильника, false — не активен, true — активен (по умолчанию true — активен)
  • VAR_alarm_FLAG2 — флаг указывающий на то, что будильник сработал «сигнализация» (по умолчанию false — не сработал)

Последняя переменная которую мы добавили — MAS_alarm_SYM, она содержит изображение символа будильника для вывода на дисплей.

В функции loop, после вывода информации на дисплей, добавляем проверку: не пора ли включить будильник?

  • если будильник включён (установлен флаг VAR_alarm_FLAG1)
  • если в текущем времени 0 секунд (time.seconds==00)
  • если количество минут текущего времени (time.minutes) равно количеству минут установленных в будильнике (VAR_alarm_MIN)
  • если количество часов текущего времени (time.Hours) равно количеству часов установленных в будильнике (VAR_alarm_HOUR)
    то устанавливаем флаг VAR_alarm_FLAG2 (указывающий на то, что будильник сработал)
  • если установлен флаг VAR_alarm_FLAG2, то запускаем действия будильника (действия описаны в функции Func_alarm_action)
    Так как проверка будильника и запуск функции Func_alarm_action() находится внутри условия if(millis()%1000==0)<. >, то действия будильника будут выполняться один раз в секунду.

Теперь всё готово для создания полного кода:

Разберемся в коде действий будильника:

Действия будильника описаны в функции Func_alarm_action().

В этой функции мы включаем светодиод, далее подаём три коротких звуковых сигнала (с частотой 2000Гц, длительностью и паузой 100мс), после чего выключаем светодиод.

Если Вам необходимо выполнить действие будильника однократно, а не каждую секунду после его срабатывания, то начните выполнение действий со сброса флага VAR_alarm_FLAG2, присвоив ему значение false.

DS1307 – это модуль, который используется для отсчета времени. Он собран на основе микросхемы DS1307ZN, питание поступает от литиевой батарейки для реализации автономной работы в течение длительного промежутка времени. Батарея на плате крепится на обратной стороне. На модуле имеется микросхема AT24C32 – это энергонезависимая память EEPROM на 32 Кбайт. Обе микросхемы связаны между собой шиной I2C. DS1307 обладает низким энергопотреблением и содержит часы и календарь по 2100 год.

Модуль обладает следующими параметрами:

  • Питание – 5В;
  • Диапазон рабочих температур от -40С до 85С;
  • 56 байт памяти;
  • Литиевая батарейка LIR2032;
  • Реализует 12-ти и 24-х часовые режимы;
  • Поддержка интерфейса I2C.

Модуль оправдано использовать в случаях, когда данные считываются довольно редко, с интервалом в неделю и более. Это позволяет экономить на питании, так как при бесперебойном использовании придется больше тратить напряжения, даже при наличии батарейки. Наличие памяти позволяет регистрировать различные параметры (например, измерение температуры) и считывать полученную информацию из модуля.

Взаимодействие с другими устройствами и обмен с ними информацией производится с помощью интерфейса I2C с контактов SCL и SDA. В схеме установлены резисторы, которые позволяют обеспечивать необходимый уровень сигнала. Также на плате имеется специальное место для крепления датчика температуры DS18B20.Контакты распределены в 2 группы, шаг 2,54 мм. В первой группе контактов находятся следующие выводы:

  • DS – вывод для датчика DS18B20;
  • SCL – линия тактирования;
  • SDA – линия данных;
  • VCC – 5В;
  • GND.

Во второй группе контактов находятся:

  • SQ – 1 МГц;
  • DS ;
  • SCL;
  • SDA;
  • VCC;
  • GND;
  • BAT – вход для литиевой батареи.

Для подключения к плате Ардуино нужны сама плата (в данном случае рассматривается Arduino Uno), модуль часов реального времени RTC DS1307, провода и USB кабель.

Чтобы подключить контроллер к Ардуино, используются 4 пина – VCC, земля, SCL, SDA.. VCC с часов подключается к 5В на Ардуино, земля с часов – к земле с Ардуино, SDA – А4, SCL – А5.

Для начала работы с модулем часов нужно установить библиотеки DS1307RTC, TimeLib и Wire. Можно использовать для работы и RTCLib.

Проверка RTC модуля

При запуске первого кода программа будет считывать данные с модуля раз в секунду. Сначала можно посмотреть, как поведет себя программа, если достать из модуля батарейку и заменить на другую, пока плата Ардуино не присоединена к компьютеру. Нужно подождать несколько секунд и вытащить батарею, в итоге часы перезагрузятся. Затем нужно выбрать пример в меню Examples→RTClib→ds1307. Важно правильно поставить скорость передачи на 57600 bps.

При открытии окна серийного монитора должны появиться следующие строки:

Будет показывать время 0:0:0. Это связано с тем, что в часах пропадает питание, и отсчет времени прекратится. По этой причине нельзя вытаскивать батарею во время работы модуля.

Чтобы провести настройку времени на модуле, нужно в скетче найти строку

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

Настройка произведена корректно и дополнительно перенастраивать часы реального времени не придется.

Считывание времени. Как только модуль настроен, можно отправлять запросы на получение времени. Для этого используется функция now(), возвращающая объект DateTime, который содержит информацию о времени и дате. Существует ряд библиотек, которые используются для считывания времени. Например, RTC.year() и RTC.hour() – они отдельно получают информацию о годе и часе. При работе с ними может возникнуть проблема: например, запрос на вывод времени будет сделан в 1:19:59. Прежде чем показать время 1:20:00, часы выведут время 1:19:00, то есть, по сути, будет потеряна одна минута. Поэтому эти библиотеки целесообразно использовать в случаях, когда считывание происходит нечасто – раз в несколько дней. Существуют и другие функции для вызова времени, но если нужно уменьшить или избежать погрешностей, лучше использовать now() и из нее уже вытаскивать необходимые показания.

Для того, чтобы не возникало проблем с подключением Arduino, используется джек на 2.1 мм, к которому припаены контакты. В боксе сделано отверстие, джек посажен на клей. Теперь подключение Arduino не составляет проблем.

Батарейка (крона) на 9 В просто устанавливается на заднюю часть бокса.

Если вы обратили внимание, в боксе есть еще одно отверстие. Это была первая неудачная попытка. Джек в это отверстие не поместился.

Наручные часы на ардуино. LCD часы, будильник и таймер с детектором движения на Arduino. Подключение часов реального времени

Arduino ARDSEA (Ардуино) запись закреплена
Arduino ARDSEA (Ардуино) запись закреплена
Arduino ARDSEA (Ардуино) запись закреплена
Arduino ARDSEA (Ардуино) запись закреплена

Друзья, каналу на Ютуб исполнилось 2 года!

Вот и пролетел очередной год. За этот год было сделано более 30 проектов, выпущено 26 видео проектов и море постов в группе))
На канале растет количество просмотров, что несомненно радует)
А впереди еще больше проектов, которые перерастают из простых в сложные)
Показать полностью…
Ардуино по силам выполнить почти любую задачу по автоматизации жизни и я это доказываю!)

Если есть пожелания и предложения — ОБРАЩАЙТЕСЬ!

А вот список проектов в видео:
Первый год:
1. Часы с термометром и гигрометром на ардуино
2. Часы с энкодером на ардуино
3. Часы с термометром и гигрометром на ардуино
4. Часы-будильник на ардуино
5. Копилка для монет на ардуино
6. Термометр на термисторе ТТС-103
7. Музыкальная игрушка на ардуино
8. Весовой индикатор на ардуино
9. Замок Rfid на ардуино
10. Копилка на ардуино
11. OLED дисплей, тест на ардуино
12. Датчик препятствий YL-63 для ардуино в действии
13. Cенсорная кнопка и вентилятор
14. Дальномер на датчике HC SR04
15. Автоматический нагреватель/охладитель на ардуино
16. Проверка датчика движения HC-SR501
17. УЗ дальномер с лазерным прицелом
18. Прошивка ардуино конвертером
19. Регулятор оборотов коллекторного двигателя на ардуино
20. Кодовый замок на ардуино
21. Управление сервоприводом по радиоканалу джойстиком (часть 1)
22. Тахометр для вентилятора
23. Красивое меню для дисплея 1602 на ардуино
24. Управление сервоприводом с помощью джойстика на ардуино
25. Управление NodeMCU по WI-FI смартфоном
26. Гравер на ардуино (часть 1)
27. драйвер шагового двигателя uln2003 для ардуино
28. Красивое меню для дисплея LCD 2004 на ардуино
29. Необычные часы на адресной ленте WS2812B
30. Фоновая подсветка для монитора на ардуино

Второй год:
31. Модуль плеера DFPlayer без ардуино
32. Управление лазером джойстиком на ардуино
33. Управление сервоприводом по блютуз на ардуино
34. Управляем ардуино по блютуз
35. Подключение акселерометра к ардуино
36. Простая радиоуправляемая модель без ардуино
37. Кормушка для аквариумных рыбок на ардуино
38. Термометр на 800 градусов на ардуино
39. Делаем банковские карты для монополии на ардуино
40. Часы с будильником на ардуино
41. Радиомаячок на ардуино
42. Гравер на ардуино (часть 2)
43. Полив растений на модулях без ардуино
44. Высоковольтный генератор на ардуино
45. Увлажнитель воздуха на ардуино
46. Самый дешевый ноут до 200$ — Zeuslap (распаковка)
47. Настройка модуля esp-01 (esp8266)
48. Камера видеонаблюдения на основе ESP32-cam
49. Телефон 6 дюймов за 4 тысячи (краткий обзор смарта с Али)
50. Часы с Wi-Fi на модуле ESP-01 для ардуино
51. Гравер на ардуино (часть 3)
52. Гравер на ардуино (часть 3 продолжение)
53. Запуск гравера с настройкой ардуино
54. Переделка шагового двигателя для гравера на ардуино
55. Выжигатель чпу на ардуино
56. Умный дом на ESP8266

Arduino ARDSEA (Ардуино) запись закреплена

Arduino ARDSEA (Ардуино) запись закреплена

Приложения типа Scada для ардуино

Scada — это программно аппаратное средство для систем управления на базе программируемых реле (ПР) компании ОВЕН и ПО Скада на базе смартфона/планшета с ОС Андроид.
Перевод этого предложения таков: Scada — приложение для смарта, в котором задаются кнопки, которыми управляем ардуино.
Для создания проектов визуализации для ПЛК и Ардуино так же можно использовать приложение КаСкада установленной на смартфоне или планшете с ОС Андроид
Показать полностью…

Таких приложений с словом «скада» в названии много на гугл плее, например: TeslaModbusSCADА, TeslaSCADA, HMI-KaScada Modbus, ELLAT SCADA, EisBaer SCADA,PLC Scada.
Принцип работы их одинаков через интерфейс HMI, по протоколу Modbus. Прописываем в приложении регистр кнопки, а в ардуино команду по регистру и так управляем.
В скаде используется графический язык программирования FBD. Блоками можно построить любую схему от мигания светодиода до системы умного дома)))
Работа возможна одновременно по 3 каналам — блютуз, вайфай, юсби.
Частенько использую только вайфай в проектах из-за скорости работы.

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

Arduino ARDSEA (Ардуино) запись закреплена

Пиропринтер на Лазерный гравер на Ардуино

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

Перейдем к проблемам в работе с пирогравером.
Пирпоринтер работает с нихромовой проволокой и наносит изображение контактным методом, поэтому для этого станка важна ровность плоской поверхности на которую наносится изображение. Также станку важно, что бы поверхность была прямоугольной геометрии. На круглую поверхность станок не сможет нанести изображение, из-за очищения жала (удалять нагар очень желательно).
Гравер ЧПУ работает почти без дыма. От него может идти едва улавливаемый дымок при черном фоне изображения, но этот дым будет меньше, чем от спички. Такой станок не требует отдельного помещения и почти без шумен.Градация серого цвета может быть до 256 оттенков и создать глубину. Цвет получаемый на дереве в целом коричневого оттенка. Он может быть немного изменен химическими реактивами при подготовке древесины (и её обязательно надо шлифовать и можно обработать растворами соды или перекиси, последнюю не рекомендую)
И самое неприятное это глючность ардуино, из-за тупежа станок замирает на долю секунды оставляя черную точку..И рабочее поле формата А4 выжигает около 4х часов! Кривое выжигание сложно поправить, если это пара точек то можно попытаться зашлифовать, но все попытки тщетны, поэтому лучше не косячить (защитить ардуино от помех сети питания, не нагружать порты и сам ноут в процессе выжигания)
Вот такие тернии в небольшой работе с выжигателем.

Arduino ARDSEA (Ардуино) запись закреплена
Arduino ARDSEA (Ардуино) запись закреплена

Умный дом на Ардуино (Smart house)

Под данным термином подразумевается программно-аппаратный комплекс, позволяющий автоматизировать и упростить управление различными системами, а также другим оборудованием дома или квартиры.
Какие минусы имеет «Умный Дом»:
Любая электроника не застрахована от сбоев или зависаний. Нужно быть готовым к тому, что в любой момент понадобится перенастройка отдельных электронных систем и компонентов вручную;
Показать полностью…
Дороговизна. На рынке России и СНГ производители продают системы по минимальной цене от 2000 долларов до 5000, в зависимости от «начинки» и пожеланий заказчика.

А теперь пример, как в школе.

Дано:
Допустим имеется однокомнатная квартира, которую можно условно разделить на следующие зоны:
Прихожая
Совмещенный СУ
Кухня
Жилая комната

Задача: автоматизировать управление освещением, бойлером и системой вентиляции.

Решение:
Поставим задачи для каждой из зон.
Прихожая
Управление освещением в данной зоне можно осуществлять автоматически, включать свет при приближении к входной двери. То есть, потребуется датчик движения. Можно добавить включение света при открытии входной двери. В качестве датчика подойдет типовой дверной геркон.
Туалет и ванная комната
Включение бойлера можно связать с наличием в квартире хозяев. Если никого нет, автоматика принудительно отключает нагреватель воды. Отслеживать температуру нагрева нет смысла, поскольку данные устройства самостоятельно отключаются при достижении заданного порога. Свет и вытяжка должны включаться автоматически при входе человека в эту зону, и отключаться через определенное время, если не обнаруживается движение.
Автоматизация кухни
Управление освещением данной зоны можно оставить ручным, но дублировать его автоматикой, отключающей свет, если движение не обнаруживается длительное время. При работе электро или газовой плиты должна включаться вытяжка и отключаться через некоторое время после приготовления пищи. Управлять работой вытяжки можно при помощи термодатчика, фиксирующего повышение температуры при включении плиты.

Жилая комната
В данном помещении управлять освещением лучше вручную, но можно реализовать возможность автоматического отключения света при достаточном уровне освещенности.

Для работы всей системы нужно подобрать платформу Умного дома.

Основа платформы это плата с микроконтроллером (ардуино) и электронным обвесом к нему. К контролеру выпускается множество различных датчиков и плат расширения с теми или иными функциями.
Например Ардуино уно имеет 14 цифровых и 6 аналоговых вводов/выводом, а это значит, что к ардуино можно подключить 20 простых датчиков типа Реле. Если выбрать датчики работающие по I2C, то их мжет быть сколь угодно при условии не совпадения их адреса! К тому же несколько ардуино можно соединить в сеть увеличив при этом количеством управляемых элементов.
А можно использовать ардуино Мега там 54 цифровых входа/выхода, 16 аналоговых входов. что вполне хватит для нашего варианта умного дома!

Затем подбираем приложение на андроид с которого будем управлять и мониторить параметры управления! Их очень много и предстоит сложный выбор!

Далее по выбранным ранее задачам для каждой из зон, делаем программу для выбранной выше платформы. Тут полет фантазии ограничен возможностями ардуино и приложением!

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

Читать еще:  Планшеты теряют свою популярность
Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector