arduino gsm module

Тема в разделе "Arduino & Shields", создана пользователем Galymzhan91, 10 май 2014.

  1. Galymzhan91

    Galymzhan91 Нуб

    Здравствуйте! Я делаю проект как на ссылке,
    http://www.instructables.com/id/Version-20-Arduino-Controlled-Car-Tracking-System/
    все сделал как написано, но он мне не отправляет смс. мое мнение gsm модуль не понимает команды. как можно узнать понимает ли модуль команды или нет?
     
  2. Airbus

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

    Отправьте ему АТ (латинскими) если ответит ОК то всё он понимает
     
  3. Galymzhan91

    Galymzhan91 Нуб

    понимать то понимает, только через терминал. А вот через ардуино не получается чтобы ардуино посылал команды на модем. и не могу получить ответ от модема, какие команды считывает сигналы с модулю и принтывает?
     
  4. pshtettt

    pshtettt Нуб

    Здравствуте! Помогите разобраться с кодом. GSM модуль SIM900 подключен к arduinoMega 2560 напосал функцию для порверки ответа на команду AT, ответ есть но проблема с inSizze значение разное в начальных итерациях то 63 то 20, а стабильно почему то 6 хотя должно быть 3(но в итоге поставил 70 "с запасом") если меньше то виснет.
    А в условии где смотрим последний символ и хотим в тетминатор добавить \0 вообще не заходит.
    Код (Text):
    void ListenGSMOK()
    {
      int x=0;
      do // выполняем пока x<1
    {
      Serial3.print("ATE0\r");
      Serial3.print("AT\r");
      Serial.println("ListenGSMOK");
      Serial3.flush();
      Serial.flush();
      delay(200);

      pinMode(LEDOK, OUTPUT); //
      digitalWrite(LEDOK, HIGH); //

      char str[70]={0}; //
      int inSizze=0; // Переменная которая будет содержать размер буфера

      if (Serial3.available() > 0)
      {
        inSizze = Serial3.available(); // Получаем длину строки и записываем ее в переменую
            Serial.println(inSizze);

        for (int i = 0; i < inSizze; i++)
        {
          while(!Serial3.available()){} ; // ждем прихода следующего символа
          str[i] = Serial3.read(); // Читаем каждый символ, и пишем его в массив

            if (str[inSizze] == '\r')
            {
              str[inSizze++] ='\0';  //Добавляем нуль терминатор
              Serial.println(inSizze);
            }
        }
     
        if (!strcmp(str,"OK") == 0) // Сравниваем массив используя функцию strcmp
        {
          //Serial.print(str);
          Serial.println("OK");
          x=2;
    ///////////////////////////////////////////////////////////////////
    //          Этот кусок кода выводит что все же пришло???                     //
    //      Serial.print("Error command! ");                                                        //
    //      for (int i = 0; i < inSizze; i++)                                                              //
    //      {                                                                                                                  //
    //        //Serial.println (sizeof(str));                                                              //
    //        Serial.print(str[i]);                                                                                //
    //      }                                                                                                                   //
    ///////////////////////////////////////////////////////////////////
        }
      }
      digitalWrite(LEDOK, LOW); //
    }
    while(x<1);
    Serial.println("GOOD");
    }
     
    Последнее редактирование: 13 май 2014