
该示例显示了如何使用AVR64DD32来创建一个洛万末端节点,该节点可以监视温度,湿度,气压压力以及土壤水分以及通过事物网络(TTN)向应用程序进行每三分钟数据进行数据传输。该节点可以放置在城市环境中洛万门口十米至五公里之间的任何位置,但该范围对于郊区的位置较宽。该设计表明,即使在远距离的端节点也可以配置为消耗非常低的电池/电池寿命,同时可以安全地移动有价值的数据。可以轻松缩放此设计,以通过在农业地块中放置其他节点来捕获土壤变异性数据,而无需添加其他网关或基础设施。
该演示使用RN2903A模块,该模块可在915 MHz频带上运行,适合我们和澳大利亚的项目,但是通过选择您所在地区的备用点击板™和网关,该项目很容易适应其他区域的工作。
将组件添加到纳米适配器板中。
将LR2单击在Mikrobus™2上,然后在Mikrobus 1上单击天气。
如图1所示,连接水分传感器导线。
最后,在(PA1)和PD1之间添加跳线,以重置LR2单击。 (PA1)默认情况下不连接(因为它已经连接到外部时钟),因此,此项目使PD1 PIN可以驱动重置信号。
| 跳线 | 别针 |
|---|---|
| VCC-水分传感器的红线 | VCC |
| GND-水分传感器的黑线 | gnd |
| AOUT-水分传感器的黄线 | PD2 |
| (PA1) - 在之间放置跳线 | PD1 |

图1。硬件设置

图2。在Mplab x中打开项目
项目打开后,首先要校准传感器。
要校准水分传感器,请打开application.c文件,然后将初始状态更改为TEST_MOISTURE 。

图3。将初始状态设置为test_moisture
后来,这些设置可以针对您的土壤和植物需求进行特定,但是从干燥空气中和一杯水中测试,从上和下界开始,以进行测量。
将传感器放置在干燥空气中。

图4。位于干空气中的传感器
通过以下设置启动数据可视化器:
波特率:9600
字符长度:8位
奇偶校验:无
停车位:1
单击“发送到终端”,然后对设备进行制作和编程。

图5。数据可视化器发送到终端

图6。制作和编程设备
程序启动后,将提示您按下按钮以生成模数转换器(ADC)读取。用传感器在干燥空气中按下几次按钮,然后将传感器放置一杯水,然后按下几次按钮。
图7显示了两个读数。收集干燥空气样品时,ADC读数接近3000。在收集水样品时,读数接近1400。

图7。干空气中的ADC值和一杯水
注意您的结果并打开application.h文件。使用您的结果替换IN_MAX和IN_MIN的定义,然后使用这些值使用显示的公式来计算转换CONVERSION_PERCENT 。

图8。土壤水分定义
只需要一个小的更改才能校准天气点击;其余的在软件中得到照顾。为了有准确的压力读数,该设备需要使用当前海拔以上的海拔高度。在bme.h文件的第24行中输入此值。

图9。天气点击的高程
接下来,设置项目的TTN侧。
如果您还没有这样做,请与TTN设置一个帐户;社区版是免费的。该帐户设置的开始是从选择区域群集开始,请单击此处以开始。
设置帐户后,导航到您的控制台,然后单击“到应用程序” 。

图10。应用程序设置
单击创建应用程序按钮,然后按照说明创建应用程序。

图11。创建应用程序
单击有效载荷格式器,然后在上行链路上。

图12。应用上行链路有效载荷格式格式
在设置格式化类型*下,选择自定义JavaScript格式化。

图13。选择自定义JavaScript格式化
用以下片段替换默认decodeUplink函数:
function decodeUplink ( input ) {
var data = { } ;
data . temp = input . bytes [ 0 ] ;
data . humidity = input . bytes [ 1 ] ;
data . moisture = input . bytes [ 2 ] ;
data . pressure = ( input . bytes [ 3 ] + 900 ) ;
return {
data : data
} ;
}图14。解码上行链路代码段
单击保存并返回概述页面。
在“应用程序概述”页面中,单击“注册结束设备”按钮。

图15。注册OTAA的终端设备
要注册设备,需要一些来自模块的详细信息。再次打开application.c文件,然后更改要注册的状态。

图16。更改要注册的状态
启动数据可视化器,然后再次构建和编程设备。程序运行后,复制HWEUI并注意Lorawan规格。

图17。数据可视化器中的最终设备详细信息
返回TTN上的“寄存器最终设备”窗口,然后手动选择Enter Enter设备详细信息。根据您的位置选择您的频率计划,然后选择Lorawan规范。在“供应信息”部分中,输入joineui字段的所有零,然后单击确认。

图18。注册新设备
粘贴您先前复制到DEVEUI字段的HWEUI,然后单击生成以生成新的AppKey。

图19。生成一个新的应用程序
现在创建了最终设备,需要具有有效负载格式化器。
设置格式化器的最快方法是使用粘贴应用程序格式化按钮。单击“有效载荷格式化”按钮,然后选择“自定义JavaScript格式化”选项,然后按粘贴应用程序格式。

图20。粘贴申请格式
在TTN上,打开End设备概述页面,有两个字段要复制并粘贴到该项目的RN2XX3标头文件中。单击DEVEUI并将其粘贴到RN2xx3.h定义中的HWEUI字段中。复制AppKey字段并将其粘贴到AppKey定义中。

图21。将DEVEUI和APPKEY复制到剪贴板

图22。更新HWEUI和APPKEY定义
此示例假设您在您附近有公共TTN网关,或者您自己设置了一个网关。如果遇到问题,拥有自己的网关对于故障排除非常有帮助。如果您想设置自己的网关,可以在:Hackster Project和Rak Developer Gateway上找到两个有用的指南。
一旦您可以访问网关,请再次打开application.c文件。

图23。更改回初始化
再次启动数据可视化器,然后重新编程设备。

图24。开始数据可视化器
当应用程序启动时,将初始化模块。按按钮开始加入TTN过程。
设置通道频率计划将需要大约十秒钟才能完成。之后,如果接受加入请求,则该设备将发送其第一个有效载荷。如果设备不连接,将提供一些建议。常见的问题太接近门户,不正确的键,或者门户可能暂时断开连接。通常,您应该看到图25中的输出。

图25。接受加入请求时输出
对于此项目,节点每三分钟发送新数据。每天一次,它将数据作为确认的有效载荷发送,就像第一次传输中一样。已确认的消息需要网络的确认,但也需要在网关上消耗通话时间,并为节点延长电池寿命。因此,接下来的479条消息每天以未经证实的消息发送。
该项目在端口10上发送了所有已确认的消息,并在端口11上发送未确认的消息。您可以在下面的图26中看到应用程序实时数据窗口,即加入并发送了初始确认的消息后,该节点随后每三分钟将未确认的消息发送到应用程序。

图26。端口10上的已确认消息和端口11上未经证实的消息
此示例显示了如何使用Mikroe LR2 Click,Mikroe Weather Click和一个土壤水分传感器使用AVR64DD32建立Lorawan端节点,以使用低功率在远距离的土壤条件下共享土壤条件。