ESP32 — это плата для разработки, производимая Espressif systems, которую можно использовать одновременно как плату микроконтроллера, а также плату Интернета вещей (IoT). Он содержит необходимые функции, такие как PWM, I2C, SPI и т. д., а также встроенные возможности подключения Bluetooth и WIFI. Подробнее об особенностях ESP32 и его настройке в Arduino IDE читайте в статьях здесь и здесь.

Оборудование

  1. ESP32 РАЗРАБОТКА V1
  2. Датчик уровня воды
  3. Емкость с водой
  4. Перемычки

Полная установка будет выглядеть примерно так

Датчик уровня воды

Датчик уровня воды — это модуль, предназначенный для обнаружения воды, даже небольшого количества влаги. Такая функция может быть полезна для обнаружения утечек, дождя и даже других функций определения влажности, кроме уровня воды. Глядя на датчик уровня воды, он имеет ряд параллельных медных полос по всей длине модуля. Пять из них — разветвители питания, а остальные пять — сенсорные разветвители. Когда модуль не погружен в воду, между полосками возникает высокое сопротивление. Когда полоски вступают в контакт с водой, сопротивление снижается, а проводимость увеличивается. Датчик имеет три контакта: один — контакт VCC, другой — контакт GND, а третий — контакт SIGNAL, который нужно присоединить к контакту, на котором мы будем снимать показания. На модуле контакты обозначены как «+», «-» и «S» соответственно.

Следует иметь в виду, что эти датчики имеют небольшой срок службы из-за того, что поверхность медных полос подвергается коррозии, когда мы подаем питание к датчику и позволяем ему контактировать с водой. Чтобы избежать этого, мы можем подавать питание на датчик только тогда, когда нам нужно снимать показания, а не постоянно. Для этого мы можем установить вывод, который мы устанавливаем высоким только при подаче питания на плату.

Код

Мы будем использовать следующий код в Arduino IDE

#define POWER 33
#define SIGNAL 32

int value=0;

int level=0;

void setup() {
  Serial.begin(115200);
  pinMode(POWER,OUTPUT);
  digitalWrite(POWER,LOW);
}

void loop() {
  level=waterSensor();
  Serial.print("Water Level:");
  Serial.println(level);
  delay(1000);

}

int waterSensor()
{
  digitalWrite(POWER,HIGH);
  delay(10);
  value=analogRead(SIGNAL);
  delay(10);
  digitalWrite(POWER,LOW);
  return value;
}

Для построчного объяснения

Во-первых, мы определяем выводы, которые мы собираемся использовать для питания модуля и считывания с него аналоговых данных.

#define POWER 33
#define SIGNAL 32

Затем мы определяем две целочисленные переменные, которые будем использовать для хранения показаний датчика.

int value=0;

int level=0;

В блоке void setup() мы определяем последовательную связь, а также настраиваем вывод питания как ВЫХОД и НИЗКИЙ уровень.

void setup() {
  Serial.begin(115200);
  pinMode(POWER,OUTPUT);
  digitalWrite(POWER,LOW);
}

В блоке void loop() мы используем определяемую пользователем функцию waterSensor() для проверки уровня воды, а затем отображаем вывод на последовательном мониторе.

void loop() {
  level=waterSensor();
  Serial.print("Water Level:");
  Serial.println(level);
  delay(1000);

}

Мы определяем функцию waterSensor(), установив вывод питания как ВЫСОКИЙ, используя функцию AnalogRead() для проверки уровня воды, а затем снова установив вывод питания как НИЗКИЙ. Таким образом, мы избегаем чрезмерной коррозии поверхности нашего модуля.

int waterSensor()
{
  digitalWrite(POWER,HIGH);
  delay(10);
  value=analogRead(SIGNAL);
  delay(10);
  digitalWrite(POWER,LOW);
  return value;
}

Заключение

После загрузки кода на нашу плату ESP32 мы открываем последовательный монитор со скоростью 115200 бод. Мы будем видеть показания, отображаемые через каждую секунду. Когда модуль не погружен в воду, аналоговое показание равно нулю.

в то время как полное погружение его в воду дает нам аналоговое значение более 1300.

Мы можем использовать это изменение значения аналоговой проводимости в качестве триггера для запуска любого события, например, включения светодиода или зуммера.

Если вам нужны какие-либо платные задания по написанию контента или любые рекомендации, связанные с ESP32 или электричеством, обращайтесь по адресу [email protected]