Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Делаем простейшую сигналку на 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 и многое другое.

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

    Всем желаю здоровья и успехов в жизни и творчестве!
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Как сделать простую ультразвуковую сигнализацию на Arduino своими руками

    8.9
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8.5
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8.2
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 8.52 из 10 (голосов: 11 / История оценок)

    Добавить комментарий

    3 комментария
    Гость Александр #27945
    Есть вопрос, резистеры 10кОм 10вт надо или 0.25вт или как ?
    a1a #24770
    День добрый. а можно что нибудь дописать, чтобы при удачном дозвоне, входы блокировались? чтобы избежать циклического дозвона при присутствии низкого уровня на одном из входов!
    Иван_Похмельев #17420
    можно применить другую плату, например ТР4056 с защитой
    Не можно, а нужно. Причём не абы какую, а, как правильно сказано, с защитой, то есть, кроме TP4056 должны быть ещё две мелкие ИС, включая DW01 или её аналог.
    Очень желательно кроме охранных шлейфов контролировать и напряжение на входе TP4056.

    Привет, Гость!


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

    Или войдите на сайт, если уже зарегистрированы...

    Войти

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

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

    Онлайн чат

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

    Все комментарии