基於ESP32,使用Lora傳輸對井的水位進行自動測量。

將管子固定在噴泉中,其末端低於預期水位。泵將空氣吹入管中,直到它冒出下端。然後,管中的氣壓將與強迫水柱高度成正比。該泵必須足夠強大,以達到最高預期的水位。
該原則的想法是從這個討論線程中獲取的。
可以在管中使用單向閥,以避免污垢侵入並縮短所需的抽水持續時間以延長電池壽命。然後,其放置必須確保傳感器上沒有永久性壓力,這可能會隨著時間的推移造成損害,並防止測量零壓力。該閥造成的壓力損失也必須在計算中得到補償。
泵,閥門和壓力傳感器可以從廉價的血壓監測器中取走。 ADS1115 16位ADC用於測量某些毫伏的小傳感器電壓。 ESP32 µC控制測量程序並傳輸結果。
LORA模塊:Hoperf RFM95W,SX1276兼容,螺旋天線為868 MHz
正 /後水平翻轉:


庫:TTN-ESP32確實很容易使用,並且ESP32上的時機問題應該比Arduino LMIC更少,因為它基於ESP-IDF/Freertos任務。儘管它需要ESP-IDF,但仍然可以與Arduino Libs一起使用,因為它們也基於ESP-IDF。 lib_compat_mode = off在platform.ini中使用framework arduino啟用其用法。
TTNSession完成了RTC記憶中深度睡眠的拯救和恢復。
字節0和1包含16位整數,高字節首先包含水位。字節2和3包含電池電壓,以毫伏為16位整數,高字節。如果否定,這16個整數被編碼為兩者的補充,這可能顯示為水位。
TTN有效載荷格式解碼器請參閱ttn_decoder.js。它將03 E0 0F 10解碼為
{
"batteryVolt": 3.856,
"levelMeter": 0.992
}

功耗對於電池運行至關重要。目標是每年僅訪問一次電池,而每5分鐘測量井的水平。
經過大量優化後,功耗最終由泵和閥門主導,儘管它們在每個週期中僅活躍幾秒鐘。這個主動階段已被降低到仍然可以提供可靠測量值的絕對最小值。可以通過管子中的單向閥進一步改進它,以保持空氣,但仍會釋放出傳感器的壓力。
為了優化深度睡眠電流,已經使用了EZSBC ESP32-01板,從而導致12 µA非常出色。在所有經過測試的董事會中,該董事會表現最好,請參閱ESP32-Power-fightmpting Test。為了達到這種低電流,用於測量和LORA的外圍電路是由單獨的3.3 V電壓調節器提供的,該電壓調節器可以通過軟件打開和關閉。使用常規的GPIO引腳用於SPI,其他輸出失敗了,因為在深度睡眠期間無法隔離或降低它們。這導致大量洩漏電流。但是,這對於RTC驅動的GPIO引腳是可能的。該軟件通過隔離或拉低(保持)來為它們準備深度睡眠。哪種銷的行為不容易顯而易見。
這是洛拉傳輸的一個測量週期(無連接):


電池壽命估計參見電池消費。
優化原型:

為了監視剩餘的電池電壓,使用電壓分隔器將其饋入ADC的另一個自由通道。它是在調節器之前從可切換的外圍設備電壓中供電,以避免不必要的電池耗盡。晶體管開關導致30至40 mV的電壓損耗,該電壓損耗可能(但未)在軟件中得到補償以及電阻偏差。
KICAD電路圖:
