a6 GSM неприходят смс!
- Войдите на сайт для отправки комментариев
Пнд, 28/08/2017 - 22:19
Привет всем
Есть скетч
#include <SoftwareSerial.h>
#define GSM_RX 3 // пин RX на модуле подключаем к указаному пину на Ардуино TX
#define GSM_TX 2 // пин TX на модуле подключаем к указаному пину на Ардуино RX
SoftwareSerial gprsSerial(GSM_TX, GSM_RX); // установка контактовGSM_TX->RX и GSM_RX->TX для программного порта
#define RELE_ONE 6 // Пин для подключения реле 1
#define RELE_TWO 5 // Пин для подключения реле 2
String on_one = "on1"; // СМС которое включает данное реле ( можнопоменять на свое ) его и нужно слать
String off_one = "off1"; // СМС которое выключает данное реле ( можнопоменять на свое ) его и нужно слать
String on_two = "on2"; // СМС которое включает данное реле ( можнопоменять на свое ) его и нужно слать
String off_two = "off2"; // СМС которое выключает данное реле ( можнопоменять на свое ) его и нужно слать
String on_all = "on3"; // СМС которое включает данное реле ( можнопоменять на свое ) его и нужно слать
String off_all = "off3"; // СМС которое выключает данное реле ( можнопоменять на свое ) его и нужно слать
String reswitch_power = "rp3"; // СМС которое выключает, ждет 10сек.,ключает питание
// Устанавливаем номера администраторов ( номера с которых будутработать СМС с других номеров работать не будет )
const int allNumber = 3; // Указываем кол-во номеров ( которые ниже) админских, их кол-во сколько угодно от 1 и более
char* adminNumber[]={"+79297694384", "+79374225512", "+79374225512"};// Номер прописываем с "+"
String currStr = ""; // Переменная для хранения строки сообщения
boolean isStringMessage = false; // флаг на разрешение оброботки SMS
int i;
unsigned long timeInterval = 10L * 60L * 1000L;
unsigned long lastGetTime = 0;
//=======================================================================================================================
void setup()
{
Serial.begin(9600); // Для отладки выводит данные в монитор порта
gprsSerial.begin(115200); // Скорость соеденения с модулем GSM (если не работает пробуем разные скоростя ) 4800 SIM800L
delay(10000);
gprsSerial.println("AT+IPR=9600"); // Переходим на скорость 9600
delay(1000);
gprsSerial.begin(9600);
gprsSerial.println("AT+CLIP=1"); // Включаем АОН
delay(1000);
pinMode(RELE_ONE, OUTPUT);
pinMode(RELE_TWO, OUTPUT);
// Ставим их в истину так как реле включаются при подаче на них земли ( LOW)
// Если используем чтото другое вместо реле что требует обратноготогда ставим значение LOW
digitalWrite(RELE_ONE, LOW);
digitalWrite(RELE_TWO, LOW);
// настройка приема сообщений
gprsSerial.print("AT+CMGF=1\r"); // устанавливаем текстовый режимсмс-сообщения
delay(500); //
gprsSerial.print("AT+IFC=1, 1\r"); // устанавливаем программныйконтроль потоком передачи данных
delay(500);
gprsSerial.print("AT+CPBS=\"SM\"\r"); // открываем доступ кданным телефонной книги SIM-карты
delay(500);
gprsSerial.print("AT+CNMI=1,2,2,1,0\r"); // включает оповещение оновых сообщениях, новые сообщения приходят в следующем формате: +CMT:"<номер телефона>", "", "<дата, время>", ( +CMT:"+380xxxxxxxxx","","17/02/04,04:44:09+08" ) сразу за ним идет самосообщение с новой строки
gprsSerial.print("AT+CSCS=\"GSM\"\r"); // устанавливаем кодировку
//на следующей строчке с первого символа идёт содержимое сообщения
delay(700);
//sms("READY numm ADMIN", "+79374225512");delay(5000);///////////////////////////////////////////////////////////////////////////////////////////////
}
//====================================================================================================================
void loop()
{
if (millis() < lastGetTime) lastGetTime = 0;
if (millis() - lastGetTime > timeInterval || lastGetTime == 0) {
lastGetTime = millis();
gprsSerial.print("AT");
gprsSerial.print("AT+CMGD=\"1,4\"\r"); //Удоляем все сообщение на SIM картеAT+CMGD=1,4\\r
Serial.print(lastGetTime);
}
if (!gprsSerial.available()) { return; } // если не данных отмодуля SIM800l, то дальше не идем. Выходим из текущей итерации и сновазаходим в loop()
char currSymb = gprsSerial.read(); // записываем в переменуюсимволы, которые получили от модуля.
Serial.print(currSymb);
if ('\r' == currSymb){ // если получили символ перевода коректи вначало строки, это означает что передача сообщения от модулязавершена.
if (isStringMessage) { // если текущая строка – сообщение, то…
Serial.print(isStringMessage);
// currStr в данном месте строка содержит самосообщение которое и будем сравнивать.
//--- первое реле
//--------------------------------------------------------------
if (!currStr.compareTo(on_one)) { // если текстсообщения совпадает с on_one то включаем реле
digitalWrite(RELE_ONE, LOW);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );////////////////////////////////////////////////////////////////////////////////////
delay(2000);
sms("Rele_1_ON",adminNumber[i]); // Номерпрописываем полностью с "+"
delay(2000);
}
if (!currStr.compareTo(off_one)) { // еслитекст сообщения совпадает с off_one то выключаем реле
digitalWrite(RELE_ONE, HIGH);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );/////////////////////////////////////////////////////////////////////////////////////
delay(2000);
sms("Rele_1_OFF",adminNumber[i]); // Номерпрописываем полностью с "+"
delay(2000);
}
//-----------------------------------------------------------------------------
//--- второе реле
//--------------------------------------------------------------
if (!currStr.compareTo(on_two)) { // если текстсообщения совпадает с on_two то включаем реле
digitalWrite(RELE_TWO, LOW);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );///////////////////////////////////////////////////////////////////////////////////
sms("Rele_2_ON",adminNumber[i]); // Номерпрописываем полностью с "+"
}
if (!currStr.compareTo(off_two)) { // еслитекст сообщения совпадает с off_two то выключаем реле
digitalWrite(RELE_TWO, HIGH);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );///////////////////////////////////////////////////////////////////////////////
sms("Rele_2_OFF",adminNumber[i]); // Номерпрописываем полностью с "+"
}
//-----------------------------------------------------------------------------
//--- все реле
//--------------------------------------------------------------
if (!currStr.compareTo(on_all)) { // если текстсообщения совпадает с on_all то включаем реле
digitalWrite(RELE_ONE, LOW);
digitalWrite(RELE_TWO, LOW);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );////////////////////////////////////////////////////////////////////////////
sms("Rele_1_AND_2_ON",adminNumber[i]); //Номер прописываем полностью с "+"
}
if (!currStr.compareTo(off_all)) { // еслитекст сообщения совпадает с off_all то выключаем реле
digitalWrite(RELE_ONE, HIGH);
digitalWrite(RELE_TWO, HIGH);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );////////////////////////////////////////////////////////////////////////////////////
sms("Rele_1_AND_2_OFF",adminNumber[i]); //Номер прописываем полностью с "+"
}
//-----------------------------------------------------------------------------
// выключаем все реле, ждем 10сек., включаем все реле
if (!currStr.compareTo(reswitch_power)) { //если текст сообщения совпадает с reswitch_power
digitalWrite(RELE_ONE, HIGH);
digitalWrite(RELE_TWO, HIGH);
delay(10000);
digitalWrite(RELE_ONE, LOW);
digitalWrite(RELE_TWO, LOW);
Serial.println("NOMER ADMIN - " + String(adminNumber[i]) );//////////////////////////////////////////////////////////////////////////////////////////////
sms("Tral_power_is_reswitched",adminNumber[i]); // Номер прописываемполностью с "+"
}
//-----------------------------------------------------------------------------
isStringMessage = false;
gprsSerial.print("AT+CMGDA=\"DEL ALL\"\r"); //Удоляем все сообщение на SIM картеAT+CMGD=1,4\\r
delay(500);
}
else {
if (currStr.startsWith("+CMT")){ // +CMT:"+380xxxxxxxxx","","17/02/04,04:44:09+08" в данном месте строкасодержит такие данные
// если текущая строка начинается с "+CMT", тоследующая сообщение
for (i = 0; i <= allNumber; i++){ // числоallNumber - это количество заданных тел.номеров.
if (currStr.indexOf(adminNumber[i]) !=-1){ //сверяем номер с номером прешедним SMS если в полученнойстроке найдет нужную подстраку ( номер наш ) то вернет индекс началаискомой строки а если ненайдет строку то вернет -1
isStringMessage = true;
break;
}
}
}
}
currStr = ""; // Очищаем строку для следущего сообщения
}
else if ('\n' != currSymb) { // игнорируем второй символ впоследовательности переноса строки: \r\n , и
currStr += String(currSymb); //дополняем текущую командуновым сиволом ( посимвольно собераем строку с сообщением )
}
}
//===========================================================================================================================================
// Процедура для отправки СМС
void sms(String text, String phone) {
gprsSerial.println("AT+CMGS=\"" + phone + "\"");
delay(1000);
gprsSerial.print(text);
delay(300);
gprsSerial.print((char)26);
delay(300);
}
//======================================================================================
но смс так и не доходят
в мониторе
+CIEV: "SMSFULL",2
Нутром чую что забита симка а вот как ее почистить незнаю ((
И что подправить чтоб они не копились??
Заранее блогадарен!
Симку вставил в другой модуль а6 mini нет такого! Вопрос может ли смс храниться в модуле
У вас скетч для SIM900, а не для А6, примерно половина команд из процедуры setup несовместима с A6. В частности, настройки сохранения СМС в скетче нет совсем - а без такой настройки модем вообще не сохраняет входящие СМС.
У вас скетч для SIM900, а не для А6, примерно половина команд из процедуры setup несовместима с A6. В частности, настройки сохранения СМС в скетче нет совсем - а без такой настройки модем вообще не сохраняет входящие СМС.
хм страноо но 10 шт на таком скетче крутиться ((
b707 как с вами можно связаться?? Проконсультироваться по a6 mini?
мой скайп avolon2009
хм страноо но 10 шт на таком скетче крутиться ((
это достаточно занимательно, так как в скетче полно не вполне правильного или неудачного кода.
Например, строка 37 - SoftwareSerial не поддерживает скорость 115200
строка 39 - переключение скорости по команде IPR в модеме А6 не работает
В начале процедуры loop какие странные танцы с millis - переполнение, что ли обрабатываете? :)
В общем, на мой взгляд этот скетч работать не должен. Хотя может у вас A6 с какой-то новой прошивкой.
PS "Связывайтесь" со мной через форум - пишите вопросы тут. Заодно и другие может что посоветуют, на форуме несколько человек, активно работающих с этим модемом.
millis - это посылает команду АТ чтоб не заснул модуль!
Модуль а6 мини Скетч прекрасно работает!
Но Goouuu Tech IOT-GA6 пришол не работает да еще пишет SMSFULL
!
ТОгда подскажите как правильно его подключить к ардуино про мини ATmega 168 но так чтоб ноги 0 и 1 свободны так как на них уже сидит устройство!
Сейчас rx tx подключены к 3 и 2 -ой ноге!
я имел в виду строку 75
подключайте через SoftwareSerial, скорость не выше 38400. Чтобы задать скорость модему, никакие команды не нужны, у него подстройка скорости автоматическая- просто шлите в порт команду АТ на выбранной скорости, пока модем не ответит ОК -
Удалось как то решить проблему +CIEV: "SMSFULL",2 в модуле Но Goouuu Tech IOT-GA6?
У меня т очно такая же проблема с этим модулем, скетч на сим900 работал хорошо, а тут память забилась смс и почистить не получается
Подключил модуль а6 напрямую и дпл команду AT+CMGD= 1 тоесь удалить все сообщения.если не поможет то at&f сбросит все по умолчанию .както так
То есть эту команду надо каждый раз при включении модуля давать? Можно как то настроить чтобы смс не сохранялись а просто распечатывались?
у меня она выполняется после всех действий.
Можешь скинуть свой скетч на почту ka35b2@gmail.com ? Не получается до ума довести этот Но Goouuu Tech IOT-GA6
Можешь скинуть свой скетч на почту ka35b2@gmail.com ? Не получается до ума довести этот Но Goouuu Tech IOT-GA6
нафига вы купили эту хрень, на которую даже у китайцев нет документации?
С вашим уровнем знаний и такой квест. Мой совет - поменяйте модем на распространенный.
Я уже понял свою ошибку, заказан человеческий gsm модуль
а какой человеческий?????
А6 который популярный
это который без наклейки) Но на нем нельзя сохранить настройки ((А на том что у тя он может сохранять
У меня который очень не стабильный
У меня был до этого sim900 gprs shield, вообще не глючил пока я его не сломал. Надо будет еще один купить, просто он дороже
ссылку кинь на него.