» » » Делаем простейшую сигналку на GSM SIM800L и Аrduino для дачи, гаража

Делаем простейшую сигналку на GSM SIM800L и Аrduino для дачи, гаража


С наступлением дачного сезона возникла необходимость охраны дачного домика. Хотелось сделать простенькую но надежную охранную сигнализацию с передачей сигнала на сотовый телефон. Решено было собрать устройство с передачей тревоги на сотовый телефон на базе электронных плат приобретенных на Алиэкспресс. Как говорится дешево но сердито. Основными элементами данной конструкции являются модуль GSM SIM800L и плата Aрдуино(можно применить любую- Nano ,Uno,Pro Mini и тому подобные).

Устройство на пять тревожных входов для контактных датчиков. К каждому входу можно подключить один или несколько датчиков последовательно соединенных В скетче присвоить каждому охранному шлейфу свое название (например-входная дверь, окно 1, окно 2 и так далее). Охранное устройство работает так: при разрыве электрической цепи первого шлейфа блок сперва дает вызов на первый телефон абонента, следом прекращает звонок и также на №2. №2 нужен в виду того что если вдруг первый абонент не в сети или подсел аккумулятор и прочие неприятности). Если срабатывают шлейфа следующие за первым, тогда происходит отсылка СМС сообщения с названием сработавшего шлейфа, в том же случае на оба номера абонентов.

Перечень инструментов и материалов.
-литий –ионный аккумулятор от старого телефона 3,7В\1600мА-1шт
-соединительные провода;
-паяльник;
-тестер;
-прозрачная пластмассовая коробка -1шт;
-плата Arduino Nano -1 шт;
-резисторы 10кОм-7шт;
- макетная плата из фольгированного текстолита;
- выключатель питания-1шт;
-модуль SIM800L -1шт;
-понижающая плата 1-2А -1шт;
-клеммные разъемы.

Шаг первый. Сборка схемы охранного GSM устройства.
Фото схемы.


На макетную плату припаиваем разъемные колодки для GSM модуль SIM800L и модуль Arduino это упрощает монтаж и позволяет при необходимости легко заменять модули. Распаиваем резисторы и остальные соединения. Резисторы от контакта RX модуля SIM800L подключаются к цифровому входу D3 Arduino для согласования по напряжению входов обоих модулей. Входы Arduino D4-D8 подтягиваются через резисторы. Выключатель монтируется в разрыв питания GSM модуля SIM800 и платы Ардуино для постановки на охрану всей системы. Применение аккумулятора, что позволит устройству функционировать два три дня при отсутствии сети 220 В. Преобразователь напряжения в моем случае из напряжения 12 В выдает напряжение 4,2 В и заодно заряжает аккумулятор(можно применить другую плату, например ТР4056 с защитой).

Шаг второй. Программирование устройства.
В СИМ карте должны быть удалены пинкоды и все ненужные функции. Еще предварительно нужно настроить сам модуль SIM800L-в сети есть много видео по этой теме, ничего сложного в этом нет. В скетче указываем ваши номера телефонов, корректируем названия охранных зон, можно установить время контроля системы (если прибор работает нормально через заданное время придет контрольная СМС). Заливаем скетч в Arduino и проверяем работу устройства.

Скетч:


String numberCall_1 = "79123456789"; // Номер абонента №1 для звонка
String numberSMS_1 = "+79123456789"; // Номер абонента №1 для СМС (отличается только знаком +)

String numberCall_2 = "79123456782"; // Номер абонента №2 для звонка
String numberSMS_2 = "+79123456782"; // Номер абонента №2 для СМС (отличается только знаком +)

String textZone_1 = "Alarm! Zone1";    // Свое название зоны ,  на латинице.
String textZone_2 = "Alarm! Zone2";    // Свое название зоны ,  на латинице.
String textZone_3 = "Alarm! Zone3";    // Свое название зоны ,  на латинице.
String textZone_4 = "Alarm! Zone4";    // Свое название зоны ,  на латинице.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); 

#define pinSensor_0 4 
#define pinSensor_1 5 
#define pinSensor_2 6 
#define pinSensor_3 7 
#define pinSensor_4 8 

void initGSM(void) {
  delay(2000);                            
  mySerial.begin(9600);                   // Выставляем скорость общения с GSM-модулем 9600 Бод/сек.  
  mySerial.println("AT+CLIP=1");          
  delay(300);                             
  mySerial.println("AT+CMGF=1");          
  delay(300);                             
  mySerial.println("AT+CSCS=\"GSM\"");    
  delay(300);                             
  mySerial.println("AT+CNMI=2,2,0,0,0");  
  delay(300);                             
}

/* Отправка SMS */
void sendSMS(String text, String phone) {
  mySerial.println("AT+CMGS=\"" + phone + "\""); 
  delay(500);
  mySerial.print(text);                         
  delay(500);
  mySerial.print((char)26);       
  delay(2500);  
}


unsigned long timerTemp = 0;  
uint8_t hours = 0;            

uint8_t flagSensor_0 = 0;
uint8_t flagSensor_1 = 0;
uint8_t flagSensor_2 = 0;
uint8_t flagSensor_3 = 0;
uint8_t flagSensor_4 = 0;

void setup() {
  mySerial.begin(9600);
  initGSM(); 
  
  pinMode(pinSensor_0, INPUT);
  pinMode(pinSensor_1, INPUT);
  pinMode(pinSensor_2, INPUT);
  pinMode(pinSensor_3, INPUT);
  pinMode(pinSensor_4, INPUT);

  timerTemp = millis();
}

void loop() {
    if(millis() - timerTemp >= 3600000) {timerTemp = millis(); hours++;}

  if(hours >= 144) {// Меняем время контроля системы на свое,144 часа.кол-во часов .
    sendSMS(String("The system works normally.OK"), numberSMS_1); 
    delay(10000);                                  
    sendSMS(String("The system works normally.OK"), numberSMS_2); 
    delay(10000);                                  
    hours = 0;                                     
    timerTemp = millis();                         
  }
 
  if(flagSensor_0 == 0 && digitalRead(pinSensor_0) == 0) flagSensor_0 = 1; 
  if(flagSensor_1 == 0 && digitalRead(pinSensor_1) == 0) flagSensor_1 = 1; 
  if(flagSensor_2 == 0 && digitalRead(pinSensor_2) == 0) flagSensor_2 = 1; 
  if(flagSensor_3 == 0 && digitalRead(pinSensor_3) == 0) flagSensor_3 = 1;
  if(flagSensor_4 == 0 && digitalRead(pinSensor_4) == 0) flagSensor_4 = 1;

  if(flagSensor_0 == 1) {
    String command;

    command = "ATD+" + numberCall_1 + ";";  
    mySerial.println(command);              
    delay(20000);                           
    mySerial.println("ATH");                
    delay(1000);                            

   
    command = "ATD+" + numberCall_2 + ";";  
    mySerial.println(command);              
    delay(20000);                           
    mySerial.println("ATH");                
    delay(1000);                            

    flagSensor_0 = 2;                       
  }


  if(flagSensor_1 == 1) {
    sendSMS(textZone_1, numberSMS_1); 
    delay(10000);                     
    sendSMS(textZone_1, numberSMS_2); 
    delay(10000);                     
    flagSensor_1 = 2;                 
  }


  if(flagSensor_2 == 1) {
    sendSMS(textZone_2, numberSMS_1); 
    delay(10000);                     
    sendSMS(textZone_2, numberSMS_2); 
    delay(10000);                     
    flagSensor_2 = 2;                 
  }


  if(flagSensor_3 == 1) {
    sendSMS(textZone_3, numberSMS_1); 
    delay(10000);                     
    sendSMS(textZone_3, numberSMS_2); 
    delay(10000);                     
    flagSensor_3 = 2;                 
  }


  if(flagSensor_4 == 1) {
    sendSMS(textZone_4, numberSMS_1); 
    delay(10000);                    
    sendSMS(textZone_4, numberSMS_2); 
    delay(10000);                     
    flagSensor_4 = 2;                
  }

  if(flagSensor_0 == 2 && digitalRead(pinSensor_0) != 0) flagSensor_0 = 0;
  if(flagSensor_1 == 2 && digitalRead(pinSensor_1) != 0) flagSensor_1 = 0;
  if(flagSensor_2 == 2 && digitalRead(pinSensor_2) != 0) flagSensor_2 = 0;
  if(flagSensor_3 == 2 && digitalRead(pinSensor_3) != 0) flagSensor_3 = 0;
  if(flagSensor_4 == 2 && digitalRead(pinSensor_4) != 0) flagSensor_4 = 0;
}


Шаг третий. Проверка работоспособности устройства.
Делаем простейшую сигналку на GSM SIM800L и Аrduino для дачи, гаража

При подаче напряжения питания пока загружаются модуль SIM800L и плата Arduino у вас есть примерно 20 секунд чтобы покинуть охраняемое помещение. На модуле SIM800L светодиод указывает на работу в сети- часто мигает это поиск сети, раз в пять секунд- работа в сети. Когда прибор найдет сеть разорвите соответствующие охранные входы, после этого произойдет дозвон или присылка СМС. Значит прибор работает нормально.

Фото СМС. К этому прибору можно будет включить любые охранные извещатели с выходами в виде контактов, реле от исполнительных устройств, только в соответствие с вашими потребностями и фантазией. В целом мы изготовили несложный, охранный прибор. Такой самодельный сторож можно сделать для организации охраны любых объектов. Чтобы включить прибор сигнализации нужно через выключатель на SIM800 и Аrduino подать 4,2 Вольта. При первого входа пройдет звонок на абонента №1, после переключится на №2. Дополнительный №2 предусмотрен для дублирования. Обрыв шлейфа №2,3,4,5 делает выдачу SMS с конкретным названием нарушенного шлейфа, соответственно на оба телефона. Все платы поместим в любом в подходящем корпусе. В общем я думаю это неплохой интересный приборчик который можно в дальнейшем развить далее-добавить функции GSM розетки, управление по DMTF и многое другое.

Подробнее можно посмотреть в видео

Всем желаю здоровья и успехов в жизни и творчестве!
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Чтобы написать комментарий необходимо войти на сайт через соц. сети (или зарегистрироваться):
Обычная регистрация
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
1 комментарий
  1. Иван_Похмельев
    можно применить другую плату, например ТР4056 с защитой
    Не можно, а нужно. Причём не абы какую, а, как правильно сказано, с защитой, то есть, кроме TP4056 должны быть ещё две мелкие ИС, включая DW01 или её аналог.
    Очень желательно кроме охранных шлейфов контролировать и напряжение на входе TP4056.

Добрый день, Гость!


Зарегистрируйтесь

А затем...

Добавьте самоделку

Или...

Добавьте тему

Онлайн чат

Опрос
Сколько по времени, чаще всего, Вы делаете самоделку?

Последние комментарии

Ещё лучше: "Ракета всегда летит от факела", то есть, независимо от того, куда летят искры, точка реза должна от них удаляться....
Придумал по-другому: "Если искры летят к тебе, нужно отодвигать от себя источник искр". ))...
С этим типа разобрались, но что на счет безопасности? В рожу точно не получу ошметки диска, стружку и т.д....
А вы прикиньте, что перед вами лист металла, только режете вы его с другой стороны от вас, короче не вперед, а назад. тогда получится так, как сказал Иван. П.С.... Хотя не, не получится...
Ну да, конечно, наоборот. Пока думал, как лучше выразить мысль, потерял её. ))...
Все комментарии