Исходные коды проекта Измеритель уровня для микроконтроллеров Arduino, ESP8266, ESP32, библиотека NewPing, Ethernet2, Ethernet3, UIPEthernet: Репозиторий проекта Github
Попробуйте веб-интерфейс проекта уровнемера бесплатно на своем оборудовании - ON-LINE: HTTP - Arduino + Ethernet / ESP8266 / ESP32 HTTPS - ESP8266 / ESP32
Если вас интересуют исходные коды веб-приложения, свяжитесь с автором проекта на АНГЛИЙСКОМ языке по адресу: martinius96@gmail.com
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ультразвуковой HC-SR04 JSN-SR04T PHY Ethernet IoT WiFi OTA ULP

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



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



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



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


Проект измерителя уровня (монитор уровня воды) состоит из центрального веб-интерфейса, который служит для сбора данных с узлов датчиков и их визуализации для пользователя. Текущие данные уровня воды представлены на панели управления вместе с преобразованием в объем скважины, исторические данные уровня воды также доступны пользователю в табличной или графической визуализации с линейными графиками. Веб-интерфейс отзывчивый, его можно адаптировать под любое разрешение экрана и устройства. Веб-интерфейс проекта использует серверную часть, написанную на PHP, которая может обрабатывать входящие данные из запроса с помощью метода HTTP POST. Бэкэнд корректирует измеренный уровень до фактического на основе известной глубины колодца, рассчитывает объем воды в колодце по этому параметру и диаметру колодца. Глубина и диаметр колодца вводятся в систему пользователем на основании размеров его колодца. Данные отправляются на веб-сервер микроконтроллером, поддерживаемым технологией (Ethernet / WiFi), который выполняет измерения каждые 300 секунд - i. 5 минут. Измерение уровня воды выполняется с помощью ультразвуковых датчиков - HC-SR04 или его водонепроницаемого варианта JSN-SR04T. Также можно использовать другие датчики с триггерными / эхо-сигналами серий RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.


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

Другие типы датчиков уровня воды, которые можно интегрировать (необходимо создать собственную прошивку):
  • Лазер (LiDAR)
  • Гидростатический
  • Электростатический (емкостной / индуктивный)
  • Давление (перепад / с компенсирующим датчиком атмосферного давления)
  • Оптический
  • Механический (плавающий)
  • Магнитный (Холл)
  • Микроволновая печь (радар)
  • УЗИ - другой тип выхода (UART, RS-232, токовая петля, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Примечание. Если уровень воды пересчитывается снизу на стороне микроконтроллера, вы должны установить глубину колодца на 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 прошивка

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


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

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

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

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


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

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

    Скачать
    NewPingESP8266

    Библиотека для микроконтроллеров ESP8266 и ESP32. Он позволяет проводить измерения с помощью ультразвуковых датчиков расстояния RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Скачать
    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.

    Скачать
    UIPEthernet

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

    Скачать

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


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

    Schéma (Wiring diagram)

    Hladinomer - schéma zapojenia pre Arduino, ESP32, ESP8266 - ultrazvukový senzor vzdialenosti HC-SR04 / JSN-SR04T