Códigos-fonte para Arduino, ESP8266, ESP32, biblioteca NewPing: Repositório de projeto Github
Experimente o projeto do medidor de nível gratuitamente com o seu hardware: Aqui
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultrasonic HC-SR04 JSN-SR04T Sigfox

Microcontroladores de controle para o projeto de medidor de nível


Riadiaci mikrokontróler Arduino Uno pre termostat
Arduino Uno / Nano
Riadiaci mikrokontróler NodeMCU v2 / v3 Lolin - ESP8266-12E / ESP8266-12F
NodeMCU v3 Lolin
Riadiaci mikrokontróler Wemos D1 Mini - ESP8266-12E / ESP8266-12F
Wemos D1 Mini
Riadiaci mikrokontróler ESP32 Devkit V1 - ESP-WROOM-32 / ESP32-S
ESP32 DevKit V1

Módulos de tecnologia de transmissão Ethernet e Sigfox para o projeto de medidor de nível

Ethernet shield Wiznet W5100
Ethernet shield Wiznet W5100
Ethernet modul Wiznet W5500
Ethernet modul Wiznet W5500
Sigfox Wisol modem - IoT LPWAN Node 868 MHz
Sigfox Node Modem

Sensores ultrassônicos com suporte e testados para registrar o nível de água


Ultrazvukový senzor vzdialenosti HC-SR04
HC-SR04
Ultrazvukový vodotesný senzor vzdialenosti JSN-SR04T
JSN-SR04T
Ultrazvukový senzor vzdialenosti HY-SRF05
HY-SRF05
Ultrazvukový senzor vzdialenosti URM07 ovládaný cez UART
URM07

Medidor de nível - Arduino / ESP8266 / ESP32


O projeto do medidor de nível usa uma interface web para visualizar os dados medidos no nível da água no poço, tanque. A interface da web responsiva no modelo Bootstrap Bar se adapta a qualquer tela na qual os dados são visualizados. Os dados podem ser lidos em relógios, smartphones, computadores, smart TVs e outros dispositivos. A interface da web do projeto usa um back-end escrito em PHP, que processa dados de entrada suportados pelo método de solicitação POST, converte a temperatura medida para o nível real e calcula o volume do poço com base em dados conhecidos de profundidade e diâmetro do poço inseridos no sistema por o usuário. Os dados são enviados ao servidor web por um microcontrolador, que realiza medições a cada 300 segundos - i. Durante 5 minutos, ou no caso de transmissão pela rede Sigfox IoT, os dados são enviados a cada 11 minutos. A medição do nível de água é realizada usando sensores ultrassônicos - HC-SR04, ou sua variante à prova d'água JSN-SR04T, ou UART URM07 (SKU SEN0153) - disponível apenas em uma versão especial do medidor de nível de projeto. Pode medir uma distância de até 750 cm, devido ao grande ângulo de detecção, não cabe em um grande número de poços ... O princípio da medição de sensores ultrassônicos é enviar um sinal Trigger com duração de 10μs (microssegundos) e com base no tempo em que o sinal retorna ao receptor - Echo é possível calcular a distância entre o sensor e o nível. Um parâmetro importante em ambos os sensores ultrassônicos é a largura do feixe, ou seja, a característica de detecção. O sensor HC-SR04 possui uma característica de detecção de 15 °. O feixe é relativamente estreito e o sensor também é adequado para poços e tanques mais estreitos, mas não é à prova d'água e apresenta alto risco de corrosão (oxidação). O sensor JSN-SR04T à prova d'água tem uma característica de detecção de 60 a 75 °, o que não permite sua utilização em poços estreitos, pois o feixe se expande muito com a distância e um poço com diâmetro de várias unidades (6 metros em 4,5 poço profundidade) é necessária.


Princípio de operação do medidor de nível - Diagrama de blocos


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

A interface da web usa trigonometria para estimar a profundidade máxima mensurável do poço em um diâmetro de poço conhecido (outro parâmetro para calcular o volume do poço). A interface da web permite ao usuário calcular a que profundidade máxima do poço cada um dos sensores é adequado com base em suas características. O projeto é tão fácil de usar mesmo para leigos que não sabem qual sensor é mais adequado para aplicação em seu poço. O microcontrolador usado também desempenha um papel importante no sistema. O projeto utilizou a plataforma Arduino (Uno) conectada a um módulo / blindagem Ethernet da série Wiznet modelo W5100 e W5500, respectivamente, que fornecia conectividade HTTP e permitia ao microcontrolador transferir dados para uma interface web remota na Internet. Como o medidor de nível é um projeto externo, muitos usuários também gostariam da possibilidade de usar uma plataforma WiFi sem ter que puxar a conectividade Ethernet para o poço. As plataformas WiFi da Espressif Systems - ESP8266 e ESP32, utilizadas no projeto, permitem a operação em vários modos - StandBy, Deep Sleep (deep sleep com modem WiFi desligado), StandBy + OTA - permite fazer upload remotamente para a placa novo firmware diretamente da placa do ambiente Arduino IDE. A pedido, também é possível criar uma atualização remota OTA, que é distribuída remotamente via Internet a partir de um servidor web, você pode usar o repositório Github, que pode distribuir a atualização para o cliente em formato RAW .bin. Para o modo de operação Deep Sleep, há um diagrama de fiação modificado para a plataforma ESP8266, que usa um sinal que é alimentado para o RST para despertar o microcontrolador WAKE. Ao mesmo tempo, esta conexão não permite que o programa seja atualizado sem desconectar este jumper. Para ESP32, o modo Deep Sleep é usado usando um temporizador RTC, que desperta o ESP após um certo tempo. As plataformas podem se comunicar com a interface da web por meio de HTTP, mas também do protocolo HTTPS. A plataforma ESP8266 usa a impressão digital da chave pública do servidor web em formato SHA1, mas requer renovações mais frequentes, pois são válidas por no máximo um ano ou 2 anos, respectivamente. O microcontrolador da série ESP32 usa o certificado da autoridade de certificação raiz, que emitiu o certificado para o servidor web - o certificado CA ROOT no formato .pem para a conexão HTTPS. Do ponto de vista operacional, essa opção é melhor, pois o certificado da autoridade de certificação também é válido por 20 anos e não é necessária a renovação do certificado.


Para locais onde não há cobertura de Internet fixa, também é possível usar a rede IoT Sigfox, que cobre os países da Europa, América com suas emissoras. Esta tecnologia permite transmitir pequenos volumes de mensagens de até 12B de tamanho. No caso do projeto de medidor de nível, o valor do nível de água 4B é enviado. Para um projeto estendido por pluviômetro, é enviado o valor 8B, que é formado pela altura do nível da água e o incremento da precipitação. Como o Sigfox permite a transmissão de no máximo 140 mensagens por dia, o intervalo de transmissão de dados é estendido para 11 minutos. Em ambos os casos, a mensagem não contém todo o comprimento que pode, i. 12B. As mensagens de carga útil também podem ser complementadas com várias informações do sistema, por exemplo: dados GEO (longitude / latitude), RSSI (Força do sinal), número da mensagem e outros. O módulo de comunicação que foi usado para o projeto é um modem Sigfox WISOL 868MHz UART. Este modem se comunica por meio de comandos AT por meio da interface UART, que é emulada por software em microcontroladores. A comunicação assumirá a velocidade de 9600 baud / s. O modem WISOL é equipado com um conector u.FL integrado no módulo PCB para conexão da antena, o que reduz significativamente a cobertura, mesmo em ambientes internos / externos com sombra. Para uma transmissão de dados bem-sucedida, a cobertura de duas, de preferência três ou mais estações BTS é necessária para uma transmissão de dados bem-sucedida. O BTS envia as informações transmitidas para o backend do Sigfox, onde é necessário fazer um callback, que será iniciado após o recebimento dos dados. O retorno de chamada deve fazer uma solicitação HTTP ou HTTPS para o domínio onde o aplicativo da web está sendo executado com o método POST e uma carga útil codificada adequadamente que o back-end do aplicativo da web espera.

Configurando um retorno de chamada de back-end Sigfox para testar um aplicativo da web

Medidor de nível:
  • Callbacks --> Custom --> New
  • Para Custom payload config nós vamos escrever: cislo1::uint:16
  • Para URL pattern: http://arduino.clanweb.eu/studna_s_prekladom/data.php (ou outro URL do seu servidor web onde o projeto será executado), a possibilidade de usar HTTPS
  • Para HTTP metóde nós escolhemos: POST
  • Para Body vamos adicionar:
  • hodnota={customData#cislo1}
  • Do Content-Type: application/x-www-form-urlencoded

  • Visualizações da interface da web - medidor de nível


    Hlavný prehľad - Hladinomer - výška hladiny vody v studni Historický prehľad nameraných údajov s časovou značkou - Hladiomer Rekordy nameraných údajov o výške hladiny vody - MAX, MIN - Hladiomer Podporovaný hardvér pre projekt Hladinomer - Arduino - Ethernet - WiFi - ESP8266 - ESP32

    Características de detecção do sensor HC-SR04 - 15°


    Hladinomer - HC-SR04 detekčná charakteristika - ultrazvukový senzor vzdialenosti

    Características de detecção do sensor JSN-SR04T - à prova d'água - 45°


    Hladinomer - JSN-SR04T detekčná charakteristika - ultrazvukový senzor vzdialenosti