本文介绍的是一个基于 Lora 的迷你气象站,通过 TTN 和 Cayenne LPP 测量温度、湿度、压力和风向。
使用此B-L072Z-LRWAN1板与 STM 的 Mems-Sensor Arduino Shield X-NUCLEO-IKS01A1或X-NUCLEO-IKS01A2结合使用,您可以将无线物联网与温度、压力、湿度和磁传感器等简单传感器相结合。该项目使用The Things Network和 Cayenne LPP对演示固件进行了改编,以构建 WindVane 气象站。
除了 3D 打印机、PCB 演示板和完整的工具集之外,还有一个额外的要求是一些金属结构硬件,以使其轻松旋转:一个 28/15 毫米的轴承粘在 20 厘米长的杆(M8 杆)上。
一些显示 20 公里以上范围的简单 Lora 模块测试:LinkedIn。
1.设置STM工具和固件
访问 STM 网站并下载LoraWan和STM 开放式开发环境SW4STM32(基于 Eclipse)。
安装 SW4STM32 (Eclipse) 并可选安装 LoraWan 软件 (STM32CubeExpansion_LRWAN_V1.1.0) 到一个新的工作区目录(不要更改目录结构的命名)。
从该项目下载新的 End_Node 固件,并在工作空间中添加 LoraWan 项目目录。(Zip 文件包含完整的项目目录):
《workspace》\STM32CubeExpansion_LRWAN_VANE1.1.0\Projects\Multi\Applications\LoRa\End_Node\。。.
《workspace》\STM32CubeExpansion_LRWAN_VANE2.1.0\Projects\Multi\Applications\LoRa\End_Node\。。.
启动.project文件。位置:。。\End_Node\SW4STM32\B-L072Z-LRWAN1\mlm32l07x01\.project。查看 Eclipse 中的代码
2. 获取你的 Lora-Board 的设备 EUI
B-L072Z-LRWAN1配备了 Murata 模块,其中包含 Semtech Lora Radio 和 SMT32L0 MCU。此无线电有一个唯一的设备标识符,称为 [设备 EUI]。该板出厂时配备了固件,可通过虚拟 Com 端口显示设备 EUI。因此,通过 USB 连接您的 Loraboard 并打开像 Putty 或 TeraTerminal 这样的终端(115200 波特率,8 位 1 停止位,noparity,Flowctrl XonXoff)。
如果您没有找到正确的 COM 端口,请检查系统上的设备管理器并查找 ST-link Virtual Comport。你会看到这样的东西:
复制并保存DevEui十六进制代码,您在 TTN 需要它。AppEui 和 AppKey 也将通过 TTN 获取。
3. 设置你的 TTN 应用程序和设备
前往TTN并打开或设置您的帐户。转到您的控制台并启动一个使用OTAA(无线激活)的新应用程序。TTN 将发出一个Application EUI,复制此十六进制代码。在您的应用程序中创建一个新设备。这需要上一节的 DevEui。TTN 还将生成一个名为Application Key的安全密钥,因此也复制它。它在您的设备概览中显示如下内容:
您可以点击眼睛图标使 App Key 可见。同时还可以使用 ‘《》’ 更改十六进制代码样式 - 将其复制到 C 代码中。
4. 定制你的 Lora 应用程序 C 代码:Comissioning.h
现在要使设备中的固件对 TTN 应用程序唯一,您需要调整 OTAA lora ID 的设置。转到comissioning.h包含文件,并使用上一节中的 TTN 数据更改LORAWAN_APPLICATION_EUI和LORAWAN_APPLICATION_KEY的十六进制代码。LORAWAN_DEVICE_EUI由软件读取,无需更改。
保存文件并编译整个项目。进入Debug目录,将.bin文件复制到临时驱动器(插入Lora板时ST-link会自动生成外置驱动器,将.bin文件复制到这里)。板上的 ST-link 控制器将刷写 STM32L0 MCU 并重启板子。
备注:使用 IKS01A2 版本的 Mems-shield,但这需要一些软件库适应,因为它在屏蔽上使用不同的压力传感器。从物理上讲,它适合相同的外壳/外壳。
5. Lora WindVane 应用程序运行
闪烁后B-L072Z-LRWAN1板复位并开始运行。您可以通过按下黑色重置按钮来重置电路板手册。
打开终端连接并观察控制台。固件将在开始校准时首先声明。这是用于磁传感器计算将操作值转换为正确方向角所需的最大值-最小值。校准期间,BlueLED 闪烁 10 秒。将电路板放在平坦的位置(XY 平面),然后朝南北方向转动一下,稍等片刻。10 秒后,它被校准,控制台显示 OTAA 活动并给出状态。
如果您离TTN网关足够近,则该板将加入,并且您的信息每 10 秒发送一次。这 10 秒用于测试,在实际情况下,您应该将main.c中的APP_TX_DUTYCYCLE更改为 15 分钟左右的值(值以毫秒为单位设置)。终端监视器会在屏幕上转储一些数据的计算值 - 仅用于验证目的。
如果不想看到这些数据,可以设置定义的编译器变量:VERBOSE_ENABLED 。
6. TTN 控制台 - Cayenne LPP 格式
将板子加入 TTN 网络后,你可以在 TTN 控制台中看到设备数据(数据部分)。数据以一系列字节的突发形式出现。此信息以Cayenne LPP 格式设置:[channel][type][data]。在 Main.c 中,你可以找到LoraTxData() 实现这一点的函数。
现在你可以在 TTN 中将载荷格式预设为 Cayenne LPP,TTN 会显示转换后的数据。它看起来像这样:
有效载荷被翻译成可识别的字段。
关于此应用的一些说明: 风向不是常见的 LPP 类型,因此风角通过模拟输入 5(LPP 通道 5)传递。其他信息:
Analog_in_5 是风向角(0 是北,90 东,180 南等)
Analog_in_3 是以 % 为单位的电池状态
Digital_out_6 是蓝色 LED 的状态(开/关)
gps_4是固定坐标,可以在代码中修改。
有效载荷字段的其他名称同名
备注:LPP 信道与 TTN 信道无关,用于与 TTN 网关进行上行和下行通信;可以通过 TTN-Application Channel 2: 01h 或 00h 向 Lora Board 发送下行链路信息,以打开或关闭蓝色 LED。
7. Cayenne 应用程序和控制台
要将此信息从 TTN 推送到您的Cayenne 控制台,必须将 TTN 中的“集成”设置为“Cayenne”,并在您的Cayenne项目中使用设备 EUI :
创建一个项目
选择“LoRa” -》 The Things Network -》 Cayenne LPP 作为设备:
设置项目后,您可以查看接收到的数据字段,并选择您希望以何种格式查看控制台,包括随时间变化的数据、图表、仪表等。此外,您应该可以在手机上使用卡宴应用程序。
8. 电池操作
对于电池操作,B-L072Z-LRWAN1板配备了 3xAAA 电池座。为了使电池正常工作,需要关闭板上的 ST-link 控制器并断开复位连接。通过电池供电不给 ST-link 控制器供电,但复位仍然影响 MCU 复位,因此需要断开此连接。
这可以通过移除SB37 连接来完成。不过,这不是跳线选项,因此你必须拆下非常小的零欧姆电阻(0603)。SB37 位于电路板的背面。
还需要取下SB18存根,这样电池就不会被红色电源 LED 耗尽。
9. 3D 打印外壳
共有三个 3D 打印外壳支持B-L072Z-LRWAN1 + X-NUCLEO-IKS01A1防护罩。
可以在ThingIverse上找到用于打印外壳的 STL 文件。制作了3个版本:
V1 : 前后插针连接的紧壳
V2 : 较大的外壳带有滑入式边缘,使其更紧密。
V3 :与V2相同,但进气口在前,出风口在后。
V3 可以更好地测量湿度和温度,因为在太阳直射的环境下,外壳会升温,而在冷却时,湿气可能会被锁在外壳中。
提示:最好使用 ABS 塑料或 Polymaker 的 Pc-Max 等特殊塑料进行打印。为防止连接部件(正面和背面)翘曲,最好的结果是使用筏板和支撑装置,打印鼻子向下(或底部向下):
评论
查看更多