该存储库包含用于TFA 30.3161雨量计的替代电路板上运行的固件(有关更多信息,请参见页面底部的链接),该固件将设备转换为868MHz Lorawan Technology。
测量数据将在设备范围内传输到洛万门口(即使在城市地区,也可以覆盖1公里而不会出现任何问题),而功耗确实很低,因此电池可以持续多年。
提供了使用Thethingsnetwork V3和Chirpstack V4测试的JavaScript有效解码器。

除了组装的洛拉雨量计板外,还需要以下工具:
主电路板上的处理器是Arduino兼容ATMEL ATMEGA328P。因此,该项目利用了洛拉(Lora)的流行麦基(McCi Arduino LMIC)图书馆。为了简化汇编和部署,使用了平台工具链。
Lorawan实施支持OTAA和ABP。会话数据(例如会话键,框架计数器)和降雨计数器值将不时存储在SPI Fram芯片中。加入网络后以及发送每个第三个数据包后立即完成。帧比闪存的优点是写周期的数量要高得多,但是限制它们仍然是一个好主意。
启动后,设备首先进入睡眠模式。它在定义的时间间隔或按下按钮后醒来(每分钟可能一次)。如果没有有效的会话,它将尝试先加入。发送数据包时,微控制器会切换回深度睡眠,其中功耗降至仅14μA。通过使用看门狗计时器每秒从电源下降模式唤醒微控制器,可以实现深度睡眠模式的时间安排,从而减小一个计数器变量,该变量包含时间段直到下一个传输。
小费桶雨量表产生的脉冲被端口变化中断捕获。这是必要的,因为由于深度睡眠模式,微控制器外围设备的大多数组件(包括计时器/计数器)都是不活动的。中断会在短时间内唤醒控制器,以增加雨水柜台。之后,它将继续下一个深度睡眠周期。
如果连接了BMP280传感器,则在变速箱中还包括温度和气压数据。
可以通过下行链路消息更新睡眠间隔和降雨计数器。只需将FPORT 1用于间隔,而FPORT 2作为计数器值,两者都以未签名的16位整数(MSB First)发送。
该固件使用平台构建系统,该系统将自动处理所有相关的工具链和依赖关系。请在Platform.org上关注指南,以安装Platformio Core(用于控制台操作)或VS Code&Platformio(IDE)。然后克隆此存储库,然后更改为正确的目录。
只需将您的USBASP连接到板上的6针ISP连接器即可。请确保程序员设置为3.3V电压,因为RFM95W不容忍!之后,只需执行pio run -t bootloader -e m328p_isp (或用于ATMEGA328PB的-e m328pb_isp )即可编程Bootloader和Fusebits。之后,可以通过串行连接轻松编程设备。
将文件src/config.h.example复制到src/config.h。然后,请输入use_otaa或use_abp,在Lorawan服务器上创建一个新设备,并如其中所述填写config.h中的初始会话数据。您可以在文档/有效载荷decoder.js中找到所需的有效负载解码器。
配置所有内容后,将USB串行适配器连接到适当的引脚标头。然后执行pio run -t upload (为Atmega328pb的添加-e m328pb )来编程固件。
您可能需要使用命令pio device monitor检查串行控制台是否为日志消息。电源后将立即加入该网络。测量值将每15分钟传输一次。
一旦Lorawan激活完成,会话数据将存储在Fram中并在启动时恢复。包括config.h的哈希值,以检测配置更改并使当前会话无效,从而迫使设备重新激活。在插入电池时,也可以通过按下电池舱中的按钮几秒钟来强迫重新激活。
如果发送包装包,电路板上的LED将点亮。如果OTAA激活失败,它将眨眼。
https://www.maltepoeggel.de/?site=lora-raingauge
该固件根据MIT许可证的条款发布,有关详细信息,请参见许可证文件。