Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04
2 participantes
Página 1 de 1
Monitoramento de reservatório com envio de dados p/ internet e alertas por SMS - SIM900, HC-SR04
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:
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
Desenvolvimento de sistemas de aquisição de dados sem fio
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
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
Tópicos semelhantes
» Sim900 Shield
» SIM 908 envia dados...
» Ativar alarme e extrair dados
» Desenvolvimento de sistemas de aquisição de dados sem fio
» Enviar dados de GPRS para WebService
» SIM 908 envia dados...
» Ativar alarme e extrair dados
» Desenvolvimento de sistemas de aquisição de dados sem fio
» Enviar dados de GPRS para WebService
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|