Mensuração de nivel de reservatorio com SIM800L + ultrasonico. Problema no sms.

Boa noite a todos,

Estou desenvolvendo um projeto para mensuração do nivel de agua de um reservatorio de agua usando um ARDUINO NANO + SIM800L + ULTRASONICO HC-SR04.

Esta tudo funcionando bem, mensuração ok,SIM800L enviando SMS, mas a SMS esta chegando no celular com erro na mensagem, como faço para corrigir esse erro.

Segue o código que estou usando e o erro que esta surgindo.

Código:


#include "gps.h"



#include "sms.h"
#include <SoftwareSerial.h>

//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8
 
//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7

//Pino A0 recebe o pulso do echo   
 #define echoPin A0

//Pino 10 envia o pulso para gerar o echo   
  #define trigPin 10
  float sensorValue;
  float Distance;
//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);
 
void setup() {
  //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  while(!Serial);
  pinMode(trigPin, OUTPUT);     
  pinMode(echoPin, INPUT);
 
  //Being serial communication witj Arduino and SIM800
  serialSIM800.begin(9600);
  delay(1000);
   
}
 
void loop() {
sensorValue = analogRead(A0);
   digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  unsigned long duracao = pulseIn(echoPin, HIGH);
  Distance = duracao / 29.4 / 2;
  delay(1000);
   Serial.print(Distance);
  Serial.println("CM");// imprime o centímetro no final   
SendTextMessage();
}

void SendTextMessage(){
   Serial.println("Setup Complete!");
  Serial.println("Sending SMS...");
   
  //Set SMS format to ASCII
  serialSIM800.write("AT+CMGF=1\r");
  delay(100);
 
  //Send new SMS command and message number
  serialSIM800.write("AT+CMGS=\"3599191****\"\r");
    delay(200);
   
  //Send SMS content
  serialSIM800.write("Nivel do Reservatorio: ");
  serialSIM800.write(Distance);
  serialSIM800.write(" CM");
  serialSIM800.write("\r");
  delay(500);
   
  //Send Ctrl+Z / ESC to denote SMS message is complete
  serialSIM800.write((char)26);
  delay(1000);
     
  Serial.println("SMS Sent!");

  delay(5000);

   //Set SMS format to ASCII
  serialSIM800.write("AT+CMGF=1\r");
  delay(100);
 
  //Send new SMS command and message number
  serialSIM800.write("AT+CMGS=\"3598856****\"\r");
    delay(200);
   
  //Send SMS content
  serialSIM800.write("Nivel do Reservatorio: ");
  serialSIM800.write(Distance);
  serialSIM800.write(" CM");
  serialSIM800.write("\r");
  delay(500);
   
  //Send Ctrl+Z / ESC to denote SMS message is complete
  serialSIM800.write((char)26);
  delay(1000);
     
  Serial.println("SMS Sent!");

delay(60000);
  Distance = 0;
}

E é assim que esta chegando a mensagem:

Nivel do Reservatorio: @ CM

Nivel do Reservatorio: # CM

Exibições: 430

Responder esta

Respostas a este tópico

Minhas sugestões :

Imprima na console da IDE , o valor de Distance. Acho que terá que formatar a saída.

https://www.arduino.cc/en/Serial/Print

Depois que o valor estiver adequado, faça o teste enviando a mensagem SMS. 

Se ainda tiver problema, transforme o valor de Distance em string.

https://www.arduino.cc/en/Reference/String

Boa noite grande José Gustavo Abreu Murta,

A

E é assim que esta chegando a mensagem no celular:

Nivel do Reservatorio: @ CM

Nivel do Reservatorio: # CM

Não na IDE, não estou avançando e nada, me ajuda.

Agradeço a atenção.

Logo abaixo de  //Send SMS content inclua o envio dos valores para a Console IDE :

 Serial.print("Nivel do Reservatorio: ");
 Serial.print(Distance);
 Serial.print(" CM");
 Serial.println(" ");
  delay(500);

Referência:

https://www.arduino.cc/en/Serial/Print

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço