GSM Shield SIM 900R от амперки -все вопросы сюда!

Тема в разделе "Arduino & Shields", создана пользователем НКВД, 30 янв 2016.

  1. jjdrive

    jjdrive Нерд

    Как правильно на этом шилде обработать USSD запрос?
     
  2. Pit_10

    Pit_10 Нуб

    A-GPS на этом Шилде.
    Признаюсь, только начал изучать данную тему, но меня удивляет вот что:
    ПРЕДИСТОРИЯ:
    1. В 90е был популярен один сотовый телефон, у него у первого появилась полифониия (это еще не mp3 а всего-лишь midi) для рингтона и не монохромный в с 4мя оттенками серого ЖК дисплей. Вроде это был Alcatel. Могу ошибаться. Он стал настолько популярен что в сети появились альтернативные прошивки. В одной из таких прошивок можно было просматривать открытые данные сотовых вышек, которые видны телефону в настоящее время, в том числе их GPS координаты, и относительную мощность сигнала (ну, типа можно сделать вывод насколько далеко от телефона вышка, или сколько преград между ними).
    2. Первые Google и Ya карты появились у меня на Java телефоне, в котором GPS точно не было. Тем ни менее, с помощью триангуляции по доступным сотовым вышкам, эти карты определяли GPS координаты с точностью до перекрестка в городах, и сотнях метров на трассах за городом.

    ВОПРОС:
    Ни в мануалах, ни в описаниях, и даже на этом форуме не смог найти информацию о том, как с GPRS Shield получить данные о от вышек сотовой связи. Допускаю, что ищу не те слова. По сути, на программном уровне достаточно легко будет создать что-то вроде A-GPS, в случаях когда нужно определить местоположение устройства, но точность не требуется.
     
  3. MDV

    MDV Гик

    Поищи в интернете по запросу прошивка sim900 на одном из сайтов есть упоминания о прошивке которая может это делать
     
  4. rlepricon

    rlepricon Нуб

    Добрый день.

    Помогите разобраться:
    Делаю устройство для открывания ворот по звонку с телефона.
    Звонок проходит, команда на открывание ворот передаётся, после чего звонок отбивается.
    Но после того как звонок отбился, на устройство приходит SMS:
    From number: +79ХХХХХХХХХ
    Recieved Message: 042D0442043E0442002004300431043E043D0435043D0442002004370432043E043D0438043B002000310020044004300437002C0020043F043E0441043B04350434043D043804390020002D0020044104350433043E0434043D044F00200030003800

    Код обработки звонка ниже:
    Код (C++):
      if (gprs.ifcallNow()) {
        if (gprs.isCallActive(phoneNumber)) {
          if (checkPhone(phoneNumber)) {
            digitalWrite(4, HIGH);
            delay(2000);
            digitalWrite(4, LOW);
            Serial.println("Command sent to the door.");
            if (timer > 0) {
              timerFlag = true;
            }
          }
          delay(3000);
          gprs.hangup();
        }
      }
    После этой СМСки, остальные СМСки не доходят. Но если перегрузить устройство, и до звонка отправлять SMS, то СМСки нормально приходят и обрабатываются.
    Код обработки СМС:
    Код (C++):
    if (gprs.ifSMSNow()) {
        char smsMessage[160];
        char datetime[50];
        char cmd[3];
        char param[10];
        gprs.readSMS(smsMessage, phoneNumber, datetime);
        Serial.print("From number: ");
        Serial.println(phoneNumber);
        Serial.print("Recieved Message: ");
        Serial.println(smsMessage);
      }
    Что это за СМС после звонка приходит? И почему после неё я не могу получать остальные СМСки?

    Спасибо.
     
  5. Angela

    Angela Нуб

    Возник вопрос по поводу входного напряжения.
    На контакт Vin попадает то же самое напряжение, которое заводится на вход стабилизатора Arduino.
    У конкретного шилда какие то проблемы с напряжением 12 вольт?
    Посмотрела чип стабилизатора ST1S10 (который стоит на шилде), в даташите: Input voltage from 2.5 V up to 18 V.
     
  6. True Otaku

    True Otaku Нуб

    Здравствуйте. У меня следующая проблема: GPRS Shield работает...странно. Не отправляет SMS, не принимает звонки. Исходящие звонки делает только при перезапуске. Кто-нибудь сталкивался с этой проблемой? Использовал скетчи, данные на этом сайте.
     
  7. Alexk65

    Alexk65 Нуб

    Добрый день!
    Поделюсь собственным опытом. Связка UNO+GPRS shield от "Амперки", работала черт знает как, пока я питал всю эту систему через вход VIN. Мощности стабилизатора, расположенного на UNO не достаточно для питания всей системы. Например, когда шилд принимает или отправляет SMS, он потребляет до 2-х ампер, а стабилизатор на UNO обеспечивает до 1-го ампера. Соответственно, появляется просадка и все начинает глючить. Не спасал даже конденсатор в 470 мкф по питанию. Спасло подкобчение БП на 5вольт 4А непосредственно к контакту +5. Сейчас ни чего не виснет.
     
  8. True Otaku

    True Otaku Нуб

    А можете рассказать, как именно глючила связка до подключения БП? И где такой БП можно найти?
     
  9. Alexk65

    Alexk65 Нуб

    Я пытался сделать что-то типа "умного дома", и у меня к бутерброду UNO+GPRS подключены всякие датчики и LCD экран 16х2. Питание через разъем VIN. Загружаю скетч, система инициализируется, на индикаторе сообщения о готовности. Посылаю с телефона SMS с запросом измерять температуру и лвжность и ответить мне так же в SMS. То есть - максимальная нагрузка. В результате, при приеме сообщения, я уже вижу, что подсветка LCD мерцает. А при отправке, либо виснет, вплоть до перезагрузки, либо мусор на LCD выскакивает. Использовал блок питания MeanWell китайские, но хорошие http://www.meanwell.com/Russian/webnet/search/seriessearch.html . Брал в чип-дипе, но можно дешевле найти.
     
  10. ViCH

    ViCH Нуб

    При компиляции скетча смс-розетки возникает ошибка функции readSMS. В коде библиотеки нет такой сигнатуры функции.
     
  11. Alexk65

    Alexk65 Нуб

    На какой вызов функции ругается? Я как раз те же вызовы использовал, как и в SMS- розетке. Библиотека версии 1.0.
     
  12. ViCH

    ViCH Нуб

    На вызов
    gprs.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime);
    библиотека 1.1
     
  13. Alexk65

    Alexk65 Нуб

    Вот именно такая строка у меня работает в скетче с библиотекой 1.0 и IDE 1.7.9 с arduino.org
     
  14. ZAZ-965

    ZAZ-965 Гуру

    Судя по истории правок функции readSMS https://github.com/amperka/gprs-shield/commit/d2f20b6c65a90680d088cc2bca1241313e1cfd10 изменилось количество принимаемых аргументов. Поэтому или править скетч или качать версию 1.0 https://github.com/amperka/gprs-shield/releases
     
  15. Jungle Cat

    Jungle Cat Нуб

    Всем привет!
    Друзья, подскажите, пожалуйста. Во всех виденных мной скетчах-примерах в SMS посылаются значения, определённые через #define. А как послать значение переменной? Сразу оговорюсь, Си я не очень хорошо знаю. Вот стандартный скетч отсылки SMS, который я пытался модифицировать, введя произвольную переменную и, преобразовав её значение в строку, послать в сообщении:
    Код (C++):
    // библиотека для работы с GPRS устройством
    #include <GPRS_Shield_Arduino.h>
    // библиотека для эмуляции Serial порта
    // она нужна для работы библиотеки GPRS_Shield_Arduino
    #include <SoftwareSerial.h>
    // номер на который будем отправлять сообщение
    #define PHONE_NUMBER  "+7**********"
    // текст сообщения, которое будем отправлять
    #define MESSAGE  "Hello from GPRS Shield"  // это посылалось раньше
    int p;   // произвольная переменная
    char mes; // текст, отсылаемый в SMS

    // создаём объект класса GPRS. По умолчанию скорость общения с ним 9600 бод
    // с помощью него будем давать команды GPRS шилду
    GPRS gprs;
    void setup()
    {
      // включаем GPRS-шилд
      gprs.powerUpDown();
      // открываем последовательный порт для мониторинга действий в программе
      Serial.begin(9600);
      while (!Serial) {
        // ждём пока не откроется монитор последовательного порта
        // для того, чтобы отследить все события в программе
      }
      // проверяем, есть ли связь с GPRS-устройством
      while (!gprs.init()) {
        // если связи нет, ждём 1 секунду
        // и выводим сообщение об ошибке;
        // процесс повторяется в цикле,
        // пока не появится ответ от GPRS-устройства
        delay(1000);
        Serial.print("Init error\r\n");
      }
      // вывод об удачной инициализации GPRS Shield
      Serial.println("GPRS init success");
    Код (C++):

    // ДАЛЕЕ МОЯ ПОПЫТКА ПРЕОБРАЗОВАНИЯ ЧИСЛА В СТРОКУ

      p=746;  // Присваиваем значение некой переменной p
      mes=char(p);  // Преобразуем значение в текст

    // пытаемся послать сообщение

    gprs.sendSMS(PHONE_NUMBER, mes);

    }
    void loop()
    {
    }
    ... И ничего не получается. В библиотеке функция объявлена как
    Код (C++):
    bool sendSMS(char* number, char* data);
    ,
    поэтому получаю ошибку:
    Похоже, я что-то не так делаю с преобразованием числа в строковую переменную. Каким образом можно преобразовать значение переменной в строку, пригодную для отсылки в SMS?
     
    Последнее редактирование: 12 июн 2016
  16. Jungle Cat

    Jungle Cat Нуб

    Целые числа победил с помощью функции sprintf. А с дробными (float) пока не получается. Упомянутая функция по ним вопросительный знак выдаёт вместо форматированного текста.
     
  17. Alexk65

    Alexk65 Нуб

    Я делал так: itoa(TEMP, MessageTemp, 10); //перевод целого десятичного значения TEMP в char массив
     
  18. s1984i

    s1984i Нерд

    кто знает как это сделать? вопрос снимается , разобрался. теперь с дтмф кто сталкивался?
     
    Последнее редактирование: 10 авг 2016
  19. Доброго времени суток!

    Ни у кого нету готового куска кода с отправкой СМС с помощью АТ команд? Буду очень признателен?