Olá, preciso de alguem que saiba programar o arduino mega com o Módulo GSM SIM900, é um projeto de automação residencial.

Exibições: 2004

Responder esta

Respostas a este tópico

já trabalhei com os dois, qual seu projeto ?

olá Eduardo Silva, meu projeto é acionar equipamentos da casa por comando SMS.

enviar uma mensagem por exembro luz sala, e acender a luz da sala.

Acha muito dificil? 

Nesse exemplo que eu estou mandando vc envia o texto (Liga) via sms e o arduino liga o pino digital 13 e se vc enviar (Desliga) o msm vai ser deligado.

o shield deve estar ligado no pino 2 e 3 do arduino

============================================

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX / TX

String msg = String(""); // buffer de string para a mensagem do GPRS

int posSms = 0; // Defina a 1 quando o próximo GPRS contém a mensagem de SMS

int led = 13; // Pin do LED para ligar ou desligar dependendo da mensagem recebida

void setup()
{
  mySerial.begin(9600);   // inicializa comunicação software serial    
  Serial.begin(9600);    // inicializa comunicação serial
}
 
void loop()
{
  if(mySerial.available())
    {
        char SerialInByte;
        
        SerialInByte = (unsigned char)mySerial.read();
        
        //Para Arduino IDE monitor
        Serial.print( SerialInByte );
        // Se a mensagem termina com <CR> então processar a mensagem
        if( SerialInByte == 13 ){  // ASCII 13 = CR
          // Armazenar o char para o buffer de mensagem
          ProcessaMsg();
         }
         
         if( SerialInByte == 10 ){ // ASCII 10 = LF
            // Avança linha
         }
         
         else {
           // armazenar o caractere atual no buffer de string de mensagem
           msg += String(SerialInByte);
         }
     }
}
void ProcessSms( String sms ){
 
  if( sms.indexOf("Liga") >= 0 ){ // comando do sms para ligar o led
    digitalWrite(led, HIGH);  // coloca valor alto na porta onde vai estar o led
  }
  if( sms.indexOf("Desliga") >= 0 ){ // comando do sms para desligar o led
    digitalWrite(led, LOW);    // coloca valor baixo na porta onde vai estar o led
  }
}

void ModoTextoSMS(){
  mySerial.println( "AT+CMGF=1" ); // Definindo modo de texto para as mensagens
}

void GprsReadSmsStore( String SmsStorePos ){
  mySerial.print( "AT+CMGR=" ); // comando necessário para o modulo receber sms
  mySerial.println( SmsStorePos ); // define a leitura do sms por posição
}

// Limpar o buffer de mensagem do GPRS
void limpaMsg(){
  msg = ""; // deixa o buffer de mensagem vazio
}

// Interpretar a mensagem do GPRS e agir de forma adequada
void ProcessaMsg() {
  ProcessSms( msg ); // chama a função para processar a msg e realizar os acionamentos
  limpaMsg(); // chama a função para limpar o buffer de mensagem
  posSms = 0; // define a posição de leitura do sms para 0
}

Eduardo meu arduino é o mega, eu não to conseguindo fazer as modificações necessarias para que funcione, o que eu preciso alterar, os jumpers entre o tx e o rx estão feitos para o arduino mega na serial 2

Eduardo voce poderia me ajudar a utilizar o SIM 900 com o ARDUINO MEGA, não consigo de jeito nenhum.

att,

podemos conversar pelo skype, eu te ajudo mais fácil. depois vc posta a resposta aqui no forum. meu skype: eduardotattoo1@hotmail.com

faltou uma coisinha para o modulo funcionar ai.. Esse é o código com a modificação

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX / TX

String msg = String(""); // buffer de string para a mensagem do GPRS

int posSms = 0; // Defina a 1 quando o próximo GPRS contém a mensagem de SMS

int led = 13; // Pin do LED para ligar ou desligar dependendo da mensagem recebida

void setup()
{

   pinMode(led, OUTPUT);

   digitalWrite(led, LOW);
  mySerial.begin(9600);   // inicializa comunicação software serial    
  Serial.begin(9600);    // inicializa comunicação serial
}
 
void loop()
{
  if(mySerial.available())
    {
        char SerialInByte;
        
        SerialInByte = (unsigned char)mySerial.read();
        
        //Para Arduino IDE monitor
        Serial.print( SerialInByte );
        // Se a mensagem termina com <CR> então processar a mensagem
        if( SerialInByte == 13 ){  // ASCII 13 = CR
          // Armazenar o char para o buffer de mensagem
          ProcessaMsg();
         }
         
         if( SerialInByte == 10 ){ // ASCII 10 = LF
            // Avança linha
         }
         
         else {
           // armazenar o caractere atual no buffer de string de mensagem
           msg += String(SerialInByte);
         }
     }
}
void ProcessSms( String sms ){
 
  if( sms.indexOf("Liga") >= 0 ){ // comando do sms para ligar o led
    digitalWrite(led, HIGH);  // coloca valor alto na porta onde vai estar o led
  }
  if( sms.indexOf("Desliga") >= 0 ){ // comando do sms para desligar o led
    digitalWrite(led, LOW);    // coloca valor baixo na porta onde vai estar o led
  }
}

void ModoTextoSMS(){
  mySerial.println( "AT+CMGF=1" ); // Definindo modo de texto para as mensagens
}

void GprsReadSmsStore( String SmsStorePos ){
  mySerial.print( "AT+CMGR=" ); // comando necessário para o modulo receber sms
  mySerial.println( SmsStorePos ); // define a leitura do sms por posição
}

// Limpar o buffer de mensagem do GPRS
void limpaMsg(){
  msg = ""; // deixa o buffer de mensagem vazio
}

// Interpretar a mensagem do GPRS e agir de forma adequada
void ProcessaMsg() {
  ProcessSms( msg ); // chama a função para processar a msg e realizar os acionamentos
  limpaMsg(); // chama a função para limpar o buffer de mensagem
  posSms = 0; // define a posição de leitura do sms para 0
}

QUAIS PINOS SÃO LIGADO O SIM 900 NO ARDUINO MEGA

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço