Manual

do

Maker

.

com

Sensor de nível de água para Arduino, ESP8266, Raspberry...

Sensor de nível de água para Arduino, ESP8266, Raspberry...

Tanta coisa que podemos automatizar que algumas vezes nos perdemos diante tantos brinquedos. No caso desse sensor de nível, o propósito mais cabível para ele é interromper o fluxo de água que esteja vindo de algum lugar. Espero que o parceiro AutoCore envie uma solenóide para abrir e fechar a passagem de água, mas enquanto isso, vamos ver um tutorial que simplesmente gerará a interrupção no ESP8266. Poderia ser também no Arduino, Raspberry etc, afinal o procedimento é basicamente o mesmo. Os conceitos necessários para cada plataforma que desejar está descrito nos posts a seguir:

E há uma razão, um "porquê" de utilizarmos interrupção. Se você escrever todo o código no loop para ficar executando uma sequência de comandos, isso aumenta o consumo da MCU e ainda por cima pode não atender no momento preciso. Isto é, o nível de água pode facilmente passar do limite se a MCU não conseguir atender a tempo, mas com uma interrupção a MCU para tudo o que estiver fazendo para atendê-la. Essa é uma das grandes vantagens em se utilizar interrupções.

A experiência será o mais artesanal possível, já que não tenho uma aplicação real para o momento; ou tenho, mas não estou com vontade de furar meu filtro de barro agora. Também, o código será o mais simplório possível e  a MCU também. Nesse caso, utilizarei a Attiny85 Digispark, onde descrevi os primeiros passos para utilizá-la na IDE do Arduino nesse outro artigo.

Lista de materiais

Você precisará de apenas 5 ítens:

Claro, acredito que alguma coisa você já tenha, no caso, fios jumpers. Não tem? Então você pode adquirí-lo aqui.

Wiring

Cortei um cabo jumper e os soldei às pontas dos fios do sensor de nível d'água, de modo que pude conectar o sensor diretamente ao Digispark. O Wiring mais simples possível, sem filtragem de ruído nem nada, é a conexão de um dos fios do sensor ao 5V e o outro fio ao P2. Só isso.

A conexão aqui no mundo real ficou desse jeito:

wiring-sensor_plus_digispark-300x225.webp

Como funciona o circuito

Como você pode ver, não tem nada entre o Digispark e o sensor. Ambos os fios do sensor estão conectados aos pinos do Digispark, P2 e P3 respectivamente. O sensor somente fecha o circuito quando a bóia tocar o topo, daí a tensão seguirá em sentido ao outro pino que periodicamente está fazendo leitura digital em busca da mudança de estado. Como citado ao início, a melhor opção é utilizar um dispositivo que ofereça a capacidade de lidar com interrupções e de preferência, de uma maneira fácil. Mas para a prova de conceito está perfeita a utilização de um Digispark.

Código

Na hora de escrever o código, lembre-se de que os pino P3 e P4 estão dedicados à USB. No caso, conectei um fio do sensor ao 5V e o outro fio ao pino P2, que fará leituras periódicas (a cada loop) em busca da mudança de estado com o circuito fechado pelo sensor, indicando assim que o recipiente atingiu o limite.

O código é tão pequeno quanto o próprio Digispark. Vamos utilizar o mesmo LED da board utilizado também para exemplo nesse primeiro artigo sobre o Digispark.

int sensor  = 0;
int counter = 0;
int alarm   = 0;

void setup(){
    pinMode(1,OUTPUT); //modelo b
    pinMode(0,OUTPUT); //modelo a
    pinMode(2,INPUT);
}

void loop(){
    sensor += digitalRead(2);
    if (sensor > 2){
      if (counter > 2){
        digitalWrite(1,HIGH);
        digitalWrite(0,HIGH);
        alarm  = 1;
        sensor = 0;
      }
    }
    else{
      alarm = 0;
    }
    if (alarm == 0){ 
        counter = 0;
        sensor  = 0;
        digitalWrite(0,LOW);
        digitalWrite(1,LOW);
    }
    delay(10);
}

E um pequeno video, apenas para mostrar o LED acender quando chegar no limítrofe.

https://youtu.be/lu\_ugSOeijk

Por fim, não é necessário nenhum tipo de controlador para fazer um exemplo simples assim, mas se você estiver utilizando um controle de fluxo de água, certamente o ideal é utilizar PI, PD ou PID e nesse caso uma MCU realmente é necessária.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.