GPRS shield + Arduino UNO

Denis111
Offline
Зарегистрирован: 09.03.2015

Всем привет. Делаю сигнализацию к загородному дому, у меня есть Arduino UNO и такой GPRS shield:

http://ru.aliexpress.com/item/GSM-GPRS-Shield-For-Arduino/733792647.html?recommendVersion=1

http://www.ebay.com/itm/230911052682?ssPageName=STRK:MEWNX:IT&_trksid=p3...

Когда я вставляю шилд в UNO "бутербродом" с питанием от USB, он в принципе работает, но не всегда устойчиво, иногда не отправляет СМС или не принимает. Как пишет производитель, этот шилд имеет пиковый ток 2А и должен запитываться от 9В. Я разъединил обе платы, UNO питается так же от USB компьютера, а GPRS shield запитал отдельно от 9В (подав питание, на пин соответствующий пину 5V на UNO), при этом GRN на обоих платах соединил вместе.

Вопрос встал на том, какие пины требуется соединить для нормальной работы??? На данный момент я соединил на платах 0,1,3,4, 7 и 8 - на GPRS shield загараются все светодиоды, но СМС не отправляется. На монитор выводится такое сообщение: "ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp". Джамперы стоят на SW.

Подскажите пожалуйста, через какие пины осуществляется связь между этими платами? Или хоть надоумте где искать ответ...

Denis111
Offline
Зарегистрирован: 09.03.2015

Кстати то же сообщение об ошибке "ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp" выводится при отключеном от питания GPRS shield. В GSM.cpp смотрел, там вообще ни какие пины не упоминаются.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

в даташите на этот модуль :)

......или оставьте бутерброд, но откусите у верхнего модуля ногу питания и запитайте его СООТВЕТСТВЕННО

а GPRS shield запитал отдельно от 9В (подав питание, на пин соответствующий пину 5V на UNO)

А ТАК - МОЖНО ПОДЖАРИТЬ МОДУЛЬ   :(   ,    для 9 V должен быть другой пин !

Denis111
Offline
Зарегистрирован: 09.03.2015

  С передачей СМС разобрался - там используется D2 и D3. При этом джамперы устанавливаются в положение SW, в скетче подключается библиотека SoftwareSerial.h.

  Кстати решение с откусыванием ноги питание неплохое... Только какие ноги откусывать и на какую питание подавать? Как я понимаю, удалить надо ноги 5 В, 3,3В и VIN - т.к. на них пойжет питание с Ардуино, а подавать 9В - на VIN, правильно ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

можно весь бутер питать по VIN, USB мешать не будет

Denis111
Offline
Зарегистрирован: 09.03.2015

Дело в том, что на сам Ардуино подавать 9В наверно не стоит? Тут где то видел пишут стабилизатор сильно греться будет

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Denis111 пишет:

Дело в том, что на сам Ардуино подавать 9В наверно не стоит? Тут где то видел пишут стабилизатор сильно греться будет

9в - считается оптимальным напряжением, если питать через стабилизатор Ардуино.

Denis111
Offline
Зарегистрирован: 09.03.2015

ОК, попробуем

Denis111
Offline
Зарегистрирован: 09.03.2015

Сложил UNO и GPRS shield обратно бутербродом, запитал 9В через Vin, работает, но ощутимо нагревается плата UNO.

Беда в том, что модуль отсылает СМС, но не принимает. Я сначала думал, может GPRS shield СМСки принимает, но не выводит на монитор, воткнул симку в телефон, тут же все отправленные мною СМС свалились в телефон - т.е. приняты не были. Память симки пустая, я предворительно ее почистил, на счету деньги есть. Перемычки стоят на SW. Использую такой, всем известный, скетч:

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
 

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
 
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(2400)){
    Serial.println("\nstatus=READY");
    started=true; 
  }
  else Serial.println("\nstatus=IDLE");
   
  if(started){
    //Enable this two lines if you want to send an SMS.
    //if (sms.SendSMS("3471234567", "Arduino SMS"))
      //Serial.println("\nSMS sent OK");
  }
};
 
void loop()
{
  if(started){
    //Read if there are messages on SIM card and print them.
    if(gsm.readSMS(smsbuffer, 160, n, 20))
    {
      Serial.println(n);
      Serial.println(smsbuffer);
    }
    delay(1000);
  }
};

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

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Разобрался? У меня такая же фигня

Colpak
Offline
Зарегистрирован: 15.05.2015
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
 

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
 
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(2400)){
    Serial.println("\nstatus=READY");
    started=true; 
  }
  else Serial.println("\nstatus=IDLE");
   
  if(started){
    //Enable this two lines if you want to send an SMS.
    if (sms.SendSMS("3471234567", "Arduino SMS"))
      Serial.println("\nSMS sent OK");
  }
};
 
void loop()
{
  if(started){
    //Read if there are messages on SIM card and print them.
    if(gsm.readSMS(smsbuffer, 160, n, 20))
    {
      Serial.println(n);
      Serial.println(smsbuffer);
    }
    delay(1000);
  }
};

а так попробуйте :)

только номер поменяйте на свой!

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Добрый!

Вот только  приветствие и отправляет. А на команды с телефона не отвечает. В сериале показывает что с данного номера пришла смс. Пишет что все ОК   и . . .   все. Просто молчун какой-то

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Вячеслав 151 пишет:

Добрый!

Вот только  приветствие и отправляет. А на команды с телефона не отвечает. В сериале показывает что с данного номера пришла смс. Пишет что все ОК   и . . .   все. Просто молчун какой-то

 

может библиотеку взять нормальную? ну или тупо по старинке через AT команды? я вообще не понимаю зачем библиотека, если он понимает обычные АТ команды

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Отправляю АТ  он на них не отвечает. А в серийном показывает что они пришли. Надо как то прописывать ему ответные функции.

Bierman
Offline
Зарегистрирован: 13.05.2014

Госопда, подскажите пожалуйста, есть ли возможность программного старта этого модуля без нажатия на кнопку POWER при включении питания?

Необходимо, чтобы он сам подымался после потери и возобновления питания. 

 

 

По вопросам питания - у этого модуля должна быть своя отдельная линия питания с общим (-). Ардуина  через свой понижающий,  не способна его "прокормить". В противном случае он у вас не будет работать при работе с сетями моб.связи.

 

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Есть статья где то на форуме - коротятся два контакта на плате. У меня она другого производителя, я у себя не нашел их. Можно сделать программно. А как вариант - бесперебойник :)

Bierman
Offline
Зарегистрирован: 13.05.2014

Как вариант это резистор, конденсатор и транзистор на пауеркей паралельно. Но не хотелось делать лишние надстройки если это может быть включено програмно. Почитал о 9 ноге шилда(как аналог пауеркея на симкомах 900), но что-то пока не работает. Наверное пока виной мои руки.

Colpak
Offline
Зарегистрирован: 15.05.2015

у меня с разным питанием ардуины и "шилда" без реле не получилось запитать программно.

 

UPD

посмотри про свой шилд еще тут

Denis111
Offline
Зарегистрирован: 09.03.2015

Короче, у меня заработал. Я писал в сообщении #8 о проблеме, так тогда и ее не решил. А на днях взял с Амперки пример работы этого шилда на АТ командах и все заработало - светодиоды включает и выключает по командам СМС. Разбираться в чем дело с библиотеками нет ни какого желания, вставил этот кусок кода в свою прогу и больше к этому вопросу не возвращался.

Вот ссылка:

http://wiki.amperka.ru/%D0%91%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%...

глава "Управление светодиодами с помощью СМС"

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

Парни! столкнулся с этой проблемой и я )) Нашел в библиотеке GPRS_Shield_Arduino.cpp такую функцию

bool GPRS::ifSMSNow(void)
{
  return sim900_check_with_cmd("","+CMT: ",CMD);
}

почитал про нее в инструкции к модулю sim, и оказалось что при получении смс - модуль генерит событие

bool GPRS::ifSMSNow(void)
{
  return sim900_check_with_cmd("","+CMTI: ",CMD);
}

Исправил, скомпилил и почти все заработало, система стала говорить что смс пришла, но содержимое смс еще не выдает нормально, руки еще не дошли проверить код библиотеки. Думаю и там косяк)

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

А вот по поводу питания я чет упустил (( У меня Мега и она явно не дает 2А на выходе питания... нужно заморочится и с этим похоже...