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:

Conexão | Sensor de nível de água
Conexão | Sensor de nível de água

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.

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 newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

3 comentários em “Sensor de nível de água para Arduino, ESP8266, Raspberry…

Deixe uma resposta