基于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电路图:
