Автор Тема: Розетка-таймер на Ардуино  (Прочитано 220 раз)

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1514
  • Лойсы: +118/-0
    • Просмотр профиля
Розетка-таймер на Ардуино
« : 28 Ноябрь 2017, 16:27:17 »
Поскольку на форуме регулярно встречаются у людей проблемы с таймингом (механические таймеры "не надежные, недостаточно настроек, дорогие, нестабильно работают и т.д."), расскажу на пальцах, как человеку, совсем не связанному с техникой и программированием, сделать двухканальный таймер с неограниченным количеством настроек.
Покупаем Ардуино Нано, двухканальное реле и десяток монтажных проводков (мама-мама), цена за все 4-5$:

Ардуину лучше взять с уже распаянной гребенкой (штырьками), чтоб потом не паять.
Подключаем Нану к компьютеру (у неё как правило разъем mini-USB), скачиваем и устанавливаем драйвер, устанавливаем Arduino IDE.
Запустив Arduino IDE, идем в Инструменты>Плата, выбираем там Ардуино Нано. Копируем туда скетч

int pin1 = 5;                             //номер пина, куда подключено первое реле таймера 1
unsigned long freq=60;           //периодичность включения в минутах таймера 1
unsigned long dlit=5;              //длительность работы в минутах таймера 1
unsigned  long freq_last_time;

int pin2 = 6;                                                         //номер пина, куда подключено первое реле таймера 2
unsigned long freq2=60;                                     //периодичность включения в минутах таймера 2
unsigned long dlit2=5;                                        //длительность работы в минутах таймера 2
unsigned long freq_last_time2;


void setup(void){
pinMode(pin1 , OUTPUT);
pinMode(pin2 , OUTPUT);
digitalWrite(pin1 , HIGH);
digitalWrite(pin2 , HIGH);
}

void loop(void){
Rele();
Rele2();
}

void Rele(){
if(  (millis()-freq_last_time)>(freq*60000)  ){
     digitalWrite(pin1 , HIGH);
     freq_last_time=millis();
}
if(  (millis()-freq_last_time)>(dlit*60000) ){
     digitalWrite(pin1 , LOW);
  }
}

void Rele2(){
if(  (millis()-freq_last_time2)>(freq2*60000)){
     digitalWrite(pin2 , HIGH);
     freq_last_time2=millis();
}
if(  (millis()-freq_last_time2)>(dlit2*60000)){
     digitalWrite(pin2 , LOW);
  }
}

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

Все, ардуина готова. Теперь проводками соединяем питание реле с пинами питания ардуины (плюс к плюсу, может называться +5v или Vcc, минус к минусу GND). А средние проводки к указанным выше пинам (на ардуине цифровые пины имеют пометку D, т.е. к  D5 и D6), выделенным красным (можно их поменять)
Устройство готово. Запитываем Ардуину зарядкой от мобилки, подключаем реле в разрыв проводов наших устройств, наслаждаемся.

Пример.
Нам нужно включать свет на 12 часов в 8 утра (свет на реле 1), кроме того нам нужно включать помпу каждые два часа на 5 минут (помпа на реле 2).
Тогда верхняя часть программы будет выглядеть так (меняем только то, что выделено красным)
int pin1 = 5;                             
unsigned long freq=1440;           // Периодичность цикла 1 сутки, следовательно ставим 1440 минут
unsigned long dlit=720;              //длительность работы 12 часов, т.е. 720 минут
unsigned  long freq_last_time;

int pin2 = 6;                                                         
unsigned long freq2=120;                                     //периодичность цикла 2 часа, или 120 минут
unsigned long dlit2=5;                                        //длительность работы 5 минут
unsigned long freq_last_time2;

В 8 утра выключаем и включаем ардуину (рестартуем её), это нужно чтобы суточный цикл начал отсчитываться с 8 утра (поскольку ардуина работает у нас без модуля часов реального времени на внутренем таймере). Все, работа началась. Раз в месяц желательно рестартовать ардуину (это связано с ограничем емкости внутреннего таймера 50 суток)
« Последнее редактирование: 28 Ноябрь 2017, 20:44:42 от Ann »

Оффлайн Nav5000

  • Serrano
  • ***
  • Сообщений: 247
  • Лойсы: +10/-1
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #1 : 28 Ноябрь 2017, 16:43:16 »
правильно ли я все нашел? это провода, это Ардуино Нано, а это реле?

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1514
  • Лойсы: +118/-0
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #2 : 28 Ноябрь 2017, 16:49:08 »
правильно ли я все нашел? это провода, это Ардуино Нано, а это реле?
Реле лучше взять в виде отдельного модуля, он уже имеет гальваническую развязку на оптронах и удобные разъемы для подключения как Ардуины, так и нагрузки.
Остальное правильно.
« Последнее редактирование: 28 Ноябрь 2017, 16:50:48 от Ann »

Оффлайн Nav5000

  • Serrano
  • ***
  • Сообщений: 247
  • Лойсы: +10/-1
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #3 : 28 Ноябрь 2017, 17:24:50 »
правильно ли я все нашел? это провода, это Ардуино Нано, а это реле?
Реле лучше взять в виде отдельного модуля, он уже имеет гальваническую развязку на оптронах и удобные разъемы для подключения как Ардуины, так и нагрузки.
Остальное правильно.
спасибо. пойду закажу.) лампу спаял, значит и розетку-таймер соберу. :D

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1514
  • Лойсы: +118/-0
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #4 : 28 Ноябрь 2017, 17:31:27 »
спасибо. пойду закажу.) лампу спаял, значит и розетку-таймер соберу. :D
Как вариант можно рассмотреть вот такие реле.
Плюсы:
+ не имеют механических частей, а следовательно на порядок надежнее и долговечнее
+ бесшумные (механические заметно щелкают)
+ меньше потребляют питания
Минусы:
- нагрузка только до 500 ватт
- управлять могут только нагрузкой сети 220вольт (в отличие от механических, которым все равно, хоть 220, хоть 12, хоть постоянное, хоть переменное).

Оффлайн PowerTech

  • Serrano
  • ***
  • Сообщений: 170
  • Лойсы: +11/-0
  • Василий
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #5 : 28 Ноябрь 2017, 17:34:17 »
Есть ещё https://www.ebay.com/itm/Four-Channel-4-Route-MOSFET-Button-IRF540-V2-0-MOSFET-Switch-Module-Arduino/200959373944?hash=item2eca1cb278:g:W08AAOSwZ1BXdeut
это по сути реле на полевых транзисторах, можно шим использовать, но только постоянный ток.

Оффлайн Nav5000

  • Serrano
  • ***
  • Сообщений: 247
  • Лойсы: +10/-1
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #6 : 28 Ноябрь 2017, 17:39:48 »
мне главное, что бы не паять.) или чтобы по минимуму. а то я, все таки, рукажоп. :D

Оффлайн vadkoff

  • Habanero
  • *****
  • Сообщений: 957
  • Лойсы: +73/-2
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #7 : 28 Ноябрь 2017, 20:21:08 »
Больше всего улыбнуло
.. как человеку, совсем не связанному с техникой и программированием..

Та шоп так каждый не связанный соображал в программировании и технике :D

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 643
  • Лойсы: +32/-0
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #8 : 28 Ноябрь 2017, 22:19:36 »
Больше всего улыбнуло
.. как человеку, совсем не связанному с техникой и программированием..

Та шоп так каждый не связанный соображал в программировании и технике :D

Ann это не про себя писал. :nea:

первая неудача может сильно а иногда и навсегда отбить желание чего нибудь там смастерить своими руками. Если уж совсем человек ни разу паяльник в руки не хочет брать то лучше посоветовать что то вроде https://ru.aliexpress.com/item/DC-12V-Multifunction-Real-Clock-Control-DS3231-Self-lock-Relay-PLC-Cycle-Timer-Delay-Time-ON/32801510303.html?ws_ab_test=searchweb0_0,searchweb201602_0_10152_10065_10151_10344_10068_10345_10342_10343_10340_10341_10543_10541_10562_10084_10083_10307_10301_10539_10312_10059_10313_10314_10534_10533_100031_10211_10604_10603_10103_10128_10129_10594_10557_10596_10595_10142_10107,searchweb201603_1,ppcSwitch_0&algo_expid=48c0aacf-505a-44a9-944f-9712e5d92cbd-27&algo_pvid=48c0aacf-505a-44a9-944f-9712e5d92cbd&rmStoreLevelAB=3
И вроде своими руками и сразу все работает.
Если замечания, жалобы, заявления и предложения приветствуются то с нетерпением внесу свои 5 коп в копилку данного проекта.
 1. Реле обязательно твердотельные. Тк не каждая зарядка может потянуть и ардуину и механическое реле. Мне лично попались 2 зарядки из 5 опробованных. хотя возможно релюхи проблемные были
2. Гребенку и соединительные провода нафиг. Впаять и выпаять проводок в нужное дупло получится без проблем прямо со второго раза. Как бонус получаем компактность и безглючность.
3. Нано слишком большая и избыточная для такой задачи. Про мини  будет более чем достаточно. На разницу в цене покупаем модуль реального времени и забываем о сбоях таймера по причине моргнувшего света.
4. В качестве корпуса для такого таймера удобно использовать обычный удлинитель у которого выломаны 2 гнезда.
 Таких таймеров сделал уже 2шт. Так что конструкция отработанная и проверенная  :D :D :D
« Последнее редактирование: 28 Ноябрь 2017, 23:08:20 от eddy »
— Товарищ генерал-лейтенант, я давно хотел спросить. Как с йети быть?
— Йети? Надо чаще мыть.

Оффлайн Руслан

  • Serrano
  • ***
  • Сообщений: 144
  • Лойсы: +5/-0
  • Я прочел подпись под аватором.
    • Просмотр профиля
    • /me в vk.com
Re: Розетка-таймер на Ардуино
« Ответ #9 : 28 Ноябрь 2017, 22:50:23 »
Спасибо за подробный гайд, как представитель Новичков-ой прослойки населения инструкция будет очень полезна.
Как раз 11.11 заказал Ардуино мини\нано, RTC, ESP8266  (чтоб скетчи по wifi заливать).

А вот реле будут твердотельные (чтоб не раздражало своим щелканьем каждые 30 мин по 5 сек для обдува)
К примеру вот такие: https://goo.gl/QpFJU4 (переключать может только переменный ток)

« Последнее редактирование: 28 Ноябрь 2017, 23:16:39 от Руслан »
ВКонтакте: https://vk.com/rus_1an
г. Москва. м. Рязанский просп. остановка: Комбинат ЖБК № 2

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1514
  • Лойсы: +118/-0
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #10 : 28 Ноябрь 2017, 23:34:24 »
Если замечания, жалобы, заявления и предложения приветствуются то с нетерпением внесу свои 5 коп в копилку данного проекта.
 1. Реле обязательно твердотельные. Тк не каждая зарядка может потянуть и ардуину и механическое реле. Мне лично попались 2 зарядки из 5 опробованных. хотя возможно релюхи проблемные были
2. Гребенку и соединительные провода нафиг. Впаять и выпаять проводок в нужное дупло получится без проблем прямо со второго раза. Как бонус получаем компактность и безглючность.
3. Нано слишком большая и избыточная для такой задачи. Про мини  будет более чем достаточно. На разницу в цене покупаем модуль реального времени и забываем о сбоях таймера по причине моргнувшего света.
4. В качестве корпуса для такого таймера удобно использовать обычный удлинитель у которого выломаны 2 гнезда.
1. Там до 100мА на канал, так что двухканальное потянет любая.
2. Согласен, но гайд то ведь для тех, кто с паяльником на "Вы".
3. На разницу в цене придется докупить программатор, чтоб скетч можно было залить (и еще добавить, а то не хватит  :lol:). Нано тем и хороша, что имеет USB на борту, из коробки готова к работе.

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 643
  • Лойсы: +32/-0
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #11 : 29 Ноябрь 2017, 21:19:26 »
Сам купил 2 нано сначала. Но хотелки не закончились и уже осознав избыточность нано для моих скромных хотелок стал покупать про мини 3 штуки уже оприходовал и пожалел о приобретении нано.
 Перепрошивать уже устаканенный девайс приходится крайне редко. А под новую хотелку лучше использовать новое тело.
 Переходник USB - про мини покупается один раз, а использовать его можно на бесконечном кол-ве дешевых тел.
 Поймите правильно плиз. Если железяка дорогая но нужная ее надо покупать , но если тот же результат можно получить использовав железку в 2 раза дешевле...
 Для меня суть не в том что бы потратить меньше, а в том что бы купить больше.

 
— Товарищ генерал-лейтенант, я давно хотел спросить. Как с йети быть?
— Йети? Надо чаще мыть.

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1514
  • Лойсы: +118/-0
    • Просмотр профиля
Re: Розетка-таймер на Ардуино
« Ответ #12 : 29 Ноябрь 2017, 21:37:14 »
Сам купил 2 нано сначала. Но хотелки не закончились и уже осознав избыточность нано для моих скромных хотелок стал покупать про мини 3 штуки уже оприходовал и пожалел о приобретении нано.
 Перепрошивать уже устаканенный девайс приходится крайне редко. А под новую хотелку лучше использовать новое тело.
 Переходник USB - про мини покупается один раз, а использовать его можно на бесконечном кол-ве дешевых тел.
 Поймите правильно плиз. Если железяка дорогая но нужная ее надо покупать , но если тот же результат можно получить использовав железку в 2 раза дешевле...
 Для меня суть не в том что бы потратить меньше, а в том что бы купить больше.
Категорически согласен со всем, что Вы написали, просто гайд ориентировался для людей, совсем постронних в этой теме, а им в первую очередь нужна быстрота и простота коннекта, что в полной мере дает Нано. Программатор - дополнительное в этом препятствие. Я когда-то за копейки купил жменю голых Atmega (микросхемы, на которых построена Ардуина) и ATiny (крайне упрощенный вариант), тоже вроде бы много и дешево, да толку с того, валяются в чулане. Для очередной приблуды рука тянется за Наной, размеры те же (с учетом необходимой обвязки для голой микросхемы), а головняков в разы меньше. Ну а цена, то в этом ценовом диапазоне сильно не сэкономишь, лучше заплатить на доллар больше, но избавить себя от пары часов  "личной жизни" с подключением.