Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04

Mensagem  cleber_eng_el em Qui 30 Out - 8:07

Bom dia senhores

O código abaixo visa o monitoramento de reservatórios através de dois sensores ultrassônicos redundantes. Os alertas SMS são em caso de falta de energia da fonte principal (rede) e nível crítico. Os dados devem ser enviados para uma página php para posterior inserção em banco de dados.

Obs.: o número de telefone celular e site estão parcialmente omitidos.

Componentes utilizados: 02 HC-SR04, 01 Arduino Uno, 01 GSM Shield SIM900.

Segue código abaixo:
Código:

#include <Ultrasonic.h>
#include <Math.h>
#include <SoftwareSerial.h>

#define TRIGGER_PIN  6
#define ECHO_PIN     7
#define TRIGGER_PIN2  11
#define ECHO_PIN2  12
#define BUF_LEN 84

SoftwareSerial mySerial(2,3);

int hres=50, cont=0, vol, contEnergy=0;
float pi=3.1416, raio=5;
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
Ultrasonic ultrasonic2(TRIGGER_PIN2, ECHO_PIN2);
char comm_buf[256];

void setup()
 {
 mySerial.begin(9600);
 Serial.begin(9600);
 delay(1000);
 }
void loop()
 {
    //-------------------------Verificação fonte de energia------------------------
 int energyValue=digitalRead(5);
 Serial.print("estado da fonte: ");
 Serial.print(energyValue);
 if(energyValue<1){
   contEnergy=contEnergy++;
   if (contEnergy<=2){
   mySerial.println("AT+CNMI=3,3,0,0,0");
     delay(2000);
     mySerial.println("AT+CMGF=1");
     delay(2000);
     mySerial.println("AT+CMGS=\"479662xxxx\"\r");
     delay(1000);
     mySerial.println("Alerta! Fonte principal de energia desconectada.");
     delay(1000);
     mySerial.println((char)26);
     Serial.println(comm_buf);
     memset(comm_buf, '\0', BUF_LEN);
     mySerial.flush();
   }
   if (2<contEnergy<=200)
   {
   }
   if (contEnergy>200)
   {
     contEnergy==0;
   }
 }
 //---------------------Medição sensores ultrassônicos----------------------------    
 int cmMsec, cmMsec2;
 long microsec = ultrasonic.timing();
 long microsec2 = ultrasonic2.timing();

 cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
 Serial.print(", sensor 1 -> CM: "); //medida em cm
 Serial.print(cmMsec);
 delay(5000);
 cmMsec2 = ultrasonic2.convert(microsec2, Ultrasonic::CM);
 Serial.print(", sensor 2 -> CM: ");
 Serial.print(cmMsec2);
 
 int dif;
 dif=cmMsec-cmMsec2;
 Serial.print(", dif. leitura em CM: ");
 Serial.println(abs(dif));
   if(dif>=-2 && dif<=2){
 //---------------------Cálculo do Volume--------------------------------------------------  
 
 vol=(hres-cmMsec)*pi*raio*raio;
 if (vol>=0)
 {
   Serial.print("Volume em cm3: ");
   Serial.println(vol);*/
 //------------------------------------Envio do dado para página php-------------------------------
 mySerial.println("at+cstt=\"tim.br\",\"tim\",\"tim\"");//executa comando
 delay(2000);              //espera
 
 mySerial.println("at+ciicr");//executa comando
 delay(5000);              //espera resultado na serial
 
 
 mySerial.println("at+cifsr");//executa comando
 delay(2000);              //espera resultado na serial
 
 
 mySerial.println("at+cdnscfg?");//executa comando
 delay(2000);              //espera resultado na serial
 
 
 mySerial.println("at+cipstart=\"TCP\",\"(site)\",\"80\"");//executa comando
 delay(2000);              //espera resultado na serial

 
 mySerial.println("AT+CIPSEND");//executa comando
 delay(2000);              //espera resultado na serial
 
 mySerial.print("GET h t t p : //(site)/entrada.php?dado=");//executa comando
 mySerial.print(vol);
 delay(3000);              //espera resultado na serial
 mySerial.println();    
 delay(10000);
 mySerial.println((char)26);
 //-------------------Volume crítico-------------------------------------------
 if (0<vol<4000)
 {
   cont=cont++;
   if (cont<=3)
   {    
     mySerial.println("AT+CNMI=3,3,0,0,0");
     delay(2000);
     mySerial.println("AT+CMGF=1");
     delay(2000);
     mySerial.println("AT+CMGS=\"479662xxx\"\r");
     delay(1000);
     mySerial.println("Alerta! R1 abaixo de 04 litros");
     delay(1000);
     mySerial.println((char)26);
     Serial.println(comm_buf);
     memset(comm_buf, '\0', BUF_LEN);
     mySerial.flush();
   }
   if (3<cont<=200)
   {
   }
   if (cont>200)
   {
     cont==0;
   }
   delay(5000);
 }
 }
 }
  else {
   Serial.println("Divergência de leitura entre os sensores");
   }
 delay(5000);
 }

cleber_eng_el

Mensagens : 1
Data de inscrição : 27/10/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Desenvolvimento de sistemas de aquisição de dados sem fio

Mensagem  SanUSB em Dom 30 Nov - 20:32

Neste tema, segue abaixo, nosso novo livro, com o título Desenvolvimento de sistemas de aquisição de dados sem fio, que aborda também modem wifly publicado em 2014: lcm.com.br/ site/livros/detalhesLivro/f/desenvolvimento-de-sistemas-de-aquisicao-de-dados-sem-fio.html
Como também em livrariacultura.com.b r/p/desenvolvimento-de-sistemas-de-aquisicao-de-dados-15068044

SanUSB

Mensagens : 2
Data de inscrição : 30/11/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum