Ola, eu estou criando um projeto de automação residencial e uma das partes é usar um Shield GSM para mandar e receber comandos. O problema é que no arduino UNO, funciona, já no Mega não...
segue o meu código...

Ele mostra um erro dizendo, ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp
Dentro da lib GSM.h tem uma opção para alterar de Board #uno ou #mega, mas quando mudo para mega, na compilação da um monte de erros...
Se alguem souber o erro, me ajude! Gratoo!
 
#include "SIM900.h"
#include "sms.h"
#include "SoftwareSerial.h"
#include "sms.h"
SMSGSM sms;
 
boolean started=false;
char smsbuffer[160];
char n[20];

int powerkey  =  5;
int statuspin =  6;
int pinState  =  0;

 int led1 = A0; 
 int led2 = A1;
 
void setup() 
{
  pinMode(powerkey, OUTPUT);
  pinMode(statuspin, INPUT);
  digitalWrite(powerkey, HIGH);  // set the LED on
    
  pinMode(led1, OUTPUT);
  digitalWrite(led1, 0);
  pinMode(led2, OUTPUT);
  digitalWrite(led2, 0);  

  
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing."); 
  
  
  //Start configuration of shield with baudrate.
  if (gsm.begin(2400)){
    Serial.println("SIM900D PRONTO");
    started=true;  
  }
  else Serial.println("SIM900D FALHA = IDLE");
  if(started){
    delsms();
  } 
 
   if(started){
    if (sms.SendSMS("99xxxxxx", "SISTEMA OK"))
      Serial.println("SMS ENVIADO PARA 99xxxxxx = SISTEMA OK");
  }

};
 
void loop() 
{
  pinState = digitalRead(statuspin);
  if(pinState==LOW)
  {
  digitalWrite(powerkey, HIGH);  // set the LED on
  delay(1000);
  digitalWrite(powerkey, LOW);
  }

  
  int pos=0;
  //Serial.println("Loop");
  
  if(started){
    pos=sms.IsSMSPresent(SMS_ALL);
    
    if(pos){
      Serial.println("IsSMSPresent at pos ");
      Serial.println(pos); 
      sms.GetSMS(pos,n,smsbuffer,100);
      Serial.println(n);
      Serial.println(smsbuffer);
//-----------------------------------------------------------------------------        
        if(!strcmp(smsbuffer,"a")){
          Serial.println("LED VERDE ON");
          digitalWrite(led1, HIGH);        
          
          if (digitalRead(led1 == HIGH)){            
            sms.SendSMS("99xxxxxx", "LED VERDE IS ON");
            Serial.println("\nSMS sent OK");
         }
        }         
        
        
        if(!strcmp(smsbuffer,"b")){
          Serial.println("LED VERDE OFF");
          digitalWrite(led1,LOW);
          
          if (digitalRead(led2 == LOW)){            
             sms.SendSMS("99xxxxxx", "LED VERDE IS OFF");
             Serial.println("\nSMS sent OK");
          }
      }
//---------------------------------------------------------------------------------    

     delsms(); 
    }    
 
  }
};
 
void delsms(){
  Serial.println("Deletando SMS's Antigos...");
  for (int i=0; i<10; i++){  //do it max 10 times
      int pos=sms.IsSMSPresent(SMS_ALL);
      if (pos!=0){
        Serial.print("\nNovo SMS na posicao ");
        Serial.println(pos); 
        if (sms.DeleteSMS(pos)==1){    
          Serial.print("\nDeletando SMS da posicao ");
          Serial.println(pos);      
        }
        else
        {
          Serial.print("\nNão é possivel deletar SMS da posicao ");
          Serial.println(pos);         
        }
      }
    }
 
}

Exibições: 2653

Responder esta

Respostas a este tópico

olá tentei usar esse código para fazer um teste ele da erro

..

GSM Shield testing.
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp
SIM900D FALHA = IDLE

Alguém pode me ajudar..?

Se for no Mega o shield não é diretamente compatível, veja no site da Sparkfun.

O problema da fonte4 de energia também é real: na "partida" do SIM900 ele demanda mais de 1A.

estou usando uma de 2 Amp.

tenho outro código aqui que envia, disca, mais não tem um modelo que recebe..

O que tenho aqui ele envia o sms e disca normal..

Eu tenho um que recebe, mas está no outro notebook. Mais tarde eu posso te enviar.

nossa muito obrigado.. te agradeço mesmo. estou tentando fazer ele receber mais não rola.. com o s exemplos que peguei na web.

É, esse shield é enrolado mesmo. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço