Icomsat 1.1 и mega 2560

Тема в разделе "Arduino & Shields", создана пользователем tEarth, 14 сен 2015.

  1. tEarth

    tEarth Нуб

    [​IMG]

    Недавно преобрел себе gprs шилд icomsat 1.1 (ali: http://ru.aliexpress.com/item/SIM90...358.html?adminSeq=202245229&shopNumber=117143). Подключаю по usb к меге 2560. Код:

    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial gSerial(2, 1); // RX, TX


    void setup() {
    delay(30000);
    gSerial.begin(9600);
    Serial.begin (9600);
    Serial.println("Hello!");
    gSerial.print("AT");

    }

    void loop() {

      delay(1000);

      if ( gSerial.available()>0 )
      {
        Serial.println( gSerial.read() );
        }
       
    if ( gSerial.available()==0 )
    {
      Serial.println("No data");
    }
      delay(1000);
     
       

    }
    [​IMG]

    На AT команды не реагирует, пробовал подключать к другим пинам(50, 51) - результат тот же. Пробовал подключталь внешнее питание 9 В - не помогло. Поиски решения в гугле ни к чему не привели. Что делать?
     
  2. Unixon

    Unixon Оракул Модератор

    А светодиоды на шилде что показывают?
     
  3. tEarth

    tEarth Нуб

    При включении мигает в течении примерно 5 секунд раз в секунду, затем примерно раз в три секунды.
     
  4. geher

    geher Гуру

    Я правильно понял, что шилд воткнут в мегу, а перемычки, обведенные на фото красным, определяю, на какие пины придет последовательный порт?
    Если так, то
    1.
    Т.е RX пин на меге в SoftwareSerial не может быть 2.
    Сложно сказать, как это можно обойти лля данного конкретного шилда. Возможно (глядя на расположение перемычек) достаточно будет кинуть проводом с крайних рядов на нужные пины (аналогично тому, как оно соединяет крайний ряд с центральным, который, судя по маркировке, отображается на пины от 0 до 7)
    2. Даже если бы была не мега или если перенести только RX.
    TX для SoftwareSerial совпадает c TX для аппаратного Serial. Мажет быть чревато ненужными пересечениями отладочной выдачи и работы с шилдом.
     
  5. MDV

    MDV Гик

    Пробуй разные скорости. Возможно модем на трое на другую скорость.
     
  6. MDV

    MDV Гик

    Второе пины 0 и 1 это нард сериал назначьте совтовый на 2 и 3 пины
     
  7. MDV

    MDV Гик

    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3);
    void setup()
    {
      mySerial.begin(19200);              // the GPRS baud rate
      Serial.begin(19200);                // the GPRS baud rate
    }
    void loop()
    {
      if (mySerial.available())
        Serial.write(mySerial.read());
      if (Serial.available())
        mySerial.write(Serial.read());
    }
    напоследок, лови сто процентов рабочий код.
     
  8. tEarth

    tEarth Нуб

  9. MDV

    MDV Гик

    давай по порядку.
    1. поменяй в скетче скорость на 9600
    2. вставь модем в мегу
    3. перемычки на модеме поставь на 2 и 3 пины
    4. попробуй перекинуть 2 и 3 пины местами
     
  10. geher

    geher Гуру

    1. Tx вроде надо к Rx (навеяно фото из магазина, где внутренний ряд, помеченный как TxD соединен с нулевым пином - Rx). Следовательно, внутренний ряд надо соединять с Rx ардуины, это раз.
    2. Если задействовать пару пинов 18-19, то, поскольку это аппаратный порт меги, лучше внутренний ряд соединить с 19, а внешний (который ближе к краю шилда) с 18. А работать с этой парой не через SoftwareSerial (у которого на меге RX ни на одном пине из этой пары работать не будет), а через аппаратный Serial1.
    Т.е. убираем SoftwareSerial mySerial(х,у);
    а остальные вхождения mySerial меняем на Serial1.
    Если не сработает, можно попробовать поменять местами соединения с 18 и 19 пинами.
     
  11. tEarth

    tEarth Нуб

    Не работает.
     
  12. tEarth

    tEarth Нуб

    [​IMG]
    [​IMG]

    Я не ожидал этого, большое спасибо. (подключение шилд-> ардуино TX->RX, RX->TX)