Схема подключения:
Для данного проекта нам понадобится:
Датчик движения: http://ali.ski/EPkJs | Gearbest HC-SR501: http://fas.st/9YvTp
Датчик газа: http://ali.ski/6JRA_ | gearbest: http://fas.st/HB1Ds
Датчик протечки воды: http://got.by/1hzcye
Модуль реле:http://ali.pub/1hzd3n
Zummer: http://got.by/1hzdau
Геркон (датчик открытия двери): http://got.by/1hzdjz
Gsm модуль NEOWAY M590: http://got.by/1hzdsx
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В данном примере реализована универсальная сигнализация, которая отправляет смс на определенный номер по выполнению определенного действия, будь то движение, или протечка воды.
Сама схема подключения универсальной сигнализации представлена в начале статьи.
После подключения всех компонентов необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
Скетч:
#include <SoftwareSerial.h> //подключаем библиотеку для программного Rx Tx SoftwareSerial mySerial(2, 3); // RX, TX #define pirPin 9 // Объявляем переменную для датчика движения и указываем пин int Count = 0; int relay1 = 6; // Объявляем переменную для реле 1 и указываем пин int relay2 = 5; // Объявляем переменную для реле 2 и указываем пин int relay3 = 4; // Объявляем переменную для реле 3 и указываем пин int relay4 = 7; // Объявляем переменную для реле 4 и указываем пин const int gassensorpin = A5; //Объявляем переменную для сенсора газа, указываем пин int gassensorvalue = 0; //Объявляем переменную для хранения значения с датчика газа и приравниваем ее к 0 int water = A0; //Объявляем пин для подключения датчика дождя unsigned int waterValue = 0; //Создаем переменную для хранения значений с датчика воды и приравниваем его к 0 int Door_sensor = 10; // Объявляем пин для подключения датчика открытия двери int Door_val = 0; // Объявляем переменную для хранения состояния датчика int buzzer = 8; //Обявляем переменную для пьезоизлучателя, указываем пин void setup() { pinMode(pirPin, INPUT); // Назначаем пин датчика движения как вход pinMode(Door_sensor, INPUT); //Назначаем пин датчика открытия двери как вход pinMode(relay1, OUTPUT); //назначаем пин как реле как выход pinMode(relay2, OUTPUT); //назначаем пин как реле как выход pinMode(relay3, OUTPUT); //назначаем пин как реле как выход pinMode(relay4, OUTPUT); //назначаем пин как реле как выход delay(2000); //время на инициализацию модуля Serial.begin(115200); //скорость порта Serial.println("Signalization v1.0"); mySerial.begin(115200); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(100); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); } void loop() { gassensorvalue = analogRead(gassensorpin);//Считываем значение с датчика газа if (gassensorvalue >= 600) // задаем порог уровня загазованности { mySerial.println("AT+CMGS=\"+71234567890\""); // даем команду на отправку смс delay(100); mySerial.print("gas"); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println("ok"); tone(buzzer, 1915); //Подаем сигнал пьезоизлучателем delay(3000); digitalWrite(relay1, LOW); // Включаем реле, к которому подключен вентилятор delay(15000); } else { digitalWrite(relay1, HIGH); //Выключаем реле с вентилятором noTone(buzzer); //Выключаем сигнал пьезоизлучателя } int pirVal = digitalRead(pirPin); if(pirVal == HIGH) // Если происходит движение { mySerial.println("AT+CMGS=\"+71234567880\""); // даем команду на отправку смс delay(100); mySerial.print("Motion"); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println("ok"); digitalWrite(relay2, LOW); //то Включаем реле, к которому подключено освещение digitalWrite(relay3, LOW); // включаем реле, к которому подключено освещение digitalWrite(relay4, LOW); // включаем реле, к которому подключено освещение tone(buzzer, 1700); //Подаем сигнал пьезоизлучателем delay (10000); } else { digitalWrite(relay2, HIGH); //Выключаем реле digitalWrite(relay3, HIGH); //Выключаем реле digitalWrite(relay4, HIGH); //Выключаем реле noTone(buzzer); //Выключаем сигнал } waterValue = analogRead(water);//Считываем значения с датчика дождя if(waterValue<300) //задаем пороговое значение срабатывания сигнализации { mySerial.println("AT+CMGS=\"+1234567890\""); // даем команду на отправку смс delay(100); mySerial.print("Water!"); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println("ok"); tone(buzzer, 1000); //Подаем сигнал пьезоизлучателем delay (10000); } else { noTone(buzzer); //Выключаем сигнал } Door_val = digitalRead(Door_sensor); //Считываем значения с датчика открытия двери if (Door_val == LOW){ //Дверь открыта digitalWrite(Door_sensor, LOW); { mySerial.println("AT+CMGS=\"+71234567890\""); // даем команду на отправку смс delay(100); mySerial.print("Dooropen"); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println("ok"); tone(buzzer, 1700); //Подаем сигнал пьезоизлучателем delay (5000); } } else { noTone(buzzer); //Выключаем сигнал } }
Ссылка на скетч: https://yadi.sk/d/5drVRxcv3JaLvB
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.
Видео: