Примеры исходных кодов Arduino, ESP8266, ESP32 (Ethernet/WiFi/LoRaWAN): Репозиторий проекта Github
Панель управления IoT с вашим оборудованием можно попробовать здесь: HTTP IoT Dashboard HTTPS IoT Dashboard
Если вас интересуют исходные коды веб-приложения, свяжитесь с автором проекта на АНГЛИЙСКОМ языке по адресу: martinius96@gmail.com

Измерение высоты уровня воды в колодце ультразвуковым методом

Поддержка QR-сканера для визуализации данных датчиков
Дополненная реальность - веб-приложение для Android, iOS, данные панели IoT

Аппаратное обеспечение - совместимые микроконтроллеры AVR / ESP



Модули технологии передачи - Ethernet



Совместимые ультразвуковые датчики расстояния



Уровнемер - монитор уровня воды в колодце


Интернет-приборная панель для измерителя уровня воды включает в себя веб-интерфейс, который служит основой для визуализации измерений. Веб-приложение позволяет регистрировать данные о высоте уровня воды в скважине с использованием сенсорного узла - микроконтроллера. Измерение уровня воды производится с использованием ультразвуковых датчиков, таких как HC-SR04 или его водонепроницаемая версия JSN-SR04T. В текущей реализации программы также могут использоваться другие датчики с сигналами триггера/эха серий RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. Сенсорный узел регулярно выполняет 10 усредненных измерений ультразвуковым датчиком каждые 5 минут. Полученное значение передается на сервер через выбранный интерфейс (WiFi/Ethernet/IoT-сеть LoRaWAN/NB-IoT/Sigfox). Текущие данные о высоте уровня воды отображаются пользователю на приборной панели вместе с преобразованием в объем скважины и тенденцией уровня по сравнению с предыдущим измерением. Исторические данные о высоте уровня воды также доступны пользователю в табличной или графической визуализации с линейными графиками. Веб-интерфейс отзывчив и может адаптироваться к экранам смартфонов, компьютеров, планшетов и Smart TV. При получении данных бэкенд корректирует измеренный уровень воды на фактический на основе известной глубины скважины, поскольку датчик отправляет только дифференциальный уровень воды. С учетом реальной высоты уровня воды и известного диаметра скважины веб-интерфейс также может определить объем скважины в литрах.


Принцип работы ультразвуковых датчиков заключается в отправке триггерного сигнала длиной 10 мкс (микросекунд), который отражается от поверхности воды и возвращается в приемник - эхо. Метод "Time-of-Flight" используется для расчета времени между отправкой и получением сигнала с целью определения расстояния уровня воды от датчика, размещенного сверху колодца. Формула преобразования учитывает скорость звука, которая составляет 343 м/с при температуре 20 °C. Важным параметром ультразвуковых датчиков является ширина луча, или характеристика обнаружения. Например, датчик HC-SR04 обладает характеристикой обнаружения в 15°. Этот датчик имеет узкий луч, что делает его подходящим для более узких колодцев и резервуаров. Однако, он не является водонепроницаемым и имеет высокий риск коррозии в условиях влажных колодцев. По этой причине рекомендуется размещать данный ультразвуковой датчик над колодцем, чтобы уменьшить влияние влажности. Водонепроницаемый датчик JSN-SR04T, с другой стороны, обладает характеристикой обнаружения в 60°. Это существенно ограничивает его использование в узких колодцах, поскольку с увеличением расстояния луч расширяется, и необходима скважина с большим диаметром (например, диаметр скважины 6 метров, глубина 4,5 метра для гарантированного измерения без отражений). Ультразвуковые датчики не требуют регулярного обслуживания. Датчик JSN-SR04T оборудован электронной платой управления, которая защищена от воздействия влаги и воды. Максимальная измеряемая высота поверхности (уровня) варьируется от 400 до 450 см в соответствии с каталожными данными.

Другие типы датчиков регистрации уровня воды, которые можно интегрировать (необходимо для создания собственной прошивки):
  • Лазер (LiDAR) - (DFRobot DTOF LD19 LIDAR, DFRobot ToF Laser ...)
  • Гидростатические (погружные) - (LMK307, DPT200, PT20eco, HDL300...)
  • Электростатический (емкостный/индуктивный) - XKC-Y25-NPN
  • Давление (перепад/с датчиком компенсации атмосферного давления)
  • Оптический — (GP2Y0A02YK0F, YD-02F, FS-IR02 ...)
  • Механический (плавающий)
  • Магнитный (Холл) - (VCL9, Sen-Hz41wa ...)
  • Микроволновая печь (радар) - (CS476, CS475A-L, SP69, WLR 15.08.30...)
  • Ультразвуковой - (A01NYUB, URM37) или другой, вариант промышленной шины для вывода (RS-485, токовая петля 4-20 мА, Modbus RTU, M-bus, PROFINET)
  • Примечание: Если пересчет высоты уровня воды от дна производится на стороне микроконтроллера, то на веб-интерфейсе необходимо установить глубину колодца 0 см.

  • Видео демонстрация веб-интерфейса - измеритель уровня:



    Ультразвуковые датчики подходят для:


  • Выкопанные колодцы
  • Септики и выгребные ямы
  • Ручьи и озера
  • Пластиковые резервуары для дождевой воды.
  • Прочность (измерение объемного наполнения)
  • Контейнеры (мониторинг отходов, наполнение сборных контейнеров)
  • Котлы (мониторинг древесины, пеллет, угля, щепы)
  • Шахты и подвалы (контроль отопления - уровень грунтовых вод)

  • Ультразвуковые датчики не подходят для:


  • Пробуренные скважины (по детектирующим характеристикам - широкий луч)
  • Трубы и трубки (из-за характеристик обнаружения - широкий луч)
  • К скважинам с притоком (турбулентная поверхность ослабляет ультразвук, измерение невозможно / поэтапно)
  • В местах с резким изменением температуры (температура влияет на время распространения звука, поэтому кажется, что даже стационарный уровень колеблется)
  • Вакуумные баки (измерение невозможно)

  • Plug n play firmware - Ultra Low Power / StandBy


    Скомпилированная прошивка доступна для немедленной загрузки в микроконтроллер (не требует установки библиотеки).
    Название прошивки Функция прошивки ESP8266 ESP32
    Ultra Low Power

    Прошивка для приложений ULP с низким потреблением тока (см. Схему подключения). Прошивка загружается автоматически с помощью прилагаемого инструмента ESPTOOL, который запускается со скриптом .bat (в скрипте необходимо изменить COM-порт вашей платы ESP). После загрузки прошивки и предположения, что ESP не хранит SSID и пароль из предыдущего проекта, запустится WiFiManager, который используется для настройки существующей сети Wi-Fi. ESP начнет транслировать открытую сеть Wi-Fi с SSID в режиме AP --> Hladinomer_AP. После подключения клиента (Windows / Android / iOS) Captive-портал запустится на 192.168.4.1 (клиент должен быть перенаправлен автоматически). WiFiManager позволяет выбрать сеть Wi-Fi в радиусе действия в веб-интерфейсе, установить пароль. После успешного подключения ESP к указанной сети Wi-Fi и назначения IPv4 из указанного диапазона Captive Portal будет отключен, ESP останется в режиме STA-Station. Впоследствии сенсорный узел начнет передавать данные в веб-интерфейс измеритель уровня . В следующий раз, когда вы запустите сенсорный узел, Captive Portal и WiFiManager больше не запустятся, поскольку конфигурация сети Wi-Fi постоянно сохраняется. После отправки данных микроконтроллер переходит в режим глубокого сна. Главный процессор Xtens выключен в спящем режиме. ESP8266 активируется с помощью таймера WAKE (требуется перемычка между GPIO16 и RST), ESP32 с помощью таймера RTC.

    ESP8266 прошивка ESP32 прошивка
    StandBy

    Прошивка для режима ожидания микроконтроллера, который отправляет через регулярные интервалы (5 мин) измерения уровня воды на веб-сервер и в то же время поддерживает соединение с точкой доступа в сети LAN. Прошивка загружается автоматически с помощью прилагаемого инструмента ESPTOOL, который запускается со скриптом .bat (в скрипте необходимо изменить COM-порт вашей платы ESP). После загрузки прошивки и предположения, что ESP не хранит SSID и пароль из предыдущего проекта, запустится WiFiManager, который используется для настройки существующей сети Wi-Fi. ESP начнет транслировать открытую сеть Wi-Fi с SSID в режиме AP --> Hladinomer_AP. После подключения клиента (Windows / Android / iOS) Captive-портал запустится на 192.168.4.1 (клиент должен быть перенаправлен автоматически). WiFiManager позволяет выбрать сеть Wi-Fi в радиусе действия в веб-интерфейсе, установить пароль. После успешного подключения ESP к указанной сети Wi-Fi и назначения IPv4 из указанного диапазона Captive Portal будет отключен, ESP останется в режиме STA-Station. Впоследствии сенсорный узел начнет передавать данные в веб-интерфейс измеритель уровня . При следующем запуске сенсорного узла Captive Portal и WiFiManager больше не запустятся, поскольку конфигурация сети Wi-Fi постоянно сохраняется.

    ESP8266 прошивка ESP32 прошивка

    Принцип работы измерителя уровня - Блок-схема


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

    Веб-интерфейс (панель IoT) использует тригонометрию для оценки максимальной измеряемой глубины скважины при известном диаметре скважины, что является дополнительным параметром для расчета объема скважины. Это позволяет веб-интерфейсу вычислять максимальную глубину скважины для каждого из датчиков на основе их характеристик. Проект разработан с учетом простоты использования даже для непрофессионалов, которые не знают, какой датчик лучше всего подходит для их конкретной скважины. Микроконтроллер, используемый в проекте, играет также важную роль. Для этого проекта можно использовать платформу Arduino (Uno/Mega) ревизии R3 с идентичной распиновкой, которую можно подключить к Ethernet-шилду для связи через интерфейс ICSP. Можно также использовать модули Ethernet, подключая их напрямую к аппаратным контактам SPI микроконтроллера. Поддерживаются Ethernet-модули производителя Wiznet W5100, W5500, USR-ES1, а также модуль Ethernet ENC28J60 от MicroChip. Все эти модули обеспечивают соединение HTTP с веб-сервером. Также поддерживаются микроконтроллеры WiFi от Espressif Systems - ESP8266 и ESP32. У них есть несколько режимов работы, такие как StandBy, StandBy + OTA с возможностью удаленной загрузки прошивки по локальной сети, и режим глубокого сна для приложений ULP - Deep Sleep. В спящем режиме для микроконтроллера ESP8266 необходимо добавить физическую перемычку между GPIO16 (WAKE) и RST. Микроконтроллеры ESP также позволяют осуществлять зашифрованную связь с веб-сервером по протоколу HTTPS. ESP32 можно использовать с модулем PHY Ethernet LAN8720, который поддерживает соединения HTTP и HTTPS. Платформы ESP8266 и ESP32 используют сертификат корневого центра сертификации (CA), встроенный в исходный код микроконтроллеров в формате .pem и сохраненный во флэш-памяти. Сертификат удостоверяющего центра действителен от 10 до 20 лет, что устраняет необходимость частого продления сертификата. Данные о текущей высоте уровня воды и объеме воды в скважине доступны из веб-интерфейса в формате JSON. Проект уровнемера может быть интегрирован через MQTT в систему домашней автоматизации (Hassio, Domoticz, Loxone) для отображения уровня воды на приборной панели, например, Grafana. В будущем также возможно управление периферией в подсистеме (орошение, полив, включение ГВС) на основе данных об уровне воды в скважине из веб-интерфейса.

    Программные реализации для Arduino, ESP8266, ESP32 (требуется установка библиотеки): Доступно здесь

    Доступные библиотеки для микроконтроллеров (Arduino / ESP)


    Архив библиотеки (.zip) развернуть до C:/Users/[User]/Documents/Arduino/libraries
    Название библиотеки Библиотечная функция Скачать
    NewPing

    Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno / Nano / Mega. Он позволяет проводить измерения с помощью ультразвуковых датчиков расстояния US-02X, IOE-SR0X, HC-SR0X, HY-SRF0X, JSN-SR0XT, DYP-ME007.

    Скачать
    NewPingESP8266

    Библиотека для микроконтроллеров ESP8266 и ESP32. Он позволяет проводить измерения с помощью ультразвуковых датчиков расстояния US-02X, IOE-SR0X, HC-SR0X, HY-SRF0X, JSN-SR0XT, DYP-ME007.

    Скачать
    Ethernet2

    Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno / Nano / Mega. Он обеспечивает связь с модулем Ethernet от Wiznet W5200 до W5500 через интерфейс SPI.

    Скачать
    Ethernet3

    Библиотека для микроконтроллеров AVR (ATmega) Arduino Uno / Nano / Mega. Он обеспечивает связь с Ethernet-модулем Wiznet W5500 V2 - USR-ES1 через интерфейс SPI.

    Скачать

    Скриншоты веб-приложения монитора уровня воды


    Общий обзор измеренных данных в веб-интерфейсе проекта уровнемера Исторический обзор измеренных данных с отметкой времени в табличной визуализации - Измеритель уровня Тревожные представления максимального и минимального уровня воды в колодце Графическая визуализация уровня воды за сутки, 7 дней, 30 дней, год - измеритель уровня ESP32 - FreeRTOS - ESP-IDF - измерение ультразвуковым датчиком и передача данных на веб-сервер через HTTP, метод передачи POST ESP32 - FreeRTOS - ESP-IDF - измерение ультразвуковым датчиком и передача данных на веб-сервер через HTTPS, метод передачи POST Поддерживаемое оборудование для проекта измерителя уровня - Arduino - Ethernet - WiFi - ESP8266 - ESP32 Сенсорный узел ESP32 с модулем PHY Ethernet LAN7820 и ультразвуковым датчиком JSN-SR04T