A automação de processos tem sido cada vez mais utilizada em diversos setores, visando a otimização de tarefas e a redução de custos. Um dos processos que pode ser automatizado é a leitura de nível de tanques de água. Neste artigo, vamos explorar como fazer uma aplicação de automação de leitura de nível de 5 tanques de água utilizando o ESP32 com rede LoRa.
O que é o ESP32?
O ESP32 é um microcontrolador de baixo custo e baixa potência, que pode ser programado para realizar diversas funções, como controle de motores, comunicação Wi-Fi e Bluetooth, entre outras. Ele é uma das opções mais populares para projetos de IoT (Internet das Coisas), devido à sua facilidade de uso e baixo custo.
O que é a rede LoRa?
A rede LoRa é uma tecnologia de comunicação sem fio de longo alcance e baixo consumo de energia, que é ideal para aplicações de IoT. Ela utiliza a frequência de rádio de 868 MHz na Europa e 915 MHz na América do Norte, que permite uma transmissão de dados de até 10 km de distância em áreas urbanas e 30 km em áreas rurais.
Como funciona a automação de leitura de nível de tanques de água?
A automação de leitura de nível de tanques de água consiste em utilizar sensores para medir o nível da água nos tanques e enviar esses dados para um dispositivo central, que pode ser um microcontrolador ou um computador, por exemplo. Esses dados podem ser utilizados para monitorar o consumo de água, identificar possíveis vazamentos ou até mesmo acionar uma bomba quando o nível da água estiver baixo.
Passo a passo para fazer a aplicação de automação de leitura de nível de 5 tanques de água utilizando ESP32 com rede LoRa
Agora que entendemos o conceito de automação de leitura de nível de tanques de água, vamos ver como fazer a aplicação utilizando o ESP32 com rede LoRa.
Materiais necessários:
Leia também:
Como Ver conversas de Whats App
Como Rastrear Celular Pelo Número?
Como Assistir TV, Filmes e Séries Pelo Celular?
Aplicativo Para Encontrar Pessoas Interessantes
5 sensores de nível de água
5 resistores de 10k ohms
1 ESP32
1 módulo LoRa
1 antena para o módulo LoRa
Jumpers
Protoboard
Fonte de alimentação
Passo 1: Conectar os sensores de nível de água ao ESP32
Para medir o nível de água nos tanques, vamos utilizar sensores de nível de água. Esses sensores podem ser encontrados em lojas de eletrônicos ou em sites de vendas online. Eles são simples de usar e geralmente têm três pinos: VCC, GND e Sinal.
Para conectar os sensores ao ESP32, vamos utilizar a protoboard e os jumpers. Conecte o pino VCC dos sensores ao pino 3.3V do ESP32, o pino GND dos sensores ao pino GND do ESP32 e o pino Sinal dos sensores aos pinos ADC1_36, ADC1_39, ADC1_32, ADC1_33 e ADC1_34 do ESP32, respectivamente.
É importante lembrar que os sensores de nível de água possuem uma saída analógica, ou seja, eles enviam um sinal de tensão proporcional ao nível de água no tanque. Para ler esse sinal de tensão, é necessário utilizar resistores de 10k ohms em série com os pinos Sinal dos sensores e os pinos ADC do ESP32. Isso vai garantir que o sinal de tensão seja lido de forma precisa e confiável pelo microcontrolador.
Passo 2: Configurar o módulo LoRa
O próximo passo é configurar o módulo LoRa para permitir a transmissão dos dados de leitura de nível de água para o dispositivo central. Para isso, é necessário conectar o módulo LoRa ao ESP32 utilizando a protoboard e os jumpers. Conecte o pino MISO do módulo LoRa ao pino 19 do ESP32, o pino MOSI do módulo LoRa ao pino 23 do ESP32, o pino CLK do módulo LoRa ao pino 18 do ESP32, o pino CS do módulo LoRa ao pino 5 do ESP32 e a antena ao pino ANT do módulo LoRa.
Em seguida, é necessário configurar o módulo LoRa para permitir a comunicação com outros dispositivos na rede. Para isso, é possível utilizar bibliotecas disponíveis na plataforma Arduino, como a biblioteca “LoRa” do Sandeep Mistry. Essa biblioteca permite a configuração de parâmetros como a frequência de operação da rede, a potência de transmissão e a taxa de transmissão de dados.
Passo 3: Programar o ESP32
Com os sensores de nível de água e o módulo LoRa configurados, é hora de programar o ESP32 para ler os dados dos sensores e transmiti-los pela rede LoRa. Para isso, é possível utilizar a plataforma Arduino, que oferece diversas bibliotecas e exemplos para programação do ESP32.
Um exemplo de código para a leitura dos sensores e transmissão dos dados pela rede LoRa é o seguinte:
#include <LoRa.h> // Define os pinos dos sensores
int pinSensor1 = 36;
int pinSensor2 = 39;
int pinSensor3 = 32;
int pinSensor4 = 33;
int pinSensor5 = 34; // Define os valores de calibração dos sensores
float sensor1Cal = 0.0;
float sensor2Cal = 0.0;
float sensor3Cal = 0.0;
float sensor4Cal = 0.0;
float sensor5Cal = 0.0;
void setup() { // Inicializa o módulo LoRa
LoRa.setPins(5, 18, 19); // CS, CLK, MISO
if (!LoRa.begin(868E6))
{ Serial.println(“Erro ao iniciar o módulo LoRa!”);
while (1);
} Serial.println(“Módulo LoRa iniciado com sucesso!”); // Define a taxa de transmissão de dados LoRa.setSpreadingFactor(12);
LoRa.setSignalBandwidth(125E3); // Define os pinos dos sensores como entradas analógicas pinMode(pinSensor1, INPUT);
pinMode(pinSensor2, INPUT);
pinMode(pinSensor3, INPUT
pinMode(pinSensor4, INPUT);
pinMode(pinSensor5, INPUT);
// Calibra os sensores
sensor1Cal = calibrateSensor(pinSensor1);
sensor2Cal = calibrateSensor(pinSensor2);
sensor3Cal = calibrateSensor(pinSensor3);
sensor4Cal = calibrateSensor(pinSensor4);
sensor5Cal = calibrateSensor(pinSensor5); }
void loop() {
// Lê o valor dos sensores float level1 = readSensor(pinSensor1, sensor1Cal);
float level2 = readSensor(pinSensor2, sensor2Cal);
float level3 = readSensor(pinSensor3, sensor3Cal);
float level4 = readSensor(pinSensor4, sensor4Cal);
float level5 = readSensor(pinSensor5, sensor5Cal);
// Prepara os dados para envio pela rede LoRa
String data = String(level1) + “,” + String(level2) + “,” + String(level3) + “,” + String(level4) + “,” + String(level5);
// Transmite os dados pela rede LoRa
LoRa.beginPacket();
LoRa.print(data); LoRa.endPacket();
// Aguarda 5 segundos antes de enviar novamente os dados delay(5000); }
float calibrateSensor(int pin)
{
// Realiza a calibração do sensor
float sum = 0.0;
int count = 100;
for (int i = 0; i < count; i++) { sum += analogRead(pin);
delay(10);
} float avg = sum / count; return avg;
}
float readSensor(int pin, float cal)
{
// Lê o valor do sensor e aplica a calibração
int value = analogRead(pin);
float level = map(value, 0, 4095, 0, 100);
level = level – cal;
if (level < 0.0) { level = 0.0;
}
return level;
}
Este código realiza a leitura dos valores dos sensores de nível de água e os transmite pela rede LoRa utilizando o módulo LoRa conectado ao ESP32. A calibração dos sensores é realizada no início do programa e consiste em medir o valor médio de leitura dos sensores sem a presença de água nos tanques. O valor de calibração é subtraído do valor lido pelo sensor durante a operação do programa, garantindo a leitura correta do nível de água. Os valores de nível de água são enviados pela rede LoRa a cada 5 segundos.
Passo 4: Configurar o dispositivo central
Por fim, é necessário configurar o dispositivo central que irá receber os dados de leitura de nível de água transmitidos pela rede LoRa. Este dispositivo pode ser um outro ESP32 equipado com um módulo LoRa, um computador com um gateway LoRa conectado, ou qualquer outro dispositivo que possa receber dados pela rede LoRa.
Para configurar o dispositivo central, é necessário utilizar bibliotecas e exemplos disponíveis para a plataforma Arduino ou para a linguagem de programação de sua preferência. O código do dispositivo central deve ser capaz de receber os dados transmitidos pela rede LoRa e armazená-los em um banco de dados ou exibi-los em uma interface gráfica, por exemplo.
O processo de construção do sistema de automação envolve a montagem do hardware e a programação do firmware do ESP32. O hardware pode ser construído utilizando componentes eletrônicos de fácil acesso, como os sensores de nível de água e o módulo LoRa, enquanto a programação do firmware pode ser realizada utilizando a plataforma Arduino e a linguagem de programação C++.
Para obter resultados precisos, é importante realizar a calibração dos sensores de nível de água antes da utilização do sistema. A calibração consiste em medir o valor médio de leitura dos sensores sem a presença de água nos tanques e subtrair este valor dos valores de leitura durante a operação do sistema.
Uma vez configurado, o sistema de automação de leitura de nível de tanques de água pode ser utilizado em diversas aplicações, como monitoramento de reservatórios de água em propriedades rurais, monitoramento de nível de água em tanques de armazenamento de água de chuva em residências, entre outras.
Além disso, o sistema pode ser facilmente expandido para a leitura de níveis de outros líquidos, como óleo, combustíveis e produtos químicos, desde que sejam utilizados sensores adequados para cada aplicação.
Conclusão Final
Em resumo, a automação de leitura de nível de tanques de água utilizando o ESP32 com rede LoRa é uma solução eficiente e de baixo custo para monitoramento remoto de reservatórios de água e pode ser facilmente adaptada para diferentes aplicações. Com a crescente demanda por soluções sustentáveis e eficientes para o uso de recursos naturais, esta tecnologia apresenta-se como uma alternativa viável para a gestão de recursos hídricos em diferentes áreas.