seeed gprs shield зависает после отправки 7 SMS

Тема в разделе "Arduino & Shields", создана пользователем frostel, 7 фев 2016.

Метки:
  1. frostel

    frostel Нуб

    Всем привет!

    Купил на амперке шилд 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.");
    }
     
  2. MDV

    MDV Гик

    Попробуй другого оператора.
     
  3. BGreen

    BGreen Нерд

    Между СМС есть паузы? SIM900 пишет, что после АТ-команды на СМС может быть задержка до 60с. То есть, нельзя слать СМС чаще.
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Надо попробовать поюзать.Вопрос а зачем там #include <String.h>? + Читаете данные с Serial куда?
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Попробовал.У меня всё работает отправил 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 сек
      }
     
  6. BGreen

    BGreen Нерд

    У меня МТС не позволял отправлять СМС каждые 5 секунд. Увеличил период следования до 1 минуты.
    Иначе модуль "отправляет", но ничего не приходит на телефон.