Arduino Uno&GSM Shield SIM900 (aliexpress)

Тема в разделе "Arduino & Shields", создана пользователем Иван Н. Пулькин, 30 ноя 2015.

  1. Vasich

    Vasich Нуб

    т.е. если ее поставить "сверху", она бы и не заработала?

    Я соединил как у Вас - ноль эмоций. Сим карта активна, при звонке на шилд идут гудки, но на АТ команды из "монитора порта" нет ответа никакого.

    Подключение у меня вот так:
    IMG_20161211_231604.jpg


    Монитор вот так:


    Снимок экрана 2016-12-11 в 23.26.16.png

    правда я не совсем понимаю, важно ли, какой скетч залит...

    Пробовал подключать к Iskra JS, она ругается, что не видит модуль, - типа нужен status pin, я не совсем понимаю, куда подключиться (какой на Искре пин и особенно какой пин "статус" на Sim900).
     
  2. MDV

    MDV Гик

    Перемычки стоят на софт уарт, а проводочки воткнуты в хард уарт
     
  3. MDV

    MDV Гик

    какой скетч залили в МК?
     
  4. Vasich

    Vasich Нуб

    Перемычки и RX/TX - все было точно так, как в исходном посте, выше я его процитировал. Но пробовал и переставлять перемычки, в т.ч. и в среднее положение и подпаиваться к UART что на углу платы - никакой разницы.


    Переставил провода в 7 и 8, залил вот такой скетч:

    //Serial Relay - Arduino will patch a
    //serial link between the computer and the GPRS Shield
    //at 19200 bps 8-N-1
    //Computer is connected to Hardware UART
    //GPRS Shield is connected to the Software UART
    #include <SoftwareSerial.h>
    SoftwareSerial GPRS(7, 8);
    unsigned char buffer[64]; // buffer array for data recieve over serial port
    int count=0; // counter for buffer array
    void setup()
    {
    GPRS.begin(19200); // the GPRS baud rate
    Serial.begin(19200); // the Serial port of Arduino baud rate.
    }
    void loop()
    {
    if (GPRS.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield
    {
    while(GPRS.available()) // reading data into char array
    {
    buffer[count++]=GPRS.read(); // writing data into array
    if(count == 64)break;
    }
    Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
    clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
    count = 0; // set counter of while loop to zero
    }
    if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
    GPRS.write(Serial.read()); // write it to the GPRS shield
    }
    void clearBufferArray() // function to clear buffer array
    {
    for (int i=0; i<count;i++)
    { buffer=NULL;} // clear all index of array with command NULL
    }


    ничего в мониторе. Набираю AT, нажимаю ввод - тишина в ответ. На ардуинке при нажатии "ввод" мигает один раз почему-то RX.
     
    Последнее редактирование: 13 дек 2016
  5. MDV

    MDV Гик

    Убирай проводочки и втыкай шилд в МК перемычки на модеме в положение софт уард (средние и дальние от края платы) модем принудительно включить. Возможно придётся поиграть скорость порта. Рабочий скетч выложу позже.
     
  6. MDV

    MDV Гик

    лови
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(7, 8);
    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());
    }
     
  7. Vasich

    Vasich Нуб

    Убрать провода не получится, у шилда нет ножек. Гребенка у меня есть, но домашний паяльник для грубых работ, паяльная станция только на работе, все забываю взять... но физически контакт есть, все стабильно звонится, провода облужены и зачищены.

    Скетч залил, набираю AT "ввод", тишина :( хоть осциллграф домой тащи :( Соединено вот так сейчас (две земли на всякий случай, пробовал и с одной, ничего не меняется). Шилд включен принудительно кнопкой, сеть поймал, но на AT команды реакции нет:


    IMG_20161213_234337.jpg
     
  8. MDV

    MDV Гик

    Посмотрел фотки шилда действительно у вас полный китаец исходя из фотки при таком положении перемычек как на фото подсоединять проводки надо к 0 и 1 пину на шилде.
     
  9. Vasich

    Vasich Нуб

    Подключил провода на шилде к 0 и 1, на МК они на 7 и 8, менял местами RX и TX, тишина.

    Залил вот такой скетч:

    Код (C++):
    /*
      SerialPassthrough sketch

      Some boards, like the Arduino 101, the MKR1000, Zero, or the Micro,
      have one hardware serial port attached to Digital pins 0-1, and a
      separate USB serial port attached to the IDE Serial Monitor.
      This means that the "serial passthrough" which is possible with
      the Arduino UNO (commonly used to interact with devices/shields that
      require configuration via serial AT commands) will not work by default.

      This sketch allows you to  emulate the serial passthrough behaviour.
      Any text you type in the IDE Serial monitor will be written
      out to the serial port on Digital pins 0 and 1, and vice-versa.

      On the 101, MKR1000, Zero, and Micro, "Serial" refers to the USB Serial port
      attached to the Serial Monitor, and "Serial1" refers to the hardware
      serial port attached to pins 0 and 1. This sketch will emulate Serial passthrough
      using those two Serial ports on the boards mentioned above,
      but you can change these names to connect any two serial ports on a board
      that has multiple ports.

       Created 23 May 2016
       by Erik Nyquist
    */


    void setup() {
      Serial.begin(9600);
      Serial1.begin(9600);
    }

    void loop() {
      if (Serial.available()) {      // If anything comes in Serial (USB),
        Serial1.write(Serial.read());   // read it and send it out Serial1 (pins 0 & 1)
      }

      if (Serial1.available()) {     // If anything comes in Serial1 (pins 0 & 1)
        Serial.write(Serial1.read());   // read it and send it out Serial (USB)
      }
    }

    стала отвечать. Провода при этом и на шилде и на леонардо в 0 и 1, перемычки остались как на фото выше.

    Снимок экрана 2016-12-14 в 10.56.58.png
     
    Последнее редактирование: 14 дек 2016
  10. MDV

    MDV Гик

    Посмотрел описание МК, всё правильно, проводки на МК должны быть на 0 и 1
    это объясняет почему мой скетч у тебя не заработал (особенности Леонардо).
    В любом случае молодец.