Olá, preciso de alguem que saiba programar o arduino mega com o Módulo GSM SIM900, é um projeto de automação residencial.
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por