Не работает SIM900 на UNO

Prin53
Offline
Зарегистрирован: 31.12.2013
Заливаю на UNO скетч:
#include "SIM900.h"
#include <SoftwareSerial.h>
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include "inetGSM.h"

//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include "sms.h"
SMSGSM sms;

//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 send and receive 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);
  }
};
Потом подсоединяю IComSat 1.1 SIM900, загорается кнопка PWR, иногда мигает. Включаю терминал, через некоторое время тест валится со словами
Trying to force the baud-rate to 9600
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp
status=IDLE
 
Сим-карта от лайф. Прошу помочь.
Life23
Offline
Зарегистрирован: 10.08.2013

Нет ответа от шилда.

Вам же так и написали: "Check power and serial pins in GSM.cpp" 

Проверяйте настройки пинов в файле GSM.cpp с TX RX вашего шилда. и правильно ли стоят перемычки?

и кстати, светик "Power" не должен мигать! он постоянно горит! че-то у вас с питанием. где-то просадка по напряжению.

Prin53
Offline
Зарегистрирован: 31.12.2013

Перемычки соединил так:В файле GSM.CPP пробовал использовать оба варианта для пинов TX и RX:

//De-comment this two lines below if you have the
//first version of GSM GPRS Shield
#define _GSM_TXPIN_ 4
#define _GSM_RXPIN_ 5

//De-comment this two lines below if you have the
//second version og GSM GPRS Shield
//#define _GSM_TXPIN_ 2
//#define _GSM_RXPIN_ 3	

Светодиод pwr  сейчас постоянно горит, остальные - нет.

Life23
Offline
Зарегистрирован: 10.08.2013

так а кнопочку "Sim900-POWER" вы жмете перед запуском? Зеленая "Status" то же должна гореть! "PWR" - это значит что питание есть. а что модуль запущен - отвечает светик "status".

и попробуете менять местами пины 2-3 на оборот 3-2. или перемычками.

кстати, модуль можно запускать програмно с помощью 9-го пина.

UPD: В своей теме http://arduino.ru/forum/programmirovanie/pomogite-novichku-dopisat-kod?page=2 в посте 126 я описывал, что у меня была проблема с шилдом не работал переключатель "UART-Port - DBG-Port". Я отказался от перемычек. и просто подключился к TXD и RXD на прямую к чипу SIM900.

Вот на фото видно:

 

Prin53
Offline
Зарегистрирован: 31.12.2013

Спасибо за помощь! Но даже без использования перемычек не хочет работать.

http://www.youtube.com/watch?v=YDZ3Tmk-nws

Вот записал небольшое видео. Может, я что-то не так делаю?

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

Prin53 пишет:

Вот записал небольшое видео. Может, я что-то не так делаю?

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

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

Prin53
Offline
Зарегистрирован: 31.12.2013

Так и без доп. питания делал. 

Не могу оставить, понимаете...

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

Prin53 пишет:

Так и без доп. питания делал. 

Не могу оставить, понимаете...

неа, не понимаю. давайте пойдем по порядку...

берем уну. одеваем на нее шильд.  подключаем к ней УЗБ и втыкаем это дело в комп.

комп определяет уну. 

запускаем ИДЕ

открываем пример к шильду

прописываем в нем пины приема-передачи 2-3 вроде бы в вашем случае..

прошиваем скеч

запускаем монитор и смотрим чего нам там шлють

если не шлют ничего. делаем финт ушами. в скече меняем пины местами 2 и 3. тоесть заметсо 2 пишем 3 и заместо 3 пишем 2

прошиваем опять

запускаем монитор и смотрим че пишут..

если и щас ничего не пишут. то открываем мусорное ведро и кидаем туда шильд.. 

Prin53
Offline
Зарегистрирован: 31.12.2013

Puhlyaviy пишет:

прописываем в нем пины приема-передачи 2-3 вроде бы в вашем случае..

Это пины в gsm.cpp? В примере я ничего не нашел.

 

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

ага они самые

 

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

Prin53 пишет:

Перемычки соединил так:В файле GSM.CPP  TX и RX:


//De-comment this two lines below if you have the
//second version og GSM GPRS Shield
#define _GSM_TXPIN_ 2
#define _GSM_RXPIN_ 3	

 

вот так должно быть

Prin53
Offline
Зарегистрирован: 31.12.2013

Сделал по рекомендациям. И финт ушами тоже.

#define _GSM_TXPIN_ 3
#define _GSM_RXPIN_ 2

Вывод такой же, что и раньше. ( Нельзя сказать что ничего, но и наоборот - тоже )

GSM Shield testing.
Trying to force the baud-rate to 9600

ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp

status=IDLE

 

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

ну тогда берете и делаете как на приведеных выше фотах. паяльник в руки и проводками все это дело напрямую к чипу подключаете :)

ну либо все в мусорку и займитесь выжиганием на фанерке например

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

да кстати там вон еще кнопачку нужно какую то нажимать на шильде самом. выше вам уже писали.

Prin53
Offline
Зарегистрирован: 31.12.2013

Каким-то чудом она прошла тест. 

Спасибо Вам огромное!

Будем руки прямить.

Life23
Offline
Зарегистрирован: 10.08.2013

Посмотрел последнее ваше видео. у вас так и на включился шилд. зеленый светик так и не загорелся.. 

конечно он вам и не ответит ничего..

ziimba
Offline
Зарегистрирован: 21.03.2014

gsm шилд потребляет порядка 2 ампер. Проверяйте питание. От усб точно работать не будет. Проверено.

Binnimo
Offline
Зарегистрирован: 02.11.2012

Здравствуйте товарищи! Проблема с таким же шилдом, заключается в следующем- не могу отправить/получить смс. Со звонками не пробовал. 
перебрал разные библиотеки уже, остановился на той же что и ТС. 
В чем может быть проблема я не пойму, шилд проходит "тест" по скетчу из примера(в 1 посте аналогичный) и даже судя по звукам стоящих рядом колонок отсылает сигналы, но на телефон смс так и не приходит=( с телефона впрочем тоже на шилд не может дойти. Кто нибудь сталкивался?
 

Prin53
Offline
Зарегистрирован: 31.12.2013

Может, проблема в симке? У меня однажды не хотела отправлять, т.к на счету был минус.

Binnimo
Offline
Зарегистрирован: 02.11.2012

Господи, вы гений)

Binnimo
Offline
Зарегистрирован: 02.11.2012

я 2 дня голову ломал, меня ввели в заблуждение, сказав что на той симке 200р находится, оказывается там ровно 0 было)

Binnimo
Offline
Зарегистрирован: 02.11.2012

не понос так золотуха, теперь не могу принять смс -_- 
юзал 2 примера- 
 

#include "SIM900.h"
#include <SoftwareSerial.h>
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include "inetGSM.h"

//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include "sms.h"
SMSGSM sms;

//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 send and receive 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("12345678", "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))
    {
      digitalWrite(13,HIGH);
      Serial.println(n);
      Serial.println(smsbuffer);
    }
    delay(1000);
     
  }
};

 и

/*
 SMS receiver
 
 This sketch, for the Arduino GSM shield, waits for a SMS message 
 and displays it through the Serial port. 
 
 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages
 
 created 25 Feb 2012
 by Javier Zorzano / TD
 
 This example is in the public domain.
 
 http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS
 
*/

// include the GSM library
#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];  

void setup() 
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  } 

  Serial.println("SMS Messages Receiver");
    
  // connection state
  boolean notConnected = true;
  
  // Start GSM connection
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() 
{
  char c;
  
  // If there are any SMSs available()  
  if (sms.available())
  {
    Serial.println("Message received from:");
    
    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);

    // An example of message disposal    
    // Any messages starting with # should be discarded
    if(sms.peek()=='#')
    {
      Serial.println("Discarded SMS");
      sms.flush();
    }
    
    // Read message bytes and print them
    while(c=sms.read())
      Serial.print(c);
      
    Serial.println("\nEND OF MESSAGE");
    
    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

  delay(1000);

}

Последний из IDE1.05 примеров. ни тот ни другой не хотят корректно работать=( 
объясните каким образом прием производится, скорее всего что то элементарное делаю не так. Заранее благодарен!

Binnimo
Offline
Зарегистрирован: 02.11.2012

по непонятным причинам смска не доходит до шилда, есть варианты почему так происходит?

Prin53
Offline
Зарегистрирован: 31.12.2013

Я попробовал первый пример.

На симке были смс в памяти. 

Их не вывело в сериал.

Почему так -  не знаю.

Binnimo
Offline
Зарегистрирован: 02.11.2012

я сейчас со вторым экспереметирую. отправляю смс с сайта, колонки ворчат, сериал чист. 
Даже если убрать в коде 1-е условие в loop, то все равно команды sms.remoteNumber и пр. не работают

ziimba
Offline
Зарегистрирован: 21.03.2014

Старые смски с симки удали. Память ограничена.

ziimba
Offline
Зарегистрирован: 21.03.2014

Binnimo пишет:

по непонятным причинам смска не доходит до шилда, есть варианты почему так происходит?


Промазал. см Предыдущее сообщение

Binnimo
Offline
Зарегистрирован: 02.11.2012

Спасибо за подсказку) не знаю если честно почему не работает пример из GSM SHIELD, но пример из 1.05 пашет отлично) 
Огромное спасибо Вам) 
 

/*
 SMS receiver
 
 This sketch, for the Arduino GSM shield, waits for a SMS message 
 and displays it through the Serial port. 
 
 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages
 
 created 25 Feb 2012
 by Javier Zorzano / TD
 
 This example is in the public domain.
 
 http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS
 
*/

// include the GSM library
#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];  

void setup() 
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  } 

  Serial.println("SMS Messages Receiver");
    
  // connection state
  boolean notConnected = true;
  
  // Start GSM connection
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() 
{
  char c;
  
  // If there are any SMSs available()  
  if (sms.available())
  {
    Serial.println("Message received from:");
    
    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);

    // An example of message disposal    
    // Any messages starting with # should be discarded
    if(sms.peek()=='#')
    {
      Serial.println("Discarded SMS");
      sms.flush();
    }
    
    // Read message bytes and print them
    while(c=sms.read())
      Serial.print(c);
      
    Serial.println("\nEND OF MESSAGE");
    
    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

  delay(1000);

}

Вот рабочий пример, версия IDE 1.05-r2

Artemiy
Offline
Зарегистрирован: 20.10.2014

Народ, подскажите.

Попробовал пример из этого поста: http://arduino.ru/forum/programmirovanie/pomogite-novichku-dopisat-kod?page=5#comment-40099

Железо: Arduino Leonardo + Шилд sim900.

Одел, загрузил скетч по ссылке выше.

Немного упростил его чтобы он сразу отсылал сообщение (но не больше 4-х), так как кнопки нет.

Потом я подаю на него питание и он ничсего не шлет.

Когда я запускаю его с зажатой кнопкой PWRKEY на шилде, он загружается и присылает мне смс. То есть инициализируется и отсылает шилд корректно все. Если выткнуть из сети и снова воткнуть - смс не шлется.

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

На шилде два светодиода. Один красный pwr и один зеленый net. Никаких 'status' нет. NET моргает, когда он в сети, я так понимаю... Но если включить прибор без зажатой pwrkey, то он не будет гореть и соотв. отсылать смс.

Binnimo
Offline
Зарегистрирован: 02.11.2012
когда то давно нарыл на офф сайте, программный запуск. Попробовал - все работает.
pinMode(13,OUTPUT);
  pinMode(9,OUTPUT);
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);

 

 

Maverik
Offline
Зарегистрирован: 12.09.2012

Цитата:

неа, не понимаю. давайте пойдем по порядку...

берем уну. одеваем на нее шильд.  подключаем к ней УЗБ и втыкаем это дело в комп.

комп определяет уну. 

запускаем ИДЕ

открываем пример к шильду

прописываем в нем пины приема-передачи 2-3 вроде бы в вашем случае..

прошиваем скеч

запускаем монитор и смотрим чего нам там шлють

если не шлют ничего. делаем финт ушами. в скече меняем пины местами 2 и 3. тоесть заметсо 2 пишем 3 и заместо 3 пишем 2

прошиваем опять

запускаем монитор и смотрим че пишут..

если и щас ничего не пишут. то открываем мусорное ведро и кидаем туда шильд.. 

прям так сразу в мусорку ? ))

некоторые GSMшилды так работать смогут, и то если юсб питание не сильно просажено.

большинство же GSMшилдов в таком варианте если и будут работать, то криво -например в сериал порт слать, а сам GSM работать не будет .  причина простая - юсб порт даёт ток 500 мА, а шилдам на модуле sim900 обычно в пике требуется до 2х ампер, т.е. в четыре раза больше, поэтому обычно большими красными буквами продавцы пишут - "ЭТОМУ ШИЛДУ НУЖНО ВНЕШНЕЕ ПИТАНИЕ".

 

Jek
Offline
Зарегистрирован: 05.01.2014

Artemiy пишет:

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

Это на многих шилдах так сделано.

Вот тут есть решение: http://arduino.ru/forum/apparatnye-voprosy/gsm-shield-atk-sim900a-pomogite-s-dokumentatsiei