Sensor horizontal para nível de caixa D’Agua / Tanque / Áquario

Trata-se de um sensor estilo uma boia que possuí internamente em uma das extremidades um “Sensor Magnético Reed Switch” e na outra extremidade um imã que se movimento pra cima e pra baixo, que quando encosta na primeira extremidade, o contato do Reed Switch fecha (basicamente como um push button).

A instalação física do sensor é simples e pode ser instalada em um cano de PVC ou diretamente na caixa d’agua. O primeiro cenário proporciona uma flexibilidade maior em relação ao tipo de local do armazenamento da água, como por exemplo poço, cisterna ou outro local.

Exemplo em funcionamento

No exemplo a seguira, liguei 3 sensores em uma base simulando a ligação que poderia ser utilizada em uma caixa d’agua ou reservatório. Para interface utilizei um nodemcu conectado a rede wifi como um pequeno servidor web para apresentar uma página com o status dos sensores.

Esquema de ligação:

Código utilizado:

#include <ESP8266WiFi.h>
#include <SPI.h>

//#####################################//
const char* ssid = "NOME_REDE_WIFI";
const char* password = "SENHA_REDE_WIFI";
String readString;
char c;
int sensor1 = 16;
int sensor2 = 5;
int sensor3 = 4;

WiFiServer server(80);
//#####################################//

void setup() {

  pinMode(sensor1,INPUT); 
  pinMode(sensor2,INPUT);  
  pinMode(sensor3,INPUT);    
  
  Serial.begin(115200);
  delay(10);
  Serial.print("Conectando na rede: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Conectada");

  server.begin();
  Serial.println("Servidor iniciado!");
  Serial.print("Endereço IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {

    //####################################################################################//
    WiFiClient client = server.available();
    if (client) {
      boolean currentLineIsBlank = true;
      while (client.connected()) {
        if (client.available()) {
          char c = client.read();
  
          if (readString.length() < 100) {
            readString += c;
          }
  
          if (c == '\r') {
    
            String buf = "";
            buf += "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n";
            buf += "<meta HTTP-EQUIV=\"refresh\" CONTENT=\"5\">";
            buf += "<html>";
            buf += "<head>";
            buf += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />";
            buf += "<meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0'>";
            buf += "<table align=\"center\" width=\"200\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
            buf += "<tr>";
            buf += "<td align=\"center\"><p><font face=\"Verdana\" size=\"3\">CONTROLE DE N&Iacute;VEL D'AGUA<br />";
            buf += "NODEMCU<br />";
            buf += "SENSOR B&Oacute;IA N&Iacute;VEL D'AGUA</font></p><br /><br /></td>";
            buf += "</tr>";
            buf += "</table>";
            buf += "<table align=\"center\" width=\"200\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-left:solid; border-right:solid; border-top:solid; border-bottom:solid; border-width:1px; border-color:#009;\">";
            buf += "<tbody>";
            buf += "<tr>";
            if(digitalRead(sensor1) == 0){
            buf += "<td height=\"50\"><center><font face=\"Verdana\" size=\"3\">Nivel Maximo</font></center></td>";
            }else{
            buf += "<td height=\"50\" bgcolor=\"#0067BC\"><center><font face=\"Verdana\" size=\"3\" color=\"#FFFFFF\">Nivel Maximo</font></center></td>";  
            }
            buf += "</tr>";
            buf += "<tr>";
            if(digitalRead(sensor2) == 0){
            buf += "<td height=\"50\"><center><font face=\"Verdana\" size=\"3\">Nivel Medio</font></center></td>";
            }else{
            buf += "<td height=\"50\" bgcolor=\"#0067BC\"><center><font face=\"Verdana\" size=\"3\" color=\"#FFFFFF\">Nivel Medio</font></center></td>";  
            }
            buf += "</tr>";
            buf += "<tr>";
            if(digitalRead(sensor3) == 0){
            buf += "<td height=\"50\"><center><font face=\"Verdana\" size=\"3\">Nivel Baixo</font></center></td>";
            }else{
            buf += "<td height=\"50\" bgcolor=\"#0067BC\"><center><font face=\"Verdana\" size=\"3\" color=\"#FFFFFF\">Nivel Baixo</font></center></td>";  
            }
            buf += "</tr>";
            buf += "</tbody>";
            buf += "</table>";
            buf += "</body>";
            buf += "</html>";
            
            
            client.print(buf);
            client.flush();
            client.stop();
            readString="";
          }
        }
      }
    }

}

Vídeo do exemplo:

 

Espero ter conseguido exemplificar o uso desses sensores nesse post.

Abraços e até a próxima.

Anteriores

NodeMCU + Matriz de Led 8*32 – Letreiro digital com envio texto via web

Próximo

Usando LED RGB WS2812 enderecavel com arduino

10 Comentários

  1. Gabriel Ernandes

    Teria o esquemático desse projeto no Fritzing?

    • ozirisjunior

      Boa tarde Gabriel, obrigado pelo contato. Na verdade não entendi muito bem sua solicitação, pois no post eu já exibo uma imagem com a ligação. Não seria essa? ou pra você não carregou? Abraços e obrigado.

  2. marcio

    copiei o código todo, quando desliga o nível baixo apaga o desenho todo dos 3 níveis

    • ozirisjunior

      Boa tarde Márcio, não entendi muito bem sua duvida. Cada nível é independente um do outro, posso estar só com o nível do meio baixo e na pagina web mostrará exatamente isso. Consegues um vídeo para me mostrar o seu problema? quem sabe consigo te ajudar. Abraços e obrigado.

  3. Dailson

    Cara, a luz que eu tava buscando rsrsrs…

    Meu projeto de TCC utiliza o Sensor de Nível LA16M-40, mas tô na dúvida de qual resistor usar… Tenho receio de acabar queimando o sensor se não colocar o resistor correto. Qual vc utilizou no seu projeto?

    • ozirisjunior

      Boa tarde Dailson, tudo certo? No projeto eu utilizei o de 10k. Não acho que queimará seu sensor, mais a falta dele pode dar interferência na leitura.
      Boa sorte com seu TCC, abraços e obrigado.

  4. Alexandre Fernandes Pereira

    Boa tarde alem de acrescentar a senha e a rede do wifi e necessário acrescentar mais alguma coisa.

    • ozirisjunior

      Boa tarde, não precisa acrescentar mais nada. Está tendo alguma dificuldade? abraços e obrigado.

  5. Antonio Carlos Alves dos Santos

    Boa tarde, gostaria de parabenizar pelo projeto, e gostaria de realizar ele aqui na minha casa, no projeto vi que tem 3 sensores, teria como colocar 5 a 8? E a placa você vende?

    Desde já obrigado

  6. Antonio Carlos Alves dos Santos

    Boa tarde, gostaria de parabenizar pelo projeto, estava querendo colocar ele aqui em casa, no projeto vi que tem 3 sensores teria como colocar 5 a 8? E sobre a placa você vende?

    Desde já obrigado

Deixe uma resposta