Ардуино+Sim800L. Не высылает смс
- Войдите на сайт для отправки комментариев
Пнд, 26/10/2020 - 16:24
Всем добрый день! Собрал ардуино, сим800л, код прошил и все сделал.
При получении смс (0,1) порт начинает чудить и смс не приходит
КОД:
#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 = "+79130000012";
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(4800)) {
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(+79137832359, 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(+79137832359, 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);
}
КУСОЧЕК ИЗ ПОРТА
RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: AT+CMGD=254 ERROR ATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: AT+CMGL ATT: OK RIC: AT+CMGL="REC UNREAD" ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready ATT: OK RIC: AT+CMGL="REC UNREAD" ERROR SMS Ready Что делать не понимаю. Кто поможет +1 к карме от меня :)
в строчках 48 и 57 чушь, оно даже компилироваться не должно
Маловато будет
А как поправить?
Там сверху не мой номер, а уже внизу мой появился
заменить номер на n?
Маловато будет
[/quote]
Увеличим ставку :))
вы в этом коде вообще ничего не понимаете?
Вы в строке 47 зачем номер в символьный массив переводите? Чтобы в строке 48 вбить номер в виде числа? - так не работает и не должно
Подправил... Ошибка не ушла...
Я не могу понять, как избавиться от
Запустился сразу и все работает, может не только в коде проблема?
Я не могу понять, как избавиться от
для начала: у вас модем SIM800L а библиотеку подключаете SIM900.h - вы уверены что они совместимы?
по поводу команды
AT+CMGL="REC UNREAD"- с большой вероятностью модем не в режиме обычных SMS потому и ошибку выдает - откройте даташит на модем и там черным по английски написаноа режим переключается командой AT+CMGF