Всем привет и сразу к сути.
Позвонил знакомый и попросил помочь ему с дипломным проектом. Тема диплома: Оповещение об утечке воды, работающее по радиоканалу.
Недолго думая и сделав скидку на свою лень,прикинул в голове, что мне нужны две ардуины, 2 блока питания, какая-нибудь верещалка, модуль измерения влажности и комплект RF-модулей.
После приобретения необходимого взялся клепать исходник.
Блоки питания для отладки мне не нужны, и сирена тоже не особо роль сыграет.
Так как измерительная часть не нуждается в резервировании питания и аккумуляторе, энергосбережение ей не нужно.
Будем отправлять команду на срабатывание сирены лишь тогда, когда будет протечка, и датчик влажности зафиксирует превышение влажности. Проверку влажности сделаем один раз в секунду. Сброс тревоги организуем банальным Reset'ом.
Для настройки порога срабатывания на плате с оперционником есть светодиод, крутим переменные резистор и подстраиваем уровень срабатывания.
Для радиосвязи задействуем популярную библиотеку RCSwitch, более нам ничего не потребуется.
Код передатчика для Arduino:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup()
{
mySwitch.enableTransmit(2);
pinMode(13, OUTPUT);
}
void loop()
{
delay(1000);
if (digitalRead(11) == LOW)
mySwitch.send(B1101, 4);
if (digitalRead(11) == LOW)
digitalWrite(13, HIGH);
else
digitalWrite(13, LOW);
}
Собственно, этих строчек нам хватит, теперь на скорую руку пилим код приемника:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup()
{
pinMode(13, OUTPUT);
mySwitch.enableReceive(0);
}
void loop()
{
if (mySwitch.available())
{
int value = mySwitch.getReceivedValue();
if (value == B1101)
digitalWrite(13, HIGH);
mySwitch.resetAvailable();
}
}
Схема подключения датчика к Arduino1:
"VCC " ----> 5V
"GND " ----> GND
"DO" ----> 11
Схема подключения передатчика к Arduino1 :
"+" ----> 3.3V
"-" ----> GND
"DAT" ----> 2
Схема подключения приемника к Arduino2:
"VCC " ----> 5V
"GND " ----> GND
"DO" ----> 2
А теперь вкратце опишу алгоритм работы. Передающее устройство каждую секунду проверяет сигнал на входе. Если вода попала на датчик, то операционник делает свое дело, и на выходе модуля влажности появляется логический ноль!!!!!. Во время очередной проверки микроконтроллер видит, что на входе логический ноль и посылает на радиопередатчик код 1101. Если датчик протерли и влаги на нем больше нет,то на микроконтроллер приходит логическая единица, и он ничего не передает "верещателю".
Приемное устройство постоянно мониторит эфир, и как только оно получило посылку с кодом 1101, подает логическую единицу на третий выход. На выходе висит генератор с динамиком, в моем случае хватит и светодиода, незачем соседей пугать))). Для отключения "верещателя" нажимаем кпопку сброса "Reset", и приемник снова становится в режим ожидания.
Если у Вас есть вопросы или предложения, пишите: nikitos-it@mail.ru или телеграмм https://t.me/nikitos_it
Проект можно поддержать тут или в форма для доната ниже ;)
Смелых идей и прямых рук! Ставьте пальцы вверх, подписывайтесь на канал, дальше будет интересней. Ваш Никитос.