Всем привет! Купил на амперке шилд GPRS Shield v 2.0 от seeed. Такая проблема - шилд работает и отправляет смски тоже, но ровно 7 раз. На 8 зависает и помогает только резет всей платы. Думал, что причина в переполнении смсок в preferred message storage, но удаление всех смс при каждой отправке AT командой AT+CMGD=1,4 не помогло. Правильная ли команда и в чем еще может быть причина? Пользовался этими 2 гайдами: http://wiki.amperka.ru/беспроводная-связь:gprs-shield http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0 Скетч - при отправке t в Serial Monitor отправлять смску на номер: Код (C++): #include <SoftwareSerial.h> #include <String.h> SoftwareSerial gprsSerial(7,8); void setup() { gprsSerial.begin(19200); // GPRS shield baud rate Serial.begin(19200); delay(500); } void loop() { if (Serial.available()) { switch(Serial.read()) { case 't': SendTextMessage(); break; } } if (gprsSerial.available()){ Serial.write(gprsSerial.read()); } } void SendTextMessage() { Serial.println("Sending Text..."); gprsSerial.print("AT+CMGD=1,4\r"); delay(100); gprsSerial.print("AT+CMGF=1\r"); // Set the shield to SMS mode delay(100); gprsSerial.println("AT+CMGS = \"+7xxxxxxxxxxx\""); delay(100); gprsSerial.println("hello world"); //the content of the message delay(100); gprsSerial.print((char)26);//the ASCII code of the ctrl+z is 26 (required according to the datasheet) delay(100); gprsSerial.println(); Serial.println("Text Sent."); }
Между СМС есть паузы? SIM900 пишет, что после АТ-команды на СМС может быть задержка до 60с. То есть, нельзя слать СМС чаще.
Попробовал.У меня всё работает отправил 12 СМС больше не стал Оператор МТС СпБ Код немного оптимизировал и переписал.Пользуйтесь на здоровье! Код (C++): void setup() { Serial.begin(19200); delay(500); } void loop() { if (Serial.available()) // Если есть что читать switch(Serial.read()) // Читаем { case 't': // если пришло 't' Send(); // отправляем СМС break; //выходим case 'd': // если пришло 'd' Dial(); // звоним break; //выходим } } /* * отправка СМС */ void Send() { Serial.print("AT+CMGF=1\r"); // тип СМС текст delay(100); // пишем номер с кодом страны для россии +7 // +79121234567 Serial.println("AT+CMGS = \"+79121234567\""); delay(100); Serial.println("How are you today?"); //сам текст delay(100); Serial.println((char)26);//и признак конца смс delay(1000); //между смс делаем паузу 1 сек } /* * набор номера */ void Dial() { Serial.println("ATD+79222720088;");// набираем номер в международном формате delay(1000); // делаем паузу 1 сек }
У меня МТС не позволял отправлять СМС каждые 5 секунд. Увеличил период следования до 1 минуты. Иначе модуль "отправляет", но ничего не приходит на телефон.