Sensor de nível de caixa d’água (Arduino) – sem fio !

Na WEB podemos encontrar inúmeros projetos com Arduino, que permitem o monitoramento do nível da caixa d’água. Mas pretendendo inovar e facilitar a instalação desse sistema, resolvi implementá-lo sem fio! Espero que seja útil e interessante para você, caro leitor.

Para melhorar a interface com o usuário desse sistema, usei um display OLED que pode informar o nível da caixa d’água, além de poder mostrar uma ou mais informações sobre o sistema de monitoramento. O Display OLED tem baixo consumo de energia, é fácil de usar e ainda tem recursos gráficos que um display LCD comum não tem.

O desenvolvimento do projeto usando a transmissão de dados sem fio demonstrou ser desafiante. Baseando-me nos inúmeros módulos para Arduino que podem transmitir dados através das ondas de rádiofrequência, a escolha foi difícil. Você poderia pensar, por que eu não usei WIFI ou um Módulo NRF24, tão comum e barato?

Já fiz alguns testes com os módulos NRF24 e a minha experiência não foi boa. Moro em um local, onde existem dezenas de roteadores WIFI. Sabendo-se que os roteadores WIFI e os módulos NRF24 usam a mesma faixa de frequência, percebi que o alcance do sinal dos módulos fica muito debilitado devido à grande quantidade de interferência. É claro, se for instalar esse sistema onde não tem tanta interferência, os módulos NRF24 poderão ser facilmente utilizados. Desde que faça alterações na montagem e no Sketch.

O que me agradou nos módulos RF433, usados nesse projeto, é que são baratos, fáceis de usar e tem um alcance satisfatório. Essa faixa de frequência dos 433 MHz é muita usada no Brasil, para controle remoto de portões de garagem e outros equipamentos. E como o sinal de RF é somente transmitido quando o botão do controle remoto é acionado, pode-se concluir que o nível de interferência é baixo.

A frequência desse sinal de 433 MHz se encaixa na Banda ISM ( Industrial, científica e médica). E atualmente é usada na faixa LORA (longo alcance) na Europa!

Sensores de nível d’água

Escolhi usar os sensores de nível d’água (chave boia) pois eles têm boa durabilidade, fácil uso e são à prova d’água. O ambiente interno de uma caixa d’água, além da água e da umidade, pode ser quente e pode provocar a breve destruição de outros tipos de sensores.

Essas imagens abaixo são dos sensores de nível d’água. Dentro da boia (parte móvel) tem um pequeno imã. Dentro do pino frontal do sensor, tem uma chave (reed switch) que é sensível ao magnetismo. Veja que quando a boia está para baixo, o contato fica aberto.

Chave boia aberta

Quando a boia sobe com a presença da água e fica próxima do pino frontal, o contato é fechado.

Chave boia fechada

Na WEB e no YOUTUBE, descobri um método bem interessante de instalação desses sensores, sem a necessidade de fazer furos na caixa d’água. Usando uma montagem com canos de PVC, o aparato fica totalmente à prova d’água e permite uma manutenção fácil, já que ele pode ser retirado inteiramente da caixa d’água.

Monte os canos e conexões de PVC, prenda os sensores e cole tudo para impedir a entrada de água. A fiação dos sensores deverá ser passada dentro dos canos e conectada no Arduino. A quantidade de sensores usadas por mim foi de quatro, mas poderá utilizar mais ou menos sensores dependendo da sua necessidade. Mas lembre-se que terá que fazer modificações no programa e na interface do display OLED, se não for usar os quatro sensores.

Montagem com o primeiro Arduino – sensores

O sistema de monitoramento utiliza dois Arduinos UNO. Um dos Arduinos ficará junto da caixa d’água e será usado para monitorar os sensores (chaves boias). Conectado à esse Arduino fica o módulo transmissor RF433. Ele transmite as informações sobre os sensores. Para simplificar a manutenção, com esse Arduino existem 4 leds, um para cada sensor. Se o led acender é porque o sensor está fechado (com o nível d’água). Se o led estiver apagado é porque a boia está para baixo (sem água) e com a chave aberta.

Para permitir um maior alcance do sinal de rádiofrequência usei uma fonte de 9 Volts (poderá usar uma fonte de até 12 V) para alimentar o módulo transmissor RF433. Para alimentar o Arduino conecte essa fonte no plug de energia do mesmo. O regulador interno do Arduino reduz a tensão para 5 Volts. Os sensores e os leds deverão usar somente o 5 V do Arduino.

Material necessário – Arduino TX:

  • Arduino Uno,
  • Módulo RF433 Transmissor
  • 4 sensores de nível d’água
  • 4 Leds
  • resistores – 4 x 2,2K ohms e 4 x 10 K ohms
  • Fonte 9 V
  • Protoboard ou placa PCI
  • fios para ligações
Diagrama da montagem – Arduino – Caixa Dagua TX

A biblioteca usada para controlar os módulos RF433 TX e RX, chama-se RC-switch. Para instalar a nova biblioteca na Arduino IDE, clique em :

Sketch > Incluir Biblioteca > Gerenciar Bibliotecas 

Após abrir a janela do Gerenciador de Biblioteca, refine a busca digitando  rc-switch. Na biblioteca RC-switch, clique em More Info e depois em Instalar. Após alguns segundos, ela será automaticamente instalada. Lembre-se que o seu computador precisa estar conectado na internet, para poder baixar a biblioteca. Após a instalação da Biblioteca, é necessário que feche e abra novamente o programa Arduino IDE.

Esse é o Sketch desenvolvido por mim para ser gravado no primeiro Arduino TX. Os sensores de nível d’água são monitorados. Quando o Arduino detecta que a boia fechou o contato do sensor, o Led respectivo ao sensor acende. Isso é importante para a avaliação do funcionamento dos sensores, durante uma manutenção.

Dentro do Loop do programa, verifica-se também a combinação de sensores acionados. Somente quando combinações válidas são detectadas, o Arduino transmite códigos, periodicamente à cada 3 segundos. Dessa forma, se algum sensor estragar, nada será transmitido e o Arduino Receptor mostrará uma falha. Esses códigos foram escolhidos por mim, para facilitar a recepção dos dados, pelo módulo RF433 RX. Toda vez que os dados forem transmitidos, o led da placa Arduino (D13) piscará também.

  • Caixa d’água vazia – código 1285
  • Caixa d’água 25% – código 1301
  • Caixa d’água 50% – código 1333
  • Caixa d’água 75% – código 1397
  • Caixa d’água 100% – código 1525

Informações importantes sobre as antenas

Tanto o módulo RF433 transmissor, quanto o receptor precisam ter antenas adequadas. A não instalação de antenas ou o ajuste inadequado, inviabilizarão o projeto, já que o sinal de RF não poderá ser recebido.

Nesse Guia básico sobre os módulos RF433, eu explico como são montadas as antenas, usando fios rígidos de 17,3 cm:

Para aumentar o alcance das antenas, fiz algumas experiências. Um dos testes que deu um bom resultado, foi usando um fio rígido de 34,6 cm (1/2 comprimento de onda) todo enrolado em um lápis. Depois da antena todo enrolada, eu removi o lápis e fui espichando a antena enrolada. Com um comprimento de aproximadamente 14 cm, os resultados foram melhores. Lembrando que as duas antenas precisam ser aproximadamente iguais em comprimento e precisam ser soldadas nos módulos RF433.

Segundo Arduino – receptor e display OLED

O outro Arduino Uno serve como monitor do nível da água. Ele poderá ser instalado à uma certa distância da caixa d’água, por exemplo no andar térreo de uma casa. Nesse Arduino, são acoplados o módulo receptor RF433 para receber as informações e o display OLED para mostrar o nível da água.

Para alimentar o Arduino Uno, poderá usar uma fonte externa entre 6,5 V e 12 V. Ou se preferir, use um carregador de celular (5V) e o cabo USB para energizá-lo.

Material necessário – Arduino RX:

  • Arduino UNO
  • Módulo RF433 Receptor
  • Display OLED 128×64 – I2C
  • Fonte 9 V
  • Buzzer ativo (para testes)
  • Protoboard ou placa PCI
  • fios para ligações
Diagrama da montagem – Arduino – Caixa Dagua RX

Uma coisa bem pensada no sistema, foi a indicação de alerta mostrada no display, quando algum sensor da caixa d’água falhar ou quando o módulo receptor não receber a transmissão. O tempo de espera do sinal de RF poderá ser alterado no sketch, se achar necessário. Se os dados dos sensores não forem recebidos dentro desse tempo (timeout), a indicação de falha será mostrada no display.

Para o uso do display OLED, duas bibliotecas precisam ser instaladas na Arduino IDE – a Adafruit_SSD1306 e a Adafruit-GFX. Use o mesmo procedimento usado para a instalação da biblioteca RC-switch.

Esse é o Sketch para ser gravado no segundo Arduino com o módulo receptor e o display OLED. A cada três segundos, o Arduino recebe os dados do transmissor. E as indicações de níveis de água são mostradas no display OLED. Se ocorrer alguma falha na recepção, a indicação de Falha de sinal será mostrada. Nesse caso, certifique-se que o módulo transmissor está ligado e transmitindo o sinal adequado. Para ajudar nos testes, sugiro que monte um Buzzer ativo (campainha sonora), conectando o pino positivo do Buzzer no pino D13 do Arduino. O outro pino negativo do Buzzer, conecte-o no pino terra (GND). Sempre que o sinal com os dados corretos for recebido, o led da placa Arduino piscará e um apito será emitido.

Sugestões para outras implementações

Para testes iniciais do sistema, sugiro que faça as montagens em Protoboards. Mas para um funcionamento definitivo, sugiro que monte tudo em placas de circuito impresso pré-fabricadas. Soldes os componentes e os fios de ligações nas placas e nos Arduinos. Confira todas as montagens, antes de energizar os circuitos! Se tiver conhecimento e experiência, poderá projetar placas de circuito impresso dedicadas para o sistema.

Placa PCI para protótipos

Esse sistema foi desenvolvido para o monitoramento do nível da caixa d’água. Mas poderá ser usado também para acionamento de uma bomba d’água quando o nível da caixa estiver baixo. Dessa forma, é só acrescentar um módulo de relé para controlar a bomba e fazer as alterações no sketch.

Use o display OLED para mostrar mais outras mensagens. Esse display é bem versátil e poderá acrescentar mais funcionalidades ao seu projeto!

Se você necessitar do registro dos níveis de água durante um certo período, por exemplo durante dias ou semanas, sugiro que acrescente um relógio RTC DS3231 e um módulo de cartão SD.

Se precisar de um alerta sobre o baixo nível de água da caixa, acrescente um Buzzer ativo (campainha sonora) e ou um indicador luminoso maior, para chamar a atenção.

Referências

Se gostar ou tiver alguma dúvida,  deixe um comentário!

Rating: 5.0/5. From 4 votes.
Please wait...
Gustavo Murta
Gustavo Murta
Consultor e Projetista de Sistemas Embarcados. Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing. Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia. Hobista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.