Como utilizar o sensor de nível / boia de água lateral com Arduino
O sensor de nível / boia de água lateral (Figura 1) é um interruptor boia capaz de detectar o nível de líquido dentro de um tanque. Esse dispositivo pode ser conectado à porta digital de vários microcontroladores (ESP, Arduino e outros), sendo amplamente utilizado em projetos de monitoramento de caixas d’agua e reservatórios.

O funcionamento do sensor de nível / boia de água lateral se baseia na movimentação de sua boia que conforme o nível de água sobe ou desce e pode ser melhor entendido a partir da análise da Figura 2 e dos seguintes pontos:
- Quando a boia estiver na posição A o sensor funcionará como uma chave aberta, indicando que o nível de água está baixo;
- Por sua vez, quando a boia estiver na posição B o sensor funcionará como uma chave fechada, indicando que o nível de água está alto.

Neste tutorial, vamos aprender a utilizar o sensor de nível lateral boia com o Arduino.
MATERIAIS NECESSÁRIOS
- 1x Placa UNO SMD Atmega328 compatível com Arduino;
- 1x Cabo USB Tipo A-B compatível com Arduino UNO;
- 1x Sensor de nível / boia de água lateral;
- 1x Protoboard;
- 1x LED verde difuso;
- 1x LED vermelho difuso;
- 2x Resistores 220 Ω;
- 1x Resistor 10 kΩ;
- Jumpers macho-macho.
ESQUEMÁTICO DE FUNCIONAMENTO
Monte o circuito da Figura 3 utilizando o sensor boia, os LEDs e os Jumpers.

Ao montar o circuito observe os seguintes pontos:
- Um fio do sensor deve ser conectado com a porta digital 10 do Arduino com resistor pull down de 10 kΩ;
- O outro fio do sensor deve ser alimentado com o 5V do Arduino;
- Para controle do LED vermelho e verde usamos as portas digitais 11 e 12.
ELABORANDO O CÓDIGO
Após a montagem do circuito, vamos a programação do Sketch. Nosso objetivo é utilizar o sensor de nível / boia de água em conjunto com o Arduino para verificar se o nível de água de um recipiente encontra-se alto ou baixo. Acompanhe os passos a seguir para melhor compreensão da lógica de programação:
- Definir os pinos do Arduino que serão utilizados
Iniciamos o código definindo as constantes SensorBoia, LedVermelho e LedVerde e atribuindo a elas os pinos 10, 11 e 12 do Arduino, respectivamente.
- Declarar a variável
Em seguida, declaramos a variável leiturasensor que será responsável por armazenar os dados de leitura do sensor boia.
- Inicializar a comunicação serial e configurar o modo dos pinos
A comunicação serial foi inicializada por meio da instrução: Serial.begin(9600);.
Logo após, definimos o SensorBoia como entrada de dados (INPUT) e LedVermelho e LedVerde como saída (OUTPUT).
- Realizar a leitura do sensor de nível e imprimir no monitor serial
Iniciamos o loop() realizando a leitura da porta digital 10 (SensorBoia) e imprimindo seu resultado no monitor serial
- Realizar a comparação (Nível de água alto x Nível de água baixo)
Utilizaremos a lógica do if…else para comparar a leitura do sensor, de modo que:
- Se a leitura do sensor for igual a nível lógico alto (HIGH), a mensagem “Nível de água alto” deve ser exibida no monitor serial e o LED indicativo verde deve ser acionado;
- Senão (leitura do sensor igual a nível baixo), a mensagem “Nível de água baixo” será exibida no monitor serial e o LED indicativo vermelho deve ser ligado
Ao final, o Sketch deste projeto ficará da seguinte maneira:
/* - SENSOR DE FREQUÊNCIA CARDÍACA E OXÍMETRO MAX30100 - ===================================================== ===== BLOG DA ROBOTICA - www.blogdarobotica.com ===== ===================================================== Autor: Jonas Souza E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ===================================================== ===== CASA DA ROBOTICA - www.casadarobotica.com ===== ===================================================== Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica ===================================================== */ #include <Wire.h> //Biblioteca para comunicação I2C #include "MAX30100_PulseOximeter.h" //Biblioteca para uso do sensor de frequência cardíaca e oxímetro MAX30100 #define REPORTING_PERIOD_MS 1000 // Intervalo entre a medição de cada amostra uint32_t tsLastReport = 0; // Tempo da última amostra dectada PulseOximeter pox; //Declaração objeto pox void onBeatDetected() { //Função executada quando um pulso é detectado Serial.println("Batimento detectado"); } void setup() { Serial.begin(9600); //Inicialização da comunicação serial Serial.print("Iniciando funcionamento do sensor "); if (!pox.begin()) //Testa a comunicação com o sensor { Serial.println("Falhou ! "); //Se a comunicação não foi realizada corretamente exibe a mensagem "Falhou" for (;;); } else { Serial.println("Sucesso ! "); //Se a comunicação foi realizada com sucesso exibe a mensagem "Sucesso !" } pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA); // Define que o sensor use 7,6 mA para o led pox.setOnBeatDetectedCallback(onBeatDetected); // Registra todas as vezes em que um batimento for detectado } void loop() { pox.update(); //Atualiza a leitura do sensor if (millis() - tsLastReport > REPORTING_PERIOD_MS) { //Imprime a leitura em intervalos de 1000ms Serial.print("Taxa de Batimento : "); Serial.print(pox.getHeartRate()); // Faz a leitura de batimento cardíaco Serial.print("bpm / Saturacao sangue(SP02) : "); Serial.print(pox.getSpO2()); //Realiza a leitura da saturação do sangue Serial.println("%"); tsLastReport = millis(); } }
Espero ter ajudado,
Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Jonas Souza
Você precisa fazer log in para comentar.