本指南是代表 Arm 软件开发人员团队创建的,请在 Twitter 上关注我们:@ArmSoftwareDev和 YouTube:Arm 软件开发人员以获取更多资源!
该项目将指导您使用 LoRaWAN 通信将您的Adafruit Feather RP2040板连接到The Thing Networks 。
重点将放在基本的 LoRaWAN 通信上,其中板将定期发送其内部温度,发送到板的消息将用于控制内置 LED。
虽然本指南侧重于Adafruit Feather RP2040板,但可以使用任何配备Raspberry Pi 的 RP2040 微控制器 (MCU) 的板,例如Raspberry Pi Pico。如果您不使用本指南中使用的Adafruit LoRa Radio FeatherWing - RFM95W 900 MHz - RadioFruit ,您还需要Semtech SX1276无线电模块或分线器,例如Adafruit RFM95W LoRa 无线电收发器分线器 - 868 或 915 MHz - RadioFruit。
LoRaWAN是低功耗广域网的网络协议规范。它使用Semtech 的 LoRa (远程)无线电技术作为物理层 - 允许以低数据速率(0.3 至 50 kbps)进行远程通信(5 - 20 公里,使用正确的天线和视线)。
LoRaWAN 网络由几个组件组成:终端节点、网关/集中器、网络服务器和应用程序服务器。Thing Network - LoRaWAN Architecture页面对这些组件有很好的解释。
LoRaWAN 节点是发送和接收数据的嵌入式设备 - 我们将在本指南中专注于创建 LoRaWAN 节点。
The Things Network是一个构建开源和去中心化 LoRaWAN 网络的全球社区。
该网络由遍布全球 150 多个国家的 19k+ 个社区运行的LoRaWAN 网关组成,并被全球 142k+ 社区成员使用。
对于本指南,您需要确保物联网 (TTN) 网关在范围内,请查看TTN 地图了解网络覆盖范围。如果您所在地区没有 TTN 网关,您可以购买TTN 室内网关,用于开发和试验 TTN 和 LoRaWAN。
Adafruit Feather RP2040 板没有焊接任何接头。您需要使用烙铁将用于羽毛的短接头套件 - 12 针 + 16 针母接头焊接到板上。
接下来将公接头焊接到Adafruit LoRa Radio FeatherWing-RFM95W 900 MHz-RadioFruit以及Simple Spring Antenna - 915MHz 。有关详细信息,请参阅Radio FeatherWing 组装指南。
开箱即用的LoRa Radio FeatherWing 仅将 SPI 数据引脚连接到接头引脚。我们还需要将 Feather Wing 上的 DIO1、IRQ、CS 和 RST 连接器焊接到连接器 B、C、D 和 E(注意:这些连接很灵活,可以在软件中更改)。
将 FeatherWing 插入 Feather 板的顶部。
您首先需要使用 Raspberry Pi 的 Pico SDK 和所需的工具链来设置您的计算机。
有关详细信息,请参阅“ Raspberry Pi Pico 入门”。
该指南的第 2.1 节可用于所有操作系统,然后是操作特定部分:
确保设置了PICO_SDK环境变量。
export PICO_SDK_PATH=/path/to/pico-sdk
在终端窗口中,克隆 git 存储库并更改目录:
cd ~/
git clone --recurse-submodules https://github.com/sandeepmistry/pico-lorawan.git
cd pico-lorawan
创建一个构建目录并将目录更改为它:
mkdir build
cd build
运行cmake和make进行编译:
cmake .. -DPICO_BOARD=adafruit_feather_rp2040
make
在注册库中包含的示例之一时,我们需要一个唯一的板标识符来打印它。
使用 USB 电缆将开发板插入计算机,然后按住BOOTSEL按钮,然后点击开发板上的RESET按钮,
将examples/default_dev_eui/pico_lorawan_default_dev_eui.uf2文件复制到挂载的树莓派Pico启动ROM盘:
cp examples/default_dev_eui/pico_lorawan_default_dev_eui.uf2 /Volumes/RPI-RP2/.
使用串行监视器应用程序,例如屏幕打开查看板的 USB 串行输出,将/dev/cu.usbmodem0000000000001替换为板的路径:
screen /dev/cu.usbmodem0000000000001
将显示基于板闪存序列号的板默认 Dev EUI,在下面的屏幕截图中值为“ 4545373038056807 ”。
记下此值以供下一步使用。
Things Network 已弃用他们的 V2 堆栈,该堆栈将在 2021 年底关闭,现在向用户推荐更多 V3 堆栈。V3 现在称为“ The Things Stack Community Edition ”。本节将指导您在 V3 堆栈上设置节点。
转到The Things Stack 社区版控制台并选择您所在的地区。
接下来单击“使用 The Things ID 登录”按钮
如果您还没有 TTN 帐户,请单击注册创建一个然后登录。
登录后,单击“转到应用程序”。
如果您没有现有的应用程序,请单击“添加应用程序”按钮创建一个。
输入一个Application ID,我们在下面使用了“ feather-rp2040-app ”,然后点击“ Create application ”按钮。
单击“添加终端设备”按钮以创建新设备。
单击“手动”选项卡,因为我们正在创建的设备不在 LoRaWAN 设备存储库中。
选择“无线激活 (OTAA) ”作为激活模式,选择“ MAC V1.0.2 ”作为 LoRaWAN 版本。该字段的其余部分可以保留其默认值,然后您可以单击“开始”按钮。
接下来输入“ End device ID ”,在下面的屏幕截图中输入“ feather-rp2040 ”,为 JoinEUI 输入全 0,并使用您从开发板获得的默认 Dev EUI 值作为DevEUI字段。然后单击“网络层设置”按钮。
选择您所在地区的“频率计划”和“地区参数版本”为PHY V1.0.2 REV A ,然后单击“加入设置”按钮。
单击 AppKey 旁边的圆形箭头按钮生成 AppKey,然后单击“添加终端设备”按钮。
现在已经添加了设备,请记下 JoinEUI、DevEUI 和 AppKey 值以备后用。
打开examples/otaa_temperature_led/config.h并输入从上一节获得的信息。
US915 示例:
#define LORAWAN_REGION LORAMAC_REGION_US915
// set to NULL use the boards default Dev EUI
#define LORAWAN_DEVICE_EUI NULL
// Join EUI
#define LORAWAN_APP_EUI "0000000000000000"
#define LORAWAN_APP_KEY "00DBE0B97B52F2F01A406CC8B3830753"
// TTN specific channel mask, only needed for US915 region
#define LORAWAN_CHANNEL_MASK "FF0000000000000000020000"
EU868 示例:
#define LORAWAN_REGION LORAMAC_REGION_EU868
// set to NULL use the boards default Dev EUI
#define LORAWAN_DEVICE_EUI NULL
// Join EUI
#define LORAWAN_APP_EUI "0000000000000000"
#define LORAWAN_APP_KEY "00DBE0B97B52F2F01A406CC8B3830753"
// set to NULL for default channel mask
#define LORAWAN_CHANNEL_MASK NULL
现在使用更新的 OTAA 设置重新编译示例:
make
按住BOOTSEL按钮,然后点击板上的RESET按钮,
将examples/otaa_temperature_led/pico_lorawan_otaa_temperature_led.uf2文件复制到挂载的树莓派Pico启动ROM盘:
cp examples/otaa_temperature_led/pico_lorawan_otaa_temperature_led.uf2 /Volumes/RPI-RP2/.
使用串行监视器应用程序,例如屏幕打开查看板的 USB 串行输出,将/dev/cu.usbmodem0000000000001替换为板的路径:
screen /dev/cu.usbmodem0000000000001
如果成功,板将加入 TTN 并开始每 30 秒发送一次内部温度传感器值。
您还可以在 TTN 控制台中查看板状态。
单击“实时数据”以查看板的实时数据:
数据消息值是十六进制的,应该与串行监视器上显示的值相匹配。在上面的屏幕截图中,0x26 = 38 °C。
接下来我们可以向板子发送一条下行消息,点击“消息”选项卡。
然后“ Downlink ”,输入01作为Payload,然后点击“ Simulate uplink ”按钮。注意:如果按钮被禁用,您可以刷新页面以启用它。
一旦板子收到下行信息,它的板载 LED 就会亮起,并且串行监视器上也会显示一条信息:
LoRaWAN B 类设备在发送上行消息后,只能在特定窗口期内接收下行消息。我们加载的示例每 30 秒发送一条消息,因此您必须等待一分钟才能收到它。
您现在可以向电路板发送另一个带有 00 的下行链路消息以清除 LED。
我们已经介绍了如何使用 Raspberry Pi Pico SDK 和带有 The Things Network V3的pico-lorawan库创建基于 RP2040 的 LoRaWAN 节点。我们创建的示例应用程序每 30 秒将板子内部温度发送到 TTN,下行链路消息可以远程控制板子的 LED。
您现在可以通过以下方式构建此示例:
由于 Raspberry Pi RP2040 包含双核功能,您还可以创建更高级的项目,这些项目可以在一个核上收集和使用机器学习,同时让另一个核处理与 TTN 的 LoRaWAN 通信。
如果您使用本指南制作了一个很酷的项目,请在Hackster.io上为它创建一个项目指南,供其他人欣赏!
在世界标准时间 4 月 29 日下午 5 点举行的本周Arm 创新咖啡会议上,聆听 The Things Network 团队的更多信息,并了解该项目的实际运行情况。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !