ESP32 - Sensor de Água - Bomba

Neste tutorial, vamos aprender a usar um ESP32 para ativar uma bomba que drena a água quando ela é detectada por um sensor de água. Em outras palavras, vamos descobrir como criar um sistema de drenagem automático usando um ESP32, um sensor de água e uma bomba

Sobre o Sensor de Água e a Bomba

Se você não conhece o sensor de água e a bomba (pinagem, como funcionam, como programar...), aprenda sobre eles nos tutoriais a seguir:

Como o Sistema de Drenagem Automático Funciona

O ESP32 lê periodicamente o valor do sensor de água e então:

  • Se o valor for maior que um limite predefinido, o ESP32 liga o relé para ativar a bomba.
  • Caso contrário, o ESP32 desliga a bomba.

Diagrama de Ligação

The wiring diagram between ESP32 water sensor controls Pump

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-water-sensor-pump */ #define RELAY_PIN 13 // The ESP32 pin GPIO13 that connects to the relay to control the pump #define POWER_PIN 32 // The ESP32 pin GPIO32 that provides the power to the water sensor #define SIGNAL_PIN 36 // The ESP32 pin GPIO36 that reads the value from the water sensor #define THRESHOLD 1000 // The threshold for water detectiion void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(RELAY_PIN, OUTPUT); // configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF digitalWrite(RELAY_PIN, LOW); // turn the pump OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the water sensor's power ON delay(10); // wait 10 milliseconds int value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor's power OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(RELAY_PIN, HIGH); // turn the pump ON } else { digitalWrite(RELAY_PIN, LOW); // turn the pump OFF } delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente do ESP32 na Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por um cabo micro USB
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código acima e abra na Arduino IDE
  • Clique no botão Upload da Arduino IDE para fazer o upload do código para o ESP32
Arduino IDE Upload Code
  • Coloque o sensor de água na água
  • Veja o estado da bomba

Explicação do Código

Leia a explicação linha por linha nos comentários do código-fonte!

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor de água. O ADC do ESP32 é bom para projetos que NÃO precisam de alta precisão. Porém, para projetos que precisam de medições precisas, observe:

  • O ADC do ESP32 não é perfeitamente preciso e pode precisar de calibração para dar resultados corretos. Cada placa ESP32 pode ser um pouco diferente, então você precisa calibrar o ADC de cada placa individualmente.
  • A calibração pode ser difícil, principalmente para iniciantes, e nem sempre dá o resultado exato que você quer.

Para projetos que precisam de alta precisão, considere usar um ADC externo (por exemplo, o ADS1115) com o ESP32, ou usar um Arduino, que tem um ADC mais confiável. Se mesmo assim você quiser calibrar o ADC do ESP32, consulte o ESP32 ADC Calibration Driver

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!