#1 2019-04-12 23:38:52

GmmC
Учасник
Зареєстрований: 2019-04-12
Повідомлень: 5

Помогите разобраться со скетчем.

Сигнализация gsm на модуле sim800L,
Извините но очень нужна эта вещь. Изучать основы программирования стал не давно, так как вынудили обстоятельства.
Посмотрите пожалуйста код,  компилируется но отказывается работать. Модуль регистрируется в сети.
Подскажите пожалуйста может где то в коде? просторы интернета прошерстил пока без результатов, сильно не плюйтесь на меня.


#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 = "+380XXXXXXXXX";
String input_string = "";
String smsContent = "";
char sirena[] = "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(5)==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(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
    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(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);
          }

Скетч использует 12036 байт (37%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 1099 байт (53%) динамической памяти, оставляя 949 байт для локальных переменных. Максимум: 2048 байт.

Инфа в мониторе порта
00:21:28.345 -> RIC: ⸮⸮⸮
ATT: OK
00:21:28.956 -> RIC: ATT: OK
RIC: ⸮⸮⸮

00:21:28.990 -> ERROR
00:21:28.990 ->
115200
ATT: OK
00:21:39.169 -> RIC:
ATT: OK
00:21:39.781 -> RIC: ATT: OK
RIC:

00:21:39.781 -> ERROR
00:21:39.781 ->
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp

00:21:58.068 -> status=IDLE

Остання редакція GmmC (2019-04-13 00:26:18)

Неактивний

#2 2019-04-13 07:09:08

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Помогите разобраться со скетчем.

Сначала убедитесь в работоспособности модема и всей сборки в целом, подавая комманды с теминала Ардуино. Желательно использовать второй аппаратный UART, а не SoftwareSerial (это Мега, Леонардо ...). Что надежнее. Проверьте качество электропитания и правильность сборки. Модем может потреблять, импульсно, до 2А. А затем сочиняйте программу. Для отладки, с терминала, можете использовать эту простейшую программку.

/*
  Redirection the GSM modem to the terminal
 */
#include "Arduino.h"

int gsm = A1; /* DTR */

void setup() {                
  pinMode(gsm, OUTPUT);
  digitalWrite(gsm, HIGH);
  Serial.begin(9600);
  Serial1.begin(9600);
}

char c;

void loop() {
	if ((c = Serial.read()) >= 0) Serial1.print(c);
	if ((c = Serial1.read()) >= 0) Serial.print(c);
}

А отладкой ваших сочинений, здесь, наврядли кто заниматься будет. Желаю упехов.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму