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

Na Internet podemos encontrar inúmeros projetos com Arduino, que permitem monitorizar o nível da caixa d’água. Mas se pretende inovar e facilitar a instalação deste sistema, pode implementá-lo sem fio!

Para melhorar a interface com o usuário deste sistema, usaremos 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 demonstra ser desafiante. Baseando-se nos inúmeros módulos para Arduino que podem transmitir dados através das ondas de radiofrequência, a escolha é difícil. Deve estar a pensar, por que não usar WIFI ou um Módulo NRF24, tão comum e barato?

Após alguns testes com os módulos NRF24 descobrimos que este não apresenta um bom desempenho num local onde existem dezenas de routers WIFI. Sabendo-se que os routers WIFI e os módulos NRF24 usam a mesma faixa de frequência, percebemos que o alcance do sinal dos módulos fica muito debilitado devido à grande quantidade de interferência. É claro, se for instalar este sistema onde não tem tanta interferência, os módulos NRF24 poderão ser facilmente utilizados. Desde que faça as devidas alterações na montagem e no Sketch.

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

A frequência deste sinal de 433 MHz encaixa-se na Banda ISM (Industry, Science and Medicine). E atualmente é usada na faixa LORA (longo alcance) na Europa!

Sensores do nível d’água

Para os sensores usaremos os sensores de nível d’água (chave bóia) pois eles têm uma 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 humidade, pode ser quente e pode provocar a breve destruição de outros tipos de sensores.

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

Chave bóia aberta

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

Chave bóia fechada

Na Internet e no Youtube existe um método bem interessante de instalação destes 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. Para o projeto usaremos quatro sensores, mas poderia utilizar mais ou menos sensores dependendo da sua necessidade. Mas lembre-se que tem de 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 bóia). Conectado a esse Arduino fica o módulo transmissor RF433. Ele transmite as informações sobre os sensores. Para simplificar a manutenção, com este 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 bóia está para baixo (sem água) e com a chave aberta.

Para permitir um maior alcance do sinal de radiofrequência usaremos uma fonte de 9 Volts (poderá usar uma fonte de até 12V) 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 5V do Arduino.

Material necessário – Arduino TX:

Diagrama da montagem – Arduino – Caixa D’água 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 > Gerir Bibliotecas 

Após abrir a janela do Gestor de Bibliotecas, procure rc-switch. Na biblioteca RC-switch, clique em Instalar. Após alguns segundos, ela será automaticamente instalada. Lembre-se que o seu computador precisa de 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.

Biblioteca RC switch

Este é o Sketch Code que deve ser gravado no primeiro Arduino TX. Os sensores de nível d’água são monitorados. Quando o Arduino deteta que a bóia fechou o contacto do sensor, o LED respetivo ao sensor acende. Isto é 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 a cada 3 segundos. Desta forma, se algum sensor estragar, nada será transmitido e o Arduino Recetor mostrará uma falha. Estes códigos servem para facilitar a receção dos dados, pelo módulo RF433 RX. Todas as vezes 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 recetor 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.

Neste guia básico sobre os módulos RF433 está explicado como são montadas as antenas, usando fios rígidos de 17,3 cm:

Guia Básico dos Módulos TX / RX – RF 433MHZ

Para aumentar o alcance das antenas, fizemos algumas experiências. Um dos testes que deu bom resultado foi usando um fio rígido de 34,6 cm (1/2 comprimento de onda) todo enrolado num lápis. Depois da antena toda enrolada, removemos o lápis e aumentamos 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 – Recetor e display OLED

O outro Arduino Uno serve como monitor do nível da água. Ele poderá ser instalado a 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 recetor 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 telemóvel (5V) e o cabo USB para ligá-lo.

Material necessário – Arduino RX:


Diagrama da montagem – Arduino – Caixa D’água 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 recetor 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, é necessário instalar duas bibliotecas na Arduino IDE – a Adafruit_SSD1306 e a Adafruit-GFX. Use o mesmo procedimento usado para a instalação da biblioteca RC-switch.

Biblioteca Adafruit SSD1306

Biblioteca Adafruit GFX

Este é o Sketch que deve gravar no segundo Arduino com o módulo recetor 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 receçã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, sugerimos que faça as montagens em Breadboards. Mas para um funcionamento definitivo, sugerimos que monte tudo em placas de circuito impresso pré-fabricadas. Solde os componentes e os fios de ligações nas placas e nos Arduinos. Confira todas as montagens, antes de ligar os circuitos! Se tiver conhecimento e experiência, poderá projetar placas de circuito impresso dedicadas para o sistema.


Placa PCI para protótipos

Este sistema foi desenvolvido para o monitoramento do nível da caixa d’água. Mas pode 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. Este display é bem versátil e poderá acrescentar mais funcionalidades ao seu projeto!

Se necessitar do registo dos níveis de água durante um certo período, por exemplo durante dias ou semanas, sugerimos 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.