нужна помощь sim800l сигнализация

Нет ответов
artemon25
Offline
Зарегистрирован: 25.12.2015

Всем здрасьте нужна помощь с Sim800L не пойму ошибка в скетче или ошибка при подключении вообщем проблема следующая. вот код сигнализации который работает с датчиками движение на пинах 6и7

#include "SIM900.h"
#include <SoftwareSerial.h>
#define photoPin 8
#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 = "+79184830000";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] = "Wnimaniye! Dvijeniye na objekte!";
char smsDv2[] = "Wnimaniye! Dvijeniye na objekte 2!";
char smsDv3[] = "Wnimaniye! LAZER na objekte !";
char smsDv4[] = "Wnimaniye! SVETA NET!";
char smsDv5[] = "Wnimaniye! SVET DALI!";
char smsW[] = "Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {

  pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW);
  pinMode(13, OUTPUT); //диод вкл/выкл
  digitalWrite(13, LOW);
  pinMode(12, OUTPUT);  //лазер
  digitalWrite(12, LOW);

  Serial.begin(9600);
  pinMode(6, INPUT); // датчик движения
  pinMode(7, INPUT); // еще какой-нибудь датчик
  pinMode(photoPin, INPUT);
  // pinMode(8, INPUT); // еще  ФОТОЭЛЕМЕНТ
  pinMode(9, INPUT); // еще ЭЛЕКТРИЧЕСТВО
  if (gsm.begin(4800)) {
    Serial.println("\nstatus=READY");
    started = true;
  } else Serial.println("\nstatus=IDLE");

}
void loop() {

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

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



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

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

  //===========================Первое срабатывание лазера
  int photoVal = digitalRead(photoPin);
  if ((photoVal == LOW)&& sensor1 == 1 && flag1 == 0) {
  digitalWrite(11, HIGH);
    //Serial.print("1");
    n1.toCharArray(n, 20);
    sms.SendSMS(n, smsDv3);         // Посылаем СМС о том, что СРАБОТАЛ ЛАЗЕР
    sms.DeleteSMS(1); memset(n, 0, 20);
    char smsbuffer[160] = "";
flag1++;
   
    delay(5000); // Ждем 5 секунд
  }
  //===========================Повторное срабатывание  лазера
  if ((photoVal == LOW)&& sensor1 == 1 && flag1 == 1) {
  digitalWrite(11, HIGH);
    //Serial.print("0");
    n1.toCharArray(n, 20);
    sms.SendSMS(n, sirena);           // Посылаем СМС о том, что включена сирена
    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(13, LOW); digitalWrite(12, LOW);digitalWrite(11, 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; digitalWrite(13, HIGH); digitalWrite(12, HIGH); input_string = ""; char smsbuffer[160] = ""; flag1 = 0;
    }

    sms.DeleteSMS(pos); // удаляем СМС  из симки
  }
}
void getsms()
{
  sms.GetSMS(1, n, 20, smsbuffer, 160);
  input_string = String(smsbuffer);
}

меня интересует photoPin подключенный к пину 8 там подключен фоторезистор вот такой (https://ru.aliexpress.com/item/KY-018-Photoresistor-Sensor-Light-Detecti...)при установки на сигналку тоесть отправив смс с цифрой 1 сразу срабатывает датчик приходит смс сработал лазер и задержка 5 секунд затем срабатывает зуммер.

сам фоторезистор проверял на вот таком скетче и всё работает отлично 

#define photoPin 8
#define LedPin 11

void setup()
{
  Serial.begin(9600);
  pinMode(photoPin, INPUT);
  pinMode(LedPin,OUTPUT);
}

void loop()
{
  int photoVal = digitalRead(photoPin);

  //Если обнаружили движение
  if(photoPin == LOW)
  {
    digitalWrite(LedPin, LOW);
    Serial.print("0");
   delay(2000);
  }
  else
  {
    Serial.print("1");
    digitalWrite(LedPin,HIGH);
     delay(2000);
  }
}

а вот при осливание скетча он компилируется и заливается но вот этот момент с фоторезистором непонятен. Буду благодарен за каждую подсказку и поправку