Neste artigo, faremos um dispositivo que irá monitorar os níveis de líquidos na água/óleo ou em qualquer tanque. As informações do nível monitorado serão enviadas para uma estação de monitoramento. Isto pode ser útil para monitorar alguns tanques de água instalados em locais onde os humanos não conseguem chegar com frequência e em locais que são tóxicos, como laboratórios onde produtos químicos líquidos são armazenados em grandes recipientes.

link:
Componentes necessários
Ferramentas necessárias/bibliotecas necessárias
IDE do Arduino
Biblioteca Arduino – gerenciador de Wi-Fi
Informações Técnicas
Estaremos usando um sensor de medição de distância IR para medir o nível de líquido em recipientes ou tanques. A saída do sensor é medida em uma unidade e armazenada em um microcontrolador; neste caso, Arduino UNO. Os dados do sensor são então enviados usando ESP para o servidor Thingspeak para monitoramento.
Diagrama de bloco

Figura 1 Sistema de monitoramento de nível de líquido
O sensor IR está conectado ao Arduino Uno e enviando dados do sensor para ele. O ESP está conectado ao Arduino e ao roteador Wi-Fi, com uma biblioteca ThingSpeak para fins de comunicação.
Diagrama de circuito

Figura 2 Placa Atmega 328 com ESP
Como funciona o sistema
- Quando ligado pela primeira vez, o ESP gera um ponto de acesso denominado “OilTank -1” exibido em um display OLED.
- Precisamos nos conectar a ele e abrir o URL para configurar o ESP.
- Então, no painel de configuração, podemos definir a qual Wi-Fi ESP se conectará. Basta inserir o SSID e a senha do Wi-Fi.
- Depois de conectar-se ao Wi-Fi, o nome do Wi-Fi é exibido na tela OLED.
- Uma bateria também opera o dispositivo, portanto a porcentagem da bateria também é mostrada na tela e o nível do líquido do tanque.
- Agora, depois de se conectar à internet, o dispositivo envia dados a cada 20 segundos para o servidor Thingspeak.
- Se o Wi-Fi estiver desconectado, na tela você verá que o Wi-Fi está desconectado e o ESP irá gerar um hotspot novamente.
Entendendo o código-fonte
Para entender o código, existem dois arquivos; um é para ESP e outro é para Arduino.
ESP.ino
Também estamos usando uma biblioteca Wi-Fi para ESP configurar facilmente o ESP usando seu ponto de acesso sem escrever informações de Wi-Fi no código. Estamos conectados com a API Thingspeak quando a Internet está conectada. O código foi projetado para enviar qualquer coisa que chegue ao serial, o que não é um comando do ESP, para o painel da API do thingspeak.
Então, vamos dar uma olhada no código.
- Na função de configuração estamos criando um hotspot usando a biblioteca WiFi-Manger
wifiManager.autoConnect(“OilTank-1”); - Se o hotspot for criado, o ESP não estava conectado anteriormente ao Wi-Fi que agora está disponível. O hotspot é um loop de bloqueio do programa, por isso enviamos um comando “setup” antes de criar um hotspot. Isso significa que as informações de configuração serão exibidas na tela.
- Se o hotspot estiver DESLIGADO, enviamos o comando “conn”, que significa que o ESP está conectado ao Wi-Fi, e o programa segue.
Serial.print(“con”); - O ESP também está ouvindo alguns comandos aos quais responde ao Arduino
- Se nenhum desses comandos for reconhecido, então esses dados serão os dados do nível do tanque que serão enviados usando a biblioteca thingspeak
ThingSpeak.writeField(myChannelNumber, 1, recivedData, myWriteAPIKey);
Arduino.ino
O Arduino é instalado com uma biblioteca OLED para exibir os dados OLED; ele também se comunica com o ESP em comunicação serial.
O código do Arduino também obtém valores analógicos do sensor no pino analógico A2 e calcula as tensões. A partir daí, podemos mapear isso para o nível do tanque.
A função tank_data faz a leitura no pino analógico 2 e depois calcula a leitura da tensão e a envia para o ESP em um período de 20 segundos.
val = analogRead(A2);
tensão = ((val * 3,3000) / 1024,0);
Existem alguns comandos para OLED, que o Arduino está recebendo do ESP em série.
É assim que podemos fazer um sistema de monitoramento de nível de líquido.
Código fonte do Board.ino:
Código-fonte ES.ino:
Demonstração em vídeo: