GSM сигнализация

Andry28
Offline
Зарегистрирован: 27.10.2018

Добрый всем день. Я в Arduino новичок. Есть модуль SIM800L, Arduino mini 328, HFS-DC06H. Облазил весь интернет, схем сигнализаций море. Нужна самая простая. после установки сигнализации с помощью SMS на охрану,при сработке HFS-DC06H модуль SIM800L делает дозвон на определенный номер, если движение прекращается модуль сам встает в охрану пока не дать команду SMS об отмене.

Andry28
Offline
Зарегистрирован: 27.10.2018

Схема сигнализации

Andry28
Offline
Зарегистрирован: 27.10.2018

собирал на UNO с отправкой SMS, работает.

Amid
Offline
Зарегистрирован: 03.12.2016

а где же код? :)

Andry28
Offline
Зарегистрирован: 27.10.2018
#include "SIM900.h"
#include <SoftwareSerial.h>
 
#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;
 
//=================Пины 2 и 3 для Подключения GSM модуля
 
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+79050000000";
String input_string = "";
String smsContent = "";
char smsD[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];
 
void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 //pinMode(7, OUTPUT);
 
Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
  digitalWrite(4, HIGH);
 // pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);
 
       if (gsm.begin(9600)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");
 
}
void loop() {
 
//===========================Первое срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(3000); // Ждем 3 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsD);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }
 
  // if (flag1>=2){
   // tone(10, 2780, 200); // Сирена 
  //}
 
 
pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС
 
     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }
Andry28
Offline
Зарегистрирован: 27.10.2018

Собирал с этим кодом, все работает. только SMS шлет при сработке, а мне нужен дозвон и при окончании движения чтоб сигнализация сама в работу (охрану) вставала.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
Andry28
Offline
Зарегистрирован: 27.10.2018

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля

int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+7905000000";
String input_string = "";
String smsContent = "";
char smsD[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 //pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
  digitalWrite(4, HIGH);
 // pinMode(5, INPUT); // еще какой-нибудь датчик
//  digitalWrite(5, HIGH);

       if (gsm.begin(9600)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(3000); // Ждем 3 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsD);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  // if (flag1>=2){
   // tone(10, 2780, 200); // Сирена 
  //}


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }