Исходные коды проекта Измеритель уровня для микроконтроллеров Arduino, ESP8266, ESP32, библиотека NewPing, Ethernet2, Ethernet3, UIPEthernet: Репозиторий проекта Github
Попробуйте проект Hladinomer бесплатно со своим оборудованием - онлайн: ЗДЕСЬ - Только протокол HTTP (бесплатный хостинг Endora.cz не поддерживает HTTPS-соединения).
Попробуйте проект Hladinomer бесплатно со своим оборудованием - онлайн: ЗДЕСЬ - HTTPS (доступно для ESP8266 и ESP32, Arduino + Ethernet не поддерживает HTTPS)
Реализация для ESP32 доступна в рамках ESP-IDF v4.2 (совместимость с 4.0), доступная с 4 июня 2021 г. с использованием FreeRTOS и задач с механизмом блокировки очереди.
Если вас интересуют исходные коды веб-приложения, свяжитесь с автором проекта на АНГЛИЙСКОМ языке по адресу: martinius96@gmail.com
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 УЗИ HC-SR04 JSN-SR04T Sigfox IoT WiFi OTA ULP

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



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



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



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


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


Принцип измерения ультразвуковых датчиков заключается в отправке триггерного сигнала длительностью 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)
  • Гидростатический
  • Электростатический (емкостной / индуктивный)
  • Давление (перепад / с компенсирующим датчиком атмосферного давления)
  • Оптический
  • Механический (плавающий)
  • Магнитный (Холл)
  • Микроволновая печь (радар)
  • Примечание. Если уровень воды пересчитывается снизу на стороне микроконтроллера, вы должны установить глубину колодца на 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 прошивка

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


    Hladinomer do žumpy, septiku, studne, princíp merania - ultrazvukový senzor vzdialenosti

    Веб-интерфейс использует тригонометрию для оценки измеряемой максимальной глубины скважины при известном диаметре скважины (еще один параметр для расчета объема скважины). Веб-интерфейс позволяет пользователю рассчитать, для какой максимальной глубины скважины подходит каждый из датчиков, исходя из его характеристик. Проект настолько прост в использовании даже для неспециалистов, которые не знают, какой датчик больше подходит для применения в их колодце. Используемый микроконтроллер также играет важную роль в системе. Для проекта можно использовать платформу 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. Он позволяет проводить измерения с помощью ультразвуковых датчиков расстояния 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.

    Скачать
    UIPEthernet

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

    Скачать

    Для сайтов, где нет фиксированного интернет-покрытия, также можно использовать сеть LPWAN IoT Sigfox, которая пока покрывает только районы крупных городов - Москвы, Екатеринбурга, Нижнего Новгорода, Самары, Казани. Также покрыта территория Малороссии в районе городов Советск и Неман (это перекрытие зоны покрытия с приграничными территориями Литвы). Ожидается, что в ближайшие годы покрытие будет значительно расширено на большинство пригородных зон. Эта технология позволяет передавать небольшие объемы сообщений размером до 12 Байт. В случае проекта измерителя уровня отправляется значение уровня воды 4B (UINT_32). Для проекта, расширенного дождемером, отправляется значение 8B, которое формируется из высоты уровня воды и увеличения количества осадков. Поскольку Sigfox позволяет передавать не более 140 сообщений в день, интервал передачи данных увеличивается до 11 минут. В обоих случаях сообщение не содержит полной полезной длины полезной нагрузки. Сообщения полезной нагрузки также могут быть дополнены различной системной информацией, например: данными GEO (долгота / широта) на основе данных из службы GPS Sigfox Atlas, RSSI (сила принятого сигнала), номер сообщения и другие. Коммуникационный модуль, который использовался в проекте, представляет собой модем Sigfox WISOL 868MHz UART LPWAN. Этот модем обменивается данными через AT-команды через интерфейс UART, который программно эмулируется на микроконтроллерах. Связь будет осуществляться со скоростью 9600 бод / с. Модем WISOL оснащен встроенным разъемом u.FL на модуле печатной платы для подключения антенны, что значительно снижает покрытие даже в помещении / в тени на открытом воздухе. Для успешной передачи данных для успешной передачи данных требуется покрытие двумя, предпочтительно тремя или более станциями BTS. BTS отправляет переданную информацию в бэкэнд Sigfox, где необходимо выполнить обратный вызов, который начнется после получения данных. Обратный вызов отправляет HTTP- или HTTPS-запрос к домену, где выполняется веб-приложение, с помощью метода POST и соответствующим образом закодированной полезной нагрузки, которую ожидает серверная часть веб-приложения.


    Покрытие сети LPWAN IoT Sigfox в России:


    Покрытие РФ сетью IoT LPWAN Sigfox - Уровнемер до скважины Покрытие Малороссии сетью IoT LPWAN Sigfox - Уровнемер до скважины

    Настройка обратного вызова Sigfox для тестирования веб-приложений

    Измеритель уровня:
  • Callbacks --> Custom --> New
  • Напишем в "Custom payload config": cislo1::uint:16
  • Напишем в "URL pattern": http://arduino.clanweb.eu/studna_s_prekladom/data.php (или другой URL-адрес вашего веб-сервера, на котором будет запущен проект), возможность использовать обратный вызов HTTPS
  • В методе HTTP выберите: POST
  • Добавим в Body (тело сообщения):
  • hodnota={customData#cislo1}&token=123456789
  • В Content-Type выбираем вариант: application/x-www-form-urlencoded

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


    Water Level Monitor webapp with automatic refresh of measurement value WaterWell Level monitor - webapp - main page - Last measured values with automatic refresh - AJAX WaterWell Level monitor - webapp - Historical measured datas with timestamp WaterWell Level monitor - Record, minimal, maximal value per day, week, month WaterWell Level monitor - graph of water level in time - week / year

    Schéma (Wiring diagram)

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