ESP32를 기반으로 LORA 전송으로 우물 수위의 자동 측정.

튜브는 분수에 고정되어 있으며 끝이 가장 낮은 예상 수위 아래로 고정되어 있습니다. 펌프는 하단에서 기포 될 때까지 튜브로 공기를 불어냅니다. 그런 다음 튜브의 공기 압력은 강제 물 컬럼 높이에 비례합니다. 펌프는 최고 수위에 충분히 강해야합니다.
이 원칙에 대한 아이디어는이 토론 스레드에서 가져옵니다.
일방 통행 밸브는 튜브에서 먼지의 침입을 피하고 배터리 수명을 연장하기 위해 필요한 펌핑 지속 시간을 단축하기 위해 튜브에 사용될 수 있습니다. 그런 다음 위치는 센서에 영구 압력이 없어야하며 시간이 지남에 따라 손상을 일으킬 수 있으며 제로 압력 측정을 방지해야합니다. 이 밸브로 인한 압력 손실은 계산에서도 보상해야합니다.
펌프, 밸브 및 압력 센서는 저렴한 혈압 모니터에서 가져올 수 있습니다. ADS1115 16 비트 ADC는 일부 밀리 볼트의 작은 센서 전압을 측정하는 데 사용됩니다. ESP32 µC는 측정 절차를 제어하고 결과를 전송합니다.
LORA 모듈 : Heherf RFM95W, SX1276 호환 및 868 MHz의 나선 안테나
전면 / 등이 수평으로 뒤집 혔습니다.


라이브러리 : TTN-ESP32는 사용하기 쉽고 Arduino LMIC보다 ESP32에서 타이밍 문제가 적습니다. ESP-IDF/Freertos 작업을 기반으로하기 때문입니다. ESP-IDF가 필요하지만 Arduino Libs와 함께 사용할 수 있습니다. 이는 ESP-IDF를 기반으로하기 때문입니다. lib_compat_mode = off platform.ini 에서 off aframework arduino 사용하여 사용합니다.
RTC 메모리에서 깊은 수면을 통해 LORA 상태를 저장하고 복원하는 것은 ttnsession에 의해 수행됩니다.
바이트 0과 1은 16 비트 정수, 높은 바이트로 밀리미터의 수위를 포함합니다. 바이트 2와 3에는 16 비트 정수, 높은 바이트로 밀리 볼트의 배터리 전압이 포함되어 있습니다. 이 16 비트 정수는 음수이면 2의 보완 물로 인코딩되며, 이는 수위에 나타날 수 있습니다.
TTN 페이로드 형식 디코더 TTN_DECODER.JS를 참조하십시오. 03 E0 0F 10 ~ 디코딩됩니다
{
"batteryVolt": 3.856,
"levelMeter": 0.992
}

전력 소비는 배터리 작동에 중요합니다. 목표는 1 년에 한 번만 배터리에 액세스 해야하는 반면 우물 레벨은 5 분마다 측정됩니다.
많은 최적화 후, 전력 소비는 마침내 펌프와 밸브에 의해 지배되지만 각 사이클에서 몇 초 동안 만 활성화되지만. 이 활성 단계는 여전히 신뢰할 수있는 측정을 전달할 수있는 절대 최소값으로 절단되었습니다. 튜브의 일방 통행 밸브로 공기를 유지하지만 센서에서 압력을 방출하면 더욱 개선 될 수 있습니다.
깊은 수면 전류를 최적화하기 위해 EZSBC ESP32-01 보드가 사용되어 12 µA가됩니다. 이 보드는 테스트 된 모든 것 중에서 가장 잘 행동했습니다. ESP32- 전력 소비 테스트를 참조하십시오. 이러한 저 전류를 달성하기 위해, 측정 및 LORA를위한 주변 회로는 소프트웨어에 의해 켜지거나 꺼질 수있는 별도의 3.3V 전압 조절기에 의해 공급됩니다. SPI에 일반 GPIO 핀을 사용하고 다른 출력이 실패했습니다. 심한 수면 중에 분리되거나 낮게 당겨 질 수 없기 때문입니다. 이로 인해 상당한 누출 전류가 발생합니다. 그러나 이것은 RTC 기반 GPIO 핀에 가능합니다. 이 소프트웨어는 분리하거나 낮게 당겨서 깊은 수면을 준비합니다 (Hold). 어떤 핀이 쉽게 명확하지 않은지 동작합니다.
이것은 LORA 전송이있는 한 측정주기 (조인없이)입니다.


배터리 수명 추정은 배터리 소비를 참조하십시오.
최적화 된 프로토 타입 :

나머지 배터리 전압을 모니터링하기 위해 전압 분배기를 사용하여 ADC의 다른 자유 채널로 공급됩니다. 불필요한 배터리 배수를 피하기 위해 조절기 이전의 전환 가능한 주변 장치 전압에서 전원을 공급합니다. 트랜지스터 스위치는 30 ~ 40mV의 전압 손실을 유발하여 소프트웨어 및 저항 편차에 보상 될 수 있지만 (는) 보상 할 수 있습니다.
Kicad 회로도 :
