Проблемы с SIM900

Тема в разделе "Arduino & Shields", создана пользователем Hilkov, 5 апр 2018.

  1. Hilkov

    Hilkov Нуб

    Добрый день. Заказал с Китая шилд https://ru.aliexpress.com/item/SIM9...32649551828.html?spm=a2g0s.9042311.0.0.WHGEdE
    При попытке подключить к ПК через ардуино отказывается отвечать на команды. Используется режим softwareserial. Пару раз удалось заставить его ответить, но при отсутствии каких-либо изменений он переставал это делать. Так и не удалось понять в чём же всё-таки проблема. При включении выдаёт в терминал несколько букв "я" на скорости 9600. Скетч в ардуино залит такой:
    Код (C++):
    #include <SoftwareSerial.h>
    #include <GPRS_Shield_Arduino.h>
    SoftwareSerial mySerial(7, 8);
    void setup()
    {
      mySerial.begin(9600);               // the GPRS baud rate
      Serial.begin(9600);                 // the GPRS baud rate
    }
    void loop()
    {
    if (Serial.available())
        mySerial.write(Serial.read());
    if (mySerial.available())
        Serial.write(mySerial.read());
    }
    [​IMG]
    Прошу помощи.
     
  2. Hilkov

    Hilkov Нуб

    После подключения через usb-uart начал работать нормально.
     
  3. Sov

    Sov Нерд

    Всем привет! Дабы не плодить аналогичные темы, продолжу тут. Мой SIM900 в принципе не реагиреут на АТ-команды. Зайду издалека: как его правильно подключать к UART? В сети видел пару вариантов, поэтому все не заработали.

    Наиболее логичным мне показался этот
    [​IMG]
    Я использовал плату usb-uart вместо Ардуино, а саму плату SIM900 запитал от внешнего источника напряжением 3,3В. И никакой реакции на АТ команды. Что я сделал не так?
    [​IMG]

    Нужно ли подключать батарейку внизу платы?

    [​IMG]
     
  4. Sov

    Sov Нерд

    Разобрался. Надо было кнопку на плате нажимать. Но, тем не менее, плата не реагирует на многие АТ-команды из этой таблицы. Это нормально?
     
    Последнее редактирование: 2 ноя 2018
  5. MDV

    MDV Гик

    Прошивка модема то какая?
     
  6. stasych

    stasych Нерд

    Тоже пытаюсь запустить такой же шилд на Mini Pro.
    После долгих тыканий получается что-то непонятное. При подключении шилда СИМ900 без ардуины, напрямую к СОМ порту компа шилд адекватно работает только на той скорости, которая проставлена в свойствах порта в диспетчере устройств. Ну это нормально. Шилд отвечает на все команды.

    А вот при подключении через ардуину все как то странно. Раньше было тупо эхо, которое никакой командой не отключается. То есть я ему "АТ" и он мне в обратку "АТ". Если перепутать местами Rx и TX то вообще никакой реакции. А теперь в скетче я прописываю 9600 а мониторе порта мне приходится прописать 115200, чтобы что-то увидеть (не квадратики). "arduino start 1" вижу а вот на команды никакой реакции нет.

    С каждым разом все интереснее и интереснее. В инете везде написано как подключить шилд к ардуино уно. Как кто подключал к минику я нигде не нашел. Может в этом случае есть какой-то подводный камень?

    Скетч стандартный. Вот такой:
    Код (C++):

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(9, 10);

    void setup() {
      Serial.begin(9600);
      mySerial.begin(9600);
    Serial.println("arduino start 2");
    }

    void loop() {
      if (Serial.available()) mySerial.write(Serial.read());
      if(mySerial.available()) Serial.write(mySerial.read());
      }
     
     
  7. MDV

    MDV Гик

    Скорость всех портов должна быть одинаковой на всех устройствах.
    в модем можно прописать одну скорость отключив тем самым автоопределение.
    классическая ошибка при подключении через ардуино забывают про землю (GND)
    и еще в скетче софт сериал на 9 и 10 на фото 7 и 8
     
  8. что это, леонардо? у него есть ограничение при работе с SoftwareSerial
    да и на 115200 SoftwareSerial не работает.
     
  9. stasych

    stasych Нерд

    Это вот такая фигня
    http://smartelements.ru/product/arduino-mini (не сочтите за рекламу)
     
  10. stasych

    stasych Нерд

    Про землю естественно не забыл. А расхождений по пинам у меня нет. Просто тему начинал другой человек.
    Еще интересный момент. Если взять пример из библиотеки GSM_GPRS

    Код (C++):
    #include "SIM900.h"
    #include <SoftwareSerial.h>
    //#include "inetGSM.h"
    //#include "sms.h"
    //#include "call.h"

    //To change pins for Software Serial, use the two lines in GSM.cpp.

    //GSM Shield for Arduino
    //www.open-electronics.org
    //this code is based on the example of Arduino Labs.

    //Simple sketch to communicate with SIM900 through AT commands.

    //InetGSM inet;
    //CallGSM call;
    //SMSGSM sms;

    int numdata;
    char inSerial[40];
    int i=0;


    void setup()
    {
      //Serial connection.
      Serial.begin(9600);
      Serial.println("GSM Shield testing.");
      //Start configuration of shield with baudrate.
      //For http uses is raccomanded to use 4800 or slower.
      if (gsm.begin(9600))
        Serial.println("\nstatus=READY");
      else Serial.println("\nstatus=IDLE");
    };

    void loop()
    {
      //Read for new byte on serial hardware,
      //and write them on NewSoftSerial.
      serialhwread();
      //Read for new byte on NewSoftSerial.
      serialswread();
    };

    void serialhwread(){
      i=0;
      if (Serial.available() > 0){          
        while (Serial.available() > 0) {
          inSerial[i]=(Serial.read());
          delay(10);
          i++;    
        }
       
        inSerial[i]='\0';
        if(!strcmp(inSerial,"/END")){
          Serial.println("_");
          inSerial[0]=0x1a;
          inSerial[1]='\0';
          gsm.SimpleWriteln(inSerial);
        }
        //Send a saved AT command using serial port.
        if(!strcmp(inSerial,"TEST")){
          Serial.println("SIGNAL QUALITY");
          gsm.SimpleWriteln("AT+CSQ");
        }
        else{
          Serial.println(inSerial);
          gsm.SimpleWriteln(inSerial);
        }  
        inSerial[0]='\0';
      }
    }

    void serialswread(){
      gsm.SimpleRead();
    }
    этот с скетч с включением той же SoftwareSerial работает !
     
  11. parovoZZ

    parovoZZ Гуру

    купи промикро. У неё два аппаратных сериала. Работают до мегабита в секунду. Выше не пробовал.
     
  12. Sov

    Sov Нерд

    Коллеги!

    Логическими состояниями на каких пинах SIM900 нужно управлять, чтобы на время сна модуль работал только на прием?
     
  13. Sov

    Sov Нерд

    Фиг ее знает. Но в итоге заработало.
     
  14. MDV

    MDV Гик

    Отправь в модем команду AT+GMR и посмотри ответ, в нем увидишь ревизию