Eu quero acionar dois leds pelo arduino, por sms. Tenho dois códigos funcionando perfeitamente. Um recebe e lê sms. O outro aciona os leds por comandos de texto no monitor serial.O que quero é: UNIR ESSES DOIS CÓDIGOS, QUE AO INVÉS DE ACIONAR OS LEDS PELO SERIAL MONITOR, QUANDO RECEBER UM SMS, ELE ACIONAR O LED.

CÓDIGO DE LEITURA E RECEBIMENTO DE SMS

#include<SoftwareSerial.h>
#include “sms.h”

SMSGSM sms;
boolean started=false;
char posicao_sms;
char num_fone[20];
char texto_sms[10];
int i;

void setup(){
Serial.begin(9600);
Serial.println(“Testando Sistema…”);
if (gsm.begin(4800)){
Serial.println(“\nSistema Pronto!”);
started=true;}
else
Serial.println(“\nsSistema Inativo!”);};

void loop(){
if(started){
for(i=1;i<=20;i++){
sms.DeleteSMS(i);}
posicao_sms=sms.IsSMSPresent(SMS_UNREAD);
if (posicao_sms){
Serial.print("Posicao do SMS:");
Serial.println(posicao_sms,DEC);
sms.GetSMS(posicao_sms, num_fone, texto_sms, 10);
Serial.println(num_fone);
Serial.println(texto_sms);}
else{
Serial.println("Sem novos SMS's. AGUARDANDO!");}
delay(1000);}};

CÓDIGO DE ACIONAMENTO PELO SERIAL MONITOR

int led1 = 41;
int led2 = 40;

void setup(){
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.begin(9600);}

String lerstring(){
String conteudo = “”;
char caractere;

while(Serial.available() > 0){
caractere = Serial.read();
if (caractere != ‘\n’){
conteudo.concat(caractere);}
delay(10);}

Serial.print(“Comando: “);
Serial.println(conteudo);
return conteudo;}

void loop() {
if (Serial.available() > 0){
String recebido = lerstring();
if (recebido == “v1on”){
digitalWrite(led1, HIGH);}
if (recebido == “v1off”){
digitalWrite(led1, LOW);}
if (recebido == “v2on”){
digitalWrite(led2, HIGH);}
if (recebido == “v2off”){
digitalWrite(led2, LOW);}}}

Exibições: 968

Responder esta

Respostas a este tópico

se a sua biblioteca de GSM utiliza a interface hardware serial (pinos 0 e 1) o que você quer não dar para fazer, coloque o GSM como software serial que dessa forma você consegue interagir pelo serial monitor.

Ja está em softwareserial. Quero unir esses dois códigos acima citados.

Olá,

Baseado em seu código, tentei juntar, veja se funciona.

Por favor, seja paciente, não tenho um arduino aqui para testar.

Abcs,

  'Eiju

TENTATIVA #0001
    #include<SoftwareSerial.h>
#include “sms.h”
SMSGSM sms;
boolean started=false;
char posicao_sms;
char num_fone[20];
char texto_sms[10];
int i;
int led1 = 41;
int led2 = 40;

void setup() {
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    Serial.begin(9600);
    Serial.println(“Testando Sistema…”);
    if (gsm.begin(4800)) {
        Serial.println(“\nSistema Pronto!”);
        started=true;
    } else Serial.println(“\nsSistema Inativo!”);
};

String lerstring() {
    String conteudo = “”;
    char caractere;
    while(Serial.available() > 0) {
        caractere = Serial.read();
        if (caractere != ‘\n’) {
            conteudo.concat(caractere);
        }
        delay(10);
    }
    Serial.print(“Comando: “);
    Serial.println(conteudo);
    return conteudo;
}

void loop() {
    if (Serial.available() > 0) {
        String recebido = lerstring();
        if (recebido == “v1on”) {
            digitalWrite(led1, HIGH);
        }
        if (recebido == “v1off”) {
            digitalWrite(led1, LOW);
        }
        if (recebido == “v2on”) {
            digitalWrite(led2, HIGH);
        }
        if (recebido == “v2off”) {
            digitalWrite(led2, LOW);
        }
    }
    if(started) {
        for(i=1;i<=20;i++) {
            sms.DeleteSMS(i);
        }
        posicao_sms = sms.IsSMSPresent(SMS_UNREAD);
        if (posicao_sms) {
            Serial.print("Posicao do SMS:");
            Serial.println(posicao_sms,DEC);
            sms.GetSMS(posicao_sms, num_fone, texto_sms, 10);
            Serial.println(num_fone);
            Serial.println(texto_sms);
        } else {
            Serial.println("Sem novos SMS's. AGUARDANDO!");
        }
    }
    delay(100);
};

Alguém testou o código , preciso mesmo coisa , mais modulo gms ainda não chegou para testar

esse ai ta ok

Consegui essa placa , SIM800I agora estou perdido como e essa ligação (software serial) com o arduino quais pino conecto da sim800i com arduino.

So para confirma se a ligação e essa.(software serial)

Amigo,

Tem a especificação do seu módulo?

Eu só encontrei isso:

http://www.headele.com/Datasheet/Wireless%20module/GPRS/SIMCOM/SIM8...

De acordo com este documento, a alimentação é de 4 V. Não creio que seja adequado ligar nos 5V do arduino.

Não encontrei nada sobre o pino RST que deve ser RESET.

O maior problema que vejo aqui é a ausência de conector para o SIMM Card da operadora. Sem isso não funciona em nossas operadoras.

Boa sorte,

  'Eiju

O conector sim card , fica atrás dessa tela , realmente e 4v  será que da certo ?

Eu acho que não.

Mesmo se der certo, com o tempo pode haver algum problema irreversível.

Vc diz não vai dar certo por motivo da tensão ? vou conectar na tensão outra fonte cc de 4 volts.

Isso mesmo. Por causa dos 4 Volts que é 25% maior do que o nominal.

Também eu tentaria ver se tem que ligar o RST no GND ou fazer um pull up.

Boa sorte,

  'Eiju

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço