Найти в Дзене
иван таравков

Как подключить датчик уровня воды

● 4.4. Как подключить датчик уровня воды
Одна из главных задач умного дома — заботиться о своей сохранности, не допускать взломов, пожаров, затоплений, и прочих повреждений. Вот о защите от протечек и затопления мы сегодня и поговорим. Точнее сказать, пока только об обнаружении протечек.
Для обнаружения протечек будем использовать датчик воды. Датчики воды предназначены для определения

● 4.4. Как подключить датчик уровня воды

Одна из главных задач умного дома —  заботиться о своей сохранности, не допускать взломов, пожаров,  затоплений, и прочих повреждений. Вот о защите от протечек и затопления  мы сегодня и поговорим. Точнее сказать, пока только об обнаружении  протечек.
 Для обнаружения протечек будем использовать датчик воды.  Датчики воды предназначены для определения уровня воды в различных  емкостях, где недоступен визуальный контроль, с целью предупреждения  перенаполнения емкости водой через критическую отметку. Данный датчик  воды (рис. 4.12) – погружной. Чем больше погружение датчика в воду, тем  меньше сопротивление между двумя соседними проводами.
 
 
 Рис. 4.19. Датчик уровня воды.
 
 Датчик имеет три контакта для подключения к контроллеру.
 
 •    + – питание датчика;
 •    - – земля;
 •    S -  аналоговое значение.
 
 На вывод S подается аналоговое значение, которое можно передавать в  контроллер для дальнейшей обработки, анализа и принятия решений. Датчик  имеет красный светодиод, сигнализирующих о наличие поступающего на  датчик питания.
 Рассмотрим подключение датчика уровня воды к плате Arduino Mega и модулю NodeMcu ESP8266.
 
 4.4.1. Подключение датчика уровня воды к плате Arduino Mega
 
 Подключение датчика уровня воды к плате Arduino Mega мы будем  производить по аналоговому входу. Питание для датчика берем также с  платы Arduino. Схема соединений представлена на рис. 4.20.
 
 
 
 Рис. 4.20. Схема подключений датчика уровня воды к плате Arduino Mega
 
 Загрузим на плату Arduino Mega скетч получения данных с датчика уровня  воды, перевода аналогового значения в см (0 – 4) и вывода в  последовательный порт Arduino. Получение данных влажности оформим в виде  отдельной процедуры get_data_levelwater(). Содержимое скетча  представлено в листинге 4.8.
 Листинг 4.8
Одна из главных задач умного дома — заботиться о своей сохранности, не допускать взломов, пожаров, затоплений, и прочих повреждений. Вот о защите от протечек и затопления мы сегодня и поговорим. Точнее сказать, пока только об обнаружении протечек. Для обнаружения протечек будем использовать датчик воды. Датчики воды предназначены для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку. Данный датчик воды (рис. 4.12) – погружной. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Рис. 4.19. Датчик уровня воды. Датчик имеет три контакта для подключения к контроллеру. •    + – питание датчика; •    - – земля; •    S -  аналоговое значение. На вывод S подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик имеет красный светодиод, сигнализирующих о наличие поступающего на датчик питания. Рассмотрим подключение датчика уровня воды к плате Arduino Mega и модулю NodeMcu ESP8266. 4.4.1. Подключение датчика уровня воды к плате Arduino Mega Подключение датчика уровня воды к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.20. Рис. 4.20. Схема подключений датчика уровня воды к плате Arduino Mega Загрузим на плату Arduino Mega скетч получения данных с датчика уровня воды, перевода аналогового значения в см (0 – 4) и вывода в последовательный порт Arduino. Получение данных влажности оформим в виде отдельной процедуры get_data_levelwater(). Содержимое скетча представлено в листинге 4.8. Листинг 4.8

#define INTERVAL_GET_DATA 2000 // интервал измерений, мс
#define LEVELWATERPIN A9 // пин подключения контакта S
// пороговое значение протечки
#define LEVELWATER 100

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup(void) {
// запуск последовательного порта
Serial.begin(9600);
}

void loop(void) {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c датчика уровня воды
float levelwater= get_data_levelwater();
// вывод в монитор последовательного порта
Serial.print("levelwater =");Serial.println(levelwater);
if(levelwater>LEVELWATER)
Serial.println(" flood !!!");
// старт интервала отсчета
millis_int1=millis();
}
}

// получение данных с датчика уровня воды
float get_data_levelwater() {
// получение значения с аналогового вывода датчика
int avalue=analogRead(LEVELWATERPIN);
return (float) avalue;
}

Загрузим скетч на плату  Arduino Mega, откроем монитор последовательного порта и видим вывод  данных, получаемых с датчика уровня воды (рис. 4.21). При попадание воды  на датчик выводим пообщение о протекании. Подберите практическим путем  аналоговое значения для константы LEVELWATER (пороговое значение  погружения).
 
 
 
 Рис. 4.21. Вывод данных уровня затопления в монитор последовательного порта
 
 Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .
 
 4.4.2. Подключение датчика уровня воды к модулю NodeMcu ESP8266
 
 Теперь рассмотрим подключение датчика уровня воды к модулю NodeMcu ESP8266.
 
 Схема соединений представлена на рис. 4.22.
 
 Рис. 4.22. Схема подключений датчика Soil Moisture к NodeMcu ESP8266
 
 Загрузим на модуль Node Mcu скетч получения данных с датчика уровня  воды и вывода в последовательный порт Arduino.  Получение данных  влажности оформим в виде отдельной процедуры get_data_soilmoisture().  Для выбора аналогового входа мультиплексора y1 подаем на контакты D7, D8  сигнал низкого уровня LOW, а на контакт D5 – высокого уровня HIGH.  Содержимое скетча представлено в листинге 4.9.
 Листинг 4.9
Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика уровня воды (рис. 4.21). При попадание воды на датчик выводим пообщение о протекании. Подберите практическим путем аналоговое значения для константы LEVELWATER (пороговое значение погружения). Рис. 4.21. Вывод данных уровня затопления в монитор последовательного порта Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке . 4.4.2. Подключение датчика уровня воды к модулю NodeMcu ESP8266 Теперь рассмотрим подключение датчика уровня воды к модулю NodeMcu ESP8266. Схема соединений представлена на рис. 4.22. Рис. 4.22. Схема подключений датчика Soil Moisture к NodeMcu ESP8266 Загрузим на модуль Node Mcu скетч получения данных с датчика уровня воды и вывода в последовательный порт Arduino.  Получение данных влажности оформим в виде отдельной процедуры get_data_soilmoisture(). Для выбора аналогового входа мультиплексора y1 подаем на контакты D7, D8 сигнал низкого уровня LOW, а на контакт D5 – высокого уровня HIGH. Содержимое скетча представлено в листинге 4.9. Листинг 4.9

#define INTERVAL_GET_DATA 2000 // интервал измерений, мс
#define LEVELWATERPIN A0 // аналоговый пин
// пороговое значение протечки
#define LEVELWATER 100

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup(void) {
// входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15)
// как OUTPUT
pinMode(14,OUTPUT);
pinMode(13,OUTPUT);
pinMode(15,OUTPUT);
// запуск последовательного порта
Serial.begin(9600);
}

void loop(void) {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c датчика уровня воды
float levelwater= get_data_levelwater();
// вывод в монитор последовательного порта
Serial.print("levelwater =");Serial.println(levelwater);
if(levelwater>LEVELWATER)
Serial.println(" flood !!!");
// старт интервала отсчета
millis_int1=millis();
}
}

// получение данных с датчика уровня воды
float get_data_levelwater() {
// выбор входа мультиплексора CD4051 – y1 (001)
digitalWrite(14,HIGH);
digitalWrite(13,LOW);
digitalWrite(15,LOW);
// получение значения с аналогового вывода датчика
int avalue=analogRead(LEVELWATERPIN);
return (float) avalue;
}

Загрузим скетч на модуль Node  Mcu, откроем монитор последовательного порта и видим вывод данных,  получаемых с датчика уровня воды (рис. 4.23). При попадание воды на  датчик выводим пообщение о протекании. Подберите практическим путем  аналоговое значения для константы LEVELWATER (пороговое значение  погружения).
 
 
 
 Рис. 4.23. Вывод данных уровня затопления в монитор последовательного порта
Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика уровня воды (рис. 4.23). При попадание воды на датчик выводим пообщение о протекании. Подберите практическим путем аналоговое значения для константы LEVELWATER (пороговое значение погружения). Рис. 4.23. Вывод данных уровня затопления в монитор последовательного порта