Ola pessoal.

Estou desenvolvendo um medidor de energia com comunicacao SMS.

A ideia é que o o medidor me responda com os parametros de medicao apos receber uma requisicao por sms.

O codigo que desenvolvi recebe a mensagem e me envia a resposta. No entanto, quando eu faco o upload do codigo para o hardware (Arduino + SIM800L), o hardware comeca a e enviar mensagens instantaneamente e initerruptamente. Me parece que a funcao de condicao nao esta funcionando.

Ou seja, meu codigo nao esta verificando se recebeu uma mensagem escrito a palavra "CONSULTA". Ele inicia automaticamente a enviar mensagens sem parar.

Alguem poderia me ajudar a solucionar isso?

#include <SoftwareSerial.h>

#define TX 8
#define RX 7
int fatura = 415;
int consumo = 876;
char message[180];
String textSms;
char inchar = 0;

SoftwareSerial serialSIM800(TX, RX);

void setup() {


  Serial.begin(9600);
  serialSIM800.begin(2400);
  while (!Serial);

  delay(1000);
  serialSIM800.println("AT+CMGF=1\r\n");
  delay(1000);
    

}

void loop ()
{

  serialSIM800.println("AT+CMGR=1");
  delay(2000);
  inchar = serialSIM800.read();

  if (serialSIM800.available() > 4) {


    if (inchar == 'CONSULTA')
    {
      Serial.println(inchar);

      serialSIM800.println("AT+CMGS=\"+5531985644009\"\r\n");
      delay(1000);

      //Send SMS content
      serialSIM800.println("Fatura: R$");
      serialSIM800.println(fatura);
      serialSIM800.println("Consumo: kwh");
      serialSIM800.println(consumo);
      delay(1000);

      //Send Ctrl+Z / ESC to denote SMS message is complete
      serialSIM800.println((char)26);
      delay(1000);
      serialSIM800.println("AT+CMGD=1,4");

      Serial.println("SMS Sent!");
    }
  }
}

Exibições: 1064

Responder esta

Respostas a este tópico

Estranho, não vejo pq entrar direto no laço. Tenta
if (serialSIM800.available() > 4 && inchar == 'CONSULTA' ) {

}

pra ver no que dá

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço