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, вообще не глючил пока я его не сломал. Надо будет еще один купить, просто он дороже
ссылку кинь на него.