本指南将引导您使用LoRaWAN将Adafruit Feather RP2040板连接到Things Network V3。
在这个项目中使用的东西
硬件组件
手工工具和设备
故事
本指南是代表Arm软件开发者团队创建的,请在Twitter上关注我们:@ArmSoftwareDev和YouTube:Arm软件开发者获取更多资源!
关于
这个项目将引导你通过连接你的Adafruit Feather RP2040板到使用LoRaWAN通信的东西网络。
重点将放在基本的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是什么?
LoRaWAN是一种适用于低功耗广域网的网络协议规范。它使用Semtech的LoRa(远程)无线无线电技术作为物理层,允许在低数据速率(0.3到50kbps)下进行远程通信(5-20km,带右天线和视线)。
LoRaWAN网络由几个组件组成:终端节点、网关/集中器、网络服务器和应用服务器。Thing Network-LoRaWAN Architecture页面对这些组件有很好的解释。
LoRaWAN节点是发送和接收数据的嵌入式设备—在本指南中,我们将重点介绍如何创建LoRaWAN节点。
什么是物联网?
物联网是一个全球性的社区,建立了一个开源的、分散的LoRaWAN网络。
该网络由遍布全球150多个国家的19k+个社区运营的LoRaWAN网关组成,全世界有142k+个社区成员使用。
对于本指南,您需要确保物联网(TTN)网关在范围内,请检查TTN地图以了解网络覆盖范围。如果您所在地区没有TTN网关,您可以购买一个TTN室内网关,用于开发和试验TTN和LoRaWAN。
组装硬件
Adafruit Feather RP2040板(https://www.adafruit.com/product/4884)不附带任何焊接头。你需要用烙铁把12针+16针母头的短头套件焊接到电路板上。
接下来将公头焊接到Adafruit LoRa Radio FeatherWing-RFM95W 900 MHz-RadioFruit以及简单的弹簧天线-915MHz上。有关详细信息,请参阅Radio FeatherWing装配指南(https://learn.adafruit.com/radio-featherwing/assembly)。
开箱即用的LoRa无线电羽翼仅将SPI数据引脚连接到收割台引脚。我们还需要将羽毛翼上的DIO1、IRQ、CS和RST连接器焊接到连接器B、C、D和E上(注意:这些连接是灵活的,可以在软件中更改)。
把FeatherWing 插在Feather开发板上.
设置picosdk开发环境
您首先需要使用Raspberry Pi的Pico SDK和必需的工具链来设置您的计算机。
有关更多信息,请参阅“Raspberry Pi Pico入门”。https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf
本指南第2.1节适用于所有操作系统,后面是操作特定部分:
- Linux:第2.2节
- macOS:第9.1节
- Windows:第9.2节
获取和编译pico lorawan库及示例
确保设置了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并使其编译:
cmake .. -DPICO_BOARD=adafruit_feather_rp2040
make
获取主板默认Dev EUI
我们需要一个唯一的标识符为董事会注册时,其中一个例子包括在图书馆可以用来打印出来。
用USB电缆将电路板插入计算机,然后按住BOOTSEL按钮,然后轻触电路板上的RESET按钮,
将examples/default_dev_eui/pico_lorawan_default_dev_eui.uf2文件复制到装载的Raspberry Pi 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”。
在下一步中记下该值。
将设备添加到物联网
物联网已经否决了他们的V2协议栈,V2协议栈将在2021年底关闭,现在建议用户更多地使用V3协议栈。V3现在被称为“ThingsStack社区版”。本节将指导您在V3堆栈上设置节点。
转到Things Stack Community Edition控制台并选择您所在的地区。
下一步单击“Login with The Things ID”按钮
如果您还没有TTN帐户,请单击“注册”创建一个帐户,然后登录。
登录后,单击“转到应用程序”。
如果您没有现有的应用程序,请单击“添加应用程序”按钮创建一个。
输入应用程序ID,我们使用下面的“feather-rp2040-app”,然后单击“创建应用程序”按钮。
单击“添加终端设备”按钮创建新设备。
单击“手动”选项卡,因为我们正在创建的设备不在LoRaWAN设备存储库中。
选择“空中激活(OTAA)”作为激活模式,选择“MAC V1.0.2”作为LoRaWAN版本。字段的其余部分可以保留默认值,然后单击“开始”按钮。
接下来输入一个“终端设备ID”,在下面的屏幕截图中输入“feather-rp2040”,为JoinEUI输入所有0,并使用从主板获得的默认Dev EUI值作为DevEUI字段。然后单击“网络层设置”按钮。
选择您所在地区的“频率计划”和PHY V1.0.2 REV A的“地区参数版本”,然后单击“加入设置”按钮。
单击AppKey旁边的圆形箭头按钮以生成AppKey,然后单击“添加终端设备”按钮。
现在已经添加了设备,请记下JoinEUI、DevEUI和AppKey值,以便以后使用。
配置OTAA设置
打开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文件复制到装载的Raspberry Pi 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。
接下来,我们可以发送一个下行消息到开发板,点击“消息”选项卡。
然后“下行”,输入01作为有效载荷,然后单击“模拟上行”按钮。注意:如果按钮被禁用,您可以刷新页面以启用它。
一旦电路板接收到下行信息,其板载LED将亮起,串行监视器上也将显示一条信息:
LoRaWAN B类设备在发送上行消息后,只能在特定的窗口期内接收下行消息。我们加载的示例每30秒发送一条消息,因此您最多需要等待一分钟才能收到它。
您现在可以发送另一个下行链路消息00到开发板清除LED。
下一步
我们已经介绍了如何使用Raspberry Pi Pico SDK和Pico LoRaWAN库以及Things Network V3创建基于RP2040的LoRaWAN节点。我们创建的示例应用程序每30秒向电路板发送一次内部温度高达TTN的消息,并且下行消息可以远程控制电路板的LED。
现在,您可以在这个示例的基础上:
在上行消息中添加更多传感器值
使用来自下行链路消息的附加值来控制其他执行器
《Things Stacks集成指南》的后续内容,用于在具有HTTP web挂钩、MQTT、NODE Red、IFFT或云平台(如AWS IoT)的应用程序上处理下行链路消息。
由于Raspberry Pi RP2040包含双核功能,您还可以创建更多高级项目,在一个核心上收集和使用机器学习,同时让另一个核心处理LoRaWAN与TTN的通信。
如果您使用本指南制作了一个很酷的项目,请在Hackster.io上为它创建一个项目指南,让其他人欣赏!
从Things Network团队了解更多信息,并在本周的Arm Innovation Coffee(UTC时间4月29日下午5点)上看到此项目的实施。
https://www.youtube.com/watch?v=HiVEFmhJD7g
代码
pico-lortwan
在Raspberry Pi Pico或任何基于RP2040的板上启用LoRaWAN通信。
https://github.com/sandeepmistry/pico-lorawan
在Raspberry Pi Pico或任何基于RP2040的板上启用LoRaWAN通信。📡 — 阅读更多 https://github.com/sandeepmistry/pico-lorawan#readme