gprs shield

Тема в разделе "Arduino & Shields", создана пользователем Redn, 23 ноя 2014.

  1. Redn

    Redn Гик

    подскажите какие пины жизнено необходимы для работы gprs шилда он у меня на Serial а не на SWserial . я правильно понел что достаточно подключить GND , 5-ти вольтовую линию , tx и rx ?
     
  2. geher

    geher Гуру

    Достаточно. Только в этом случае придется каждый раз при включении устройства отдельно включать модуль кнопкой (по крайней мере я не знаю моделей, включающихся просто при подаче питания).
     
  3. Redn

    Redn Гик

    подскажите как сделать это без кнопки ?
     
  4. geher

    geher Гуру

    У gprs шилда обычно имеется еще один задействованный пин для управления питанием (какой именно, может зависеть от конкретной модели, у того, что продается в Амперке, это девятый).
    В некоторых шилдах для активации этого пина надо что-то там запаять или разрезать. Это уже надо читать описание к конкретному шилду. У того, что в Амперке, работает и так.

    При инициализации (в setup) в последовательный порт шилда посылается команда AT. Если в течении некоторого времени в ответ не поступает OK, то на пин управления питанием на две секунды подается HIGH, после чего нужна задержка на некоторое время для включения шилда и нахождения им сети оператора сотовой связи. Вроде хватает десяти секунд.
    Для шилда, доступного в Амперке это может выглядеть примерно так:
    Код (Text):

      pinMode(9, OUTPUT);
      Serial.print("AT\r");
      delay(300);
      if (!waitOK()) {
      // Включаем GPRS Shield
      digitalWrite(9, HIGH);
      delay(2000);
      digitalWrite(9, LOW);
      delay(10000);
      }
     
    Функция waitOK:
    Код (Text):

    String currStr = ""; //считается, что лучше сделать статиком в функции,
                                        //но мне кажется, что так понятнее
    boolean waitOK()
    {  
        while (Serial.available()) {
            char currSymb = Serial.read();
            if ('\r' == currSymb) {
                if (!currStr.compareTo("OK"))  return(true);
                currStr = "";
            } else if ('\n' != currSymb) currStr += String(currSymb);
        }
        return(false);
    }
     
     
    Последнее редактирование: 23 ноя 2014
  5. Redn

    Redn Гик

    спасибо geher не хошеч по участвовать в моем проекте ? все железо и т д на мне
     
  6. geher

    geher Гуру

    Нет, у меня своей работы хватает.