Ардуино розетка таймер с часами

Arduino.ru

Розетка работающая по расписанию

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Это мой первый проект! Розетка работающая по расписанию.

Цель: необходимо включать увлажнитель воздуха в заданное время.

Модуль времени Ds3231

Код в основном собран из частей, сам писать пока не умею

#include //Подключаем библиотеку для использования I2C интерфейса с модулем RTC

#include //Подключаем библиотеку для использования модуля часов реального времени RTC

RTC_DS1307 RTC; //Создаем переменную класса — для использования RTC

const int RelayChn1 = 6; //Используем цифровой ПОРТ 6 для ПЕРВОГО канала релейного модуля

//Расчет времени ( 60секунд *60 минут *1 = 3600)

const long StartRelCn_1 = 28800; //Время срабатывания 8:00

const long DurationCh_1 = 1800; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:30

const long StartRelCn_1A = 36000; //Время срабатывания 10:00

const long DurationCh_1A = 1800; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:30

const long StartRelCn_1B = 41400; //Время срабатывания 11:30

const long DurationCh_1B = 2400; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:40

const long StartRelCn_1C = 52200; //Время срабатывания 14:30

const long DurationCh_1C = 1800; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:30

const long StartRelCn_1D = 57600; //Время срабатывания 16:00

const long DurationCh_1D = 1800; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:30

const long StartRelCn_1I = 64800; //Время срабатывания 18:00

const long DurationCh_1I = 2400; //ДЛИТЕЛЬНОСТЬ срабатывания реле 0:40

const long StartRelCn_1F = 72000; //Время срабатывания 20:00

const long DurationCh_1F = 3600; //ДЛИТЕЛЬНОСТЬ срабатывания реле 1:00

pinMode(RelayChn1,OUTPUT); //Инициализируем порт для ПЕРВОГО канала как ВЫХОД

digitalWrite(RelayChn1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень

Wire.begin(); //Инициируем I2C интерфейс

RTC.begin(); //Инициирум RTC модуль

DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла

long utime = myTime.unixtime(); //сохраняем в переменную — время в формате UNIX

utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках,

if ((utime >= StartRelCn_1) &&

(utime Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Источник

Простой таймер на Ардуино с реле и обратным отсчётом

Сегодня покажу как легко и просто сделать таймер для управления реле к которому можно подключить любую нагрузку.
Нам понадобятся. Ардуино, LCD индикатор, реле, пищалка для подачи сигнала и 4 кнопки.
Чтобы не тянуть, сразу покажу как это работает, а потом посмотрим схему подключения.

Слева на экране я буду управлять кнопками всеми настройками, а справа я вывел более крупное изображение дисплея, что бы лучше видеть все изменения.
При нажатии на 1 кнопку можно выбрать установку времени. Это секунды, минуты и часы.
После выбора режима, кнопками плюс и минус можно настроить время таймера. Отсчёт времени будет идти в обратную сторону. И при достижении нуля, раздастся сигнал и включится или выключится реле. Это будет завесить от того какой режим у вас запрограммирован.
После установки нужного времени надо нажать четвёртую кнопку и таймер начнёт работу. Для примера я поставил время срабатывания 14 секунд, и режим работы Отключение. После нажатия ОК, реле включит нагрузку, которая отключится через 14 секунд.
Установленное время сохраняется в памяти Ардуино, и если вы захотите снова использовать это же время, вам надо просто нажать ОК.
Теперь изменим режим и будем включать лампу при срабатывании таймера. Как менять режимы я покажу дальше в видео.

Для работы вам надо установить библиотеки.
Библиотеку таймера и библиотеку для работы с LCD дисплеем. Так как я в скетче использую русский шрифт, то вам надо установить вот эту библиотеку. Если вам что-то будет непонятно, то посмотрите вот это видео, там я подробно всё рассказал.

Здесь указано к каким пинам подключены кнопки. А здесь куда подключены пищалка и реле.

Эти две переменные отвечают за выбор режима работы. Сейчас установлен режим Выключение. То есть при срабатывании таймера, реле будет отключено.
Если вы поменяете эти значения на противоположные. Сделаете OFF равным единице, а ON равным нулю, то измените режим на включение и при срабатывании таймера он включит нагрузку.

Читайте также:  Розетки для бензиновых генераторов

Подведу итог работы, но не видео.
В таймере можно устанавливать время. Часы, минуты и секунды. Режим работы может быть как на включение или отключение нагрузки.
Давайте посмотрим схему. Индикатор подключается по стандартной схеме к шине I2C.
Пищалка подключается в пину d6, а реле к пину d5. И то и другое питается от 5 вольт Ардуино. Если у вас будет тускнеть дисплей, то вам надо подключить реле к выводу WIN Ардуино, если вы питаете плату от USB или запитать от отдельного источника.
Кнопки подключены к выводам А0 – А3. Другой вывод кнопки надо подключить к земле. Так как в скетче я включил внутреннюю подтяжку, то вам не обязательно устанавливать внешние резисторы.

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

Источник

Записки программиста

Собираем крафтовую розетку с таймером на базе Arduino

22 декабря 2017

Розетка с таймером (ее же иногда называют «реле времени») — это устройство, функционал и назначение которого должно быть очевидно из названия. Вы подключаете какую-нибудь лампу в розетку через это устройство, в результате чего получаете возможность запрограммировать лампу. Например, лампа может автоматически включаться каждый день в 9 утра и выключаться в 10 вечера. Зачем это может быть нужно — уход за растениями, создание эффекта присутствия людей в доме с целью отпугивания воров, и так далее. Розетку с таймером в наше время легко купить готовую за небольшие деньги. Однако в этой заметке я расскажу, как сделать такое устройство своими руками.

Важно! Работа с переменным током высокого напряжения смертельно опасна. Если вы решите повторять действия, описанные далее, будьте предельно осторожны.

Примечание: Пользуясь случаем, я хотел бы поблагодарить пользователей форума EasyElectronics.ru с никами STT, BusMaster и Кот495 за то, что проконсультировали меня о некоторых нюансах работы с переменным током.

Спрашивается, зачем делать свое устройство, если можно просто купить готовое?

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

Свою розетку с таймером я собрал из следующих компонентов:

  • Клон Arduino Nano с разъемом Micro USB (2.82$);
  • Китайский экранчик 1602 с I2C адаптером (1.75$);
  • Роторный энкодер (0.52$);
  • Реле с двумя контактными наборами RT424005 (3.07$);
  • Две пары разъемов XT60 (0.66$);
  • Ненужное зарядное устройство с USB-выходом (0.00$);
  • Повербанк, полученный бесплатно на конференции (0.00$);
  • Некоторое количество проводов, термоусадок, двустороннего скотча, болтов и гаек M3, кусок макетки, и прочая мелочь (0.00$);

Вместо зарядного устройства для телефона можно было воспользоваться нормальным AC/DC преобразователем на 5 В, припаиваемым на плату. Но стоят AC/DC преобразователи сравнительно дорого, а лишних зарядных устройств у меня накопилось достаточно много. Так что я предпочел использовать валяющуюся без дела зарядку.

Повербанк тоже валялся без дела. Если лишнего повербанка у вас нет, вместо него можно воспользоваться Li-Ion аккумулятором форм-фактора 18650 в сочетании с платой на базе чипа TP4056 и каким-нибудь повышающим DC/DC преобразователем на ваш выбор. Как использовать эти компоненты ранее было подробно рассказано в заметке Паяем крафтовый повербанк с солнечной панелью. Вообще-то говоря, не всякий повербанк способен заряжаться от сети и одновременно заряжать подключенное к нему устройство. Поэтому в общем случае использовать аккумулятор, TP4056 и повышающий преобразователь DC/DC будет более правильно.

Читайте также:  Вел электрика розетки белэлектрика разбор

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

Названные компоненты были помещены в корпус и соединены таким образом:

Корпус я спроектировал во FreeCAD и распечатал на 3D-принтере RepRap Prusa i3 пластиком PLA. Высчитывать с точностью до миллиметра, где должны находится отверстия для крепления экранчика, мне было лень. Поэтому эти отверстия я просверлил дрелью уже после того, как корпус был напечатан. Разъемы XT60 были закреплены с помощью термоклея.

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

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

Софтверная часть не представляет очень уж большого интереса, тем более, что я не сильно заморачивался с качеством кода. Использование экранчиков 1602 с I2C интерфейсом ранее подробно рассматривалось в заметке Об использовании экранчиков 1602 с I2C-адаптером. Что же касается части кода, отвечающей за время, она в существенной части была позаимствована из проекта часов на микроконтроллере ATmega328P. Действительно новым для нас здесь является разве что работа с роторным энкодером, поэтому ее и рассмотрим.

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

Как видите, сигнал достаточно просто декодировать. Если по фронту сигнала с контакта A на контакте B сигнал высокий или по спаду сигнала с контакта A на контакте B сигнал низкий, значит пользователь вращает ручку по часовой стрелке. Если же наоборот, по фронту сигнала с контакта A на контакте B сигнал низкий, а по спаду — высокий, значит ручка вращается против часовой стрелки.

Как это часто бывает в мире Arduino, декодирование сигнала от энкодера уже реализовано в библиотеке Rotary. Пример ее использования:

Rotary rot ( 3 , 2 ) ;

// rotory interrupt
PCICR | = ( 1 PCIE2 ) ;
PCMSK2 | = ( 1 PCINT18 ) | ( 1 PCINT19 ) ;
sei ( ) ;
>

ISR ( PCINT2_vect ) <
unsigned char result = rot. process ( ) ;
if ( result == DIR_NONE ) <
// do nothing
> else if ( result == DIR_CW ) <
/* do something . */
> else if ( result == DIR_CCW ) <
/* do something else . */
>
>

В окончательном виде получившееся устройство выглядит так:

Конечно же, на ум приходит множество возможных улучшений. Например, можно добавить функцию управления по Bluetooth или же при помощи SMS. Не помешало бы также вывести на корпус индикацию процесса зарядки и текущего состояния аккумулятора. Где-нибудь сбоку стоило бы добавить кнопку полного отключения, например, на случай длительной транспортировки устройства. Возможность отключения подсветки экранчика была бы не лишней, так как подсветка довольно яркая и может, помимо прочего, мешать спать. Часы на кварцевом резонаторе не слишком точны, раз в пару месяцев их приходится подводить. В связи с этим стоит рассмотреть использование внешних часов реального времени. Ну и в целом получившаяся конструкция довольно громоздка, уродлива и сложна для повторения, не говоря уже о том, что микроконтроллер подошел бы и более простой, например, ATtiny2313. Так что, не лишено смысла сделать нормальную плату.

Читайте также:  Schneider electric как собрать розетку

Как обычно, исходники прошивки и STL-файлы корпуса вы найдете на GitHub.

А что вы думаете об описанном проекте и какие идеи по его улучшению есть у вас?

Источник

Микросхема простого электронного таймера времени на Ардуино своими руками

Всем привет! Собрав таймер на Ардуино из этой инструкции, вы сможете контролировать включение и выключение ваших устройств в нужное вам время. Это могут быть ночные фонари, система орошения сада и т.д. Мы воспользуемся Ардуино, дисплеем и RTC 1307, отображающим и управляющим временем. Вы можете задать часы «ВКЛ» и «ВЫКЛ» при помощи 4 кнопок, что позволит вам изменять настройки микросхемы таймера.

Также вы научитесь создавать часы, базирующиеся на Ардуино. Я приложил схему из fritzing и видео, так что вы без проблем соберёте данное устройство.

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

Шаг 1: Материалы

  • Arduino Uno
  • Модуль RTC 1307
  • Дисплей 16X2
  • Модуль реле 5V
  • Подстроечный потенциометр 10K
  • Резистор 1K
  • Резисторы 10K x 4 штуки
  • Кнопки x 4 штуки
  • Макетная плата, джамперы.

Шаг 2: Устанавливаем часы

Следуйте схеме из Fritzing.

Соедините 5V и GND с Ардуино с соответствующими контактами (Красный – 5V, синий – земля)

Дисплей к Ардуино:

  1. VSS к GND
  2. VDD к 5V
  3. VO к центру потенциометра
  4. RS к пину 2
  5. RW к GND
  6. EN или E к пину 3
  7. D0 NC
  8. D1 NC
  9. D2 NC
  10. D3 NC
  11. D4 к пину 4
  12. D5 к пину 5
  13. D6 к пину 6
  14. D7 к пину 7
  15. A к 5V
  16. K к GND через резистор 1K
  17. Остальные контакты потенциометра на 5V и GND
  • SDA к пину 4
  • SCL у пину 5
  • GND и 5V

Шаг 3: Устанавливаем время

Пришло время настроить часы. Запустите код «Set time RTC». Этот скетч возьмёт данные о дате и времени из вашего компьютера прямо во время компиляции кода и использует их для программирования RTC. Если у вас на компьютере неправильные установки, то поправьте их перед запуском программы. Затем нажмите кнопку Upload, чтобы немедленно загрузить откомпилированный код.

Внимание: Если вы скомпилируете код, а загрузите его позже, то данные о времени устареют.

Далее откройте окно Serial Monitor, чтобы увидеть, что время было установлено.

Шаг 4: Часы

После того, как установите время, откройте и загрузите скетч «Clock with RTC LCD». Потенциометр в схеме нужен для настройки контрастности дисплея, покрутите его, чтобы чётко видеть символы.

Шаг 5: Устанавливаем таймер

Теперь мы добавим кнопки и реле. Опять же, следуйте схеме Fritzing.

Пины 8,9, 10 и 11 соединены с GND через резисторы 10K. Когда вы нажмете на кнопку, то на контакты пойдёт напряжение 5V.

Реле соединяется с пином 12. С помощью него можно управлять вашими устройствами, но будьте осторожны с максимальной нагрузкой на реле!

Шаг 6: Таймер

Откройте и загрузите код «Timer with on off set point». Нажимайте кнопки, чтобы сместить время назад или вперёд. Если электронный таймер будет в пределах настроенного интервала, то он начнет работать сразу же. Если же он не попадает в нужный интервал, то будет ждать час «ВКЛ».

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

Весь код написан мной, кроме настройки времени на RTC и дата-логгера Adafruit. Надеюсь, эта инструкция как собрать простой таймер своими руками была для вас полезна!

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Источник

Adblock
detector