Oi pessoal,

alguém tem algo de como "acionar" o arduino via comandos SMS?

tenho a shild com sim900.

Obrigado

Abraços

Sérgio

Exibições: 704

Responder esta

Respostas a este tópico

Pois é pessoal, achei algo na net, mudei e ficou assim (abaixo), está funcionando, mas alguém poderia comentar o código? Algumas linhas eu tenho dúvida e acho que seria legal para todos...

Abraços.

#include <SoftwareSerial.h>
SoftwareSerial my(2, 3);


//V3 resumido

int ledPin = 13;
char info[400];

char ligarluz[] = "#LL";
char desligarluz[] = "#DL";

char numero[13] = "xxxxxxxxxxx";

String adminPDU = numero;

void setup()
{
pinMode(12,OUTPUT);
pinMode(ledPin,OUTPUT);
Serial.begin(19200);
my.begin(4800);
clear_SMS_Memory();
Serial.println("SMS apagados");
Serial.println("Inicio do Loop");
my.println("AT+CMGF=1");
Serial.println(adminPDU);
}

void loop() //
{
my.println("AT+CMGR=1");
int index = 0;
unsigned long startTime = millis();
while (millis() < (startTime+1000))
{
if (my.available()>0){
info[index] = my.read();
index++; }
}

if (String(info).indexOf("+CMGR:")>0 && String(info).indexOf(",,0")<0)
{
delay(5000);
my.println("AT+CMGR=1");
index=0;
startTime = millis();
while (millis() < (startTime+1000))
{
if (my.available()>0){
info[index] = my.read();
index++; }
}
Serial.println("//Mensagem Recebida:");
Serial.println(String(info));
Serial.println("//Fim da Mensagem\\");

Serial.println("Mensagem do admin");
if (String(info).indexOf(String(ligarluz))>0)
{ LigarLuz();
Serial.println("DEBUG --- dentro do if 1");}
else if (String(info).indexOf(String(desligarluz))>0)
{ DesligarLuz();
Serial.println("DEBUG --- dentro do if 2");}

my.println("AT+CMGD=1");
delay(1000);
while (my.available()>0) my.read();
Serial.println("Mensagem Apagada");
memset( &info, 0, sizeof(info) );
}
}

void LigarLuz()
{
digitalWrite(12,HIGH);
Serial.println("Luz ligada");
delay(1000);
Serial.println("SMS Enviado");
}

void DesligarLuz()
{
digitalWrite(12,LOW);
Serial.println("Luz desligada");
delay(1000);
Serial.println("SMS Enviado");
}

void clear_SMS_Memory(){
unsigned short i = 0;
for(i=1;i<=30;i++){
my.print("AT+CMGD=");
my.println(i);
delay(100);
}
while (my.available()>0) my.read();
}

Provavelmente quem fez esse programa estava trabalhando com módulos para comunicação sem fio por bluetooth ou xbee.A questão aqui qual é a distância que você que atingir sem fios.Se for apenas alguns metros bluetoooth resolve, centenas de metros xbee.Mas se vc que atingir muitos kilometros então via ter que recorrer a outros módulos como o sim que vc acabou de citar.

Sim, estou usando gprs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço