麦斯科技 · 2021年05月03日

将你的Adafruit Feather RP2040连接到Things网络

https://www.hackster.io/sandeep-mistry/connect-your-adafruit-feather-rp2040-to-the-things-network-5c0c84

本指南将引导您使用LoRaWAN将Adafruit Feather RP2040板连接到Things Network V3。

_EzVu0dzJGR.jpg

在这个项目中使用的东西

硬件组件

微信图片_20210502223717.png

手工工具和设备

微信图片_20210502223744.png

故事

本指南是代表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。

screen_shot_2021-04-28_at_9_11_38_am_Joxz0HijMZ.png

组装硬件

Adafruit Feather RP2040板(https://www.adafruit.com/product/4884)不附带任何焊接头。你需要用烙铁把12针+16针母头的短头套件焊接到电路板上。

img_1923_PUsK2uQp59.jpg

接下来将公头焊接到Adafruit LoRa Radio FeatherWing-RFM95W 900 MHz-RadioFruit以及简单的弹簧天线-915MHz上。有关详细信息,请参阅Radio FeatherWing装配指南(https://learn.adafruit.com/radio-featherwing/assembly)。

img_1918_OuCG9dDqIs.jpg

开箱即用的LoRa无线电羽翼仅将SPI数据引脚连接到收割台引脚。我们还需要将羽毛翼上的DIO1、IRQ、CS和RST连接器焊接到连接器B、C、D和E上(注意:这些连接是灵活的,可以在软件中更改)。

svg_breadboard_adafruit_bf3056a2f0b9bed7ebde77610be41be6_2_breadboard-2-wired_KtRVcaeIqT.png

把FeatherWing 插在Feather开发板上.

img_1920_pkmeA9jSDW.jpg

设置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”。

screen_shot_2021-04-23_at_5_45_43_pm_ZtcsjsCfRx.png

在下一步中记下该值。

将设备添加到物联网

物联网已经否决了他们的V2协议栈,V2协议栈将在2021年底关闭,现在建议用户更多地使用V3协议栈。V3现在被称为“ThingsStack社区版”。本节将指导您在V3堆栈上设置节点。

转到Things Stack Community Edition控制台并选择您所在的地区。

screen_shot_2021-04-21_at_5_14_53_pm_ekREQe7r4V.png

下一步单击“Login with The Things ID”按钮

screen_shot_2021-04-21_at_5_15_45_pm_M7KPBCMYiv.png

如果您还没有TTN帐户,请单击“注册”创建一个帐户,然后登录。

screen_shot_2021-04-21_at_5_19_13_pm_nGULdM7bhF.png

登录后,单击“转到应用程序”。

screen_shot_2021-04-21_at_5_20_49_pm_Inq8HskHt9.png

如果您没有现有的应用程序,请单击“添加应用程序”按钮创建一个。

screen_shot_2021-04-21_at_5_31_15_pm_gaswWipzBi.png

输入应用程序ID,我们使用下面的“feather-rp2040-app”,然后单击“创建应用程序”按钮。

screen_shot_2021-04-21_at_5_32_37_pm_9SY0EYcztC.png

单击“添加终端设备”按钮创建新设备。

screen_shot_2021-04-21_at_5_34_11_pm_JYWy8Sg0Yc.png

单击“手动”选项卡,因为我们正在创建的设备不在LoRaWAN设备存储库中。

screen_shot_2021-04-21_at_5_34_59_pm_tcWicF65ZK.png

选择“空中激活(OTAA)”作为激活模式,选择“MAC V1.0.2”作为LoRaWAN版本。字段的其余部分可以保留默认值,然后单击“开始”按钮。

screen_shot_2021-04-23_at_5_51_13_pm_kPhiKjAmwp.png

接下来输入一个“终端设备ID”,在下面的屏幕截图中输入“feather-rp2040”,为JoinEUI输入所有0,并使用从主板获得的默认Dev EUI值作为DevEUI字段。然后单击“网络层设置”按钮。

screen_shot_2021-04-23_at_5_52_36_pm_f69ctTV2WV.png

选择您所在地区的“频率计划”和PHY V1.0.2 REV A的“地区参数版本”,然后单击“加入设置”按钮。

screen_shot_2021-04-23_at_5_54_01_pm_YlJnREGvWo.png

单击AppKey旁边的圆形箭头按钮以生成AppKey,然后单击“添加终端设备”按钮。

screen_shot_2021-04-23_at_5_54_55_pm_2egjGUBOQO.png

现在已经添加了设备,请记下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秒发送一次内部温度传感器值

screen_shot_2021-04-23_at_6_06_30_pm_TIjJVbqvic.png

您还可以在TTN控制台中看到板的状态。

screen_shot_2021-04-23_at_6_08_00_pm_ricgwdP2Ps.png

单击“实时数据”查看来自板的实时数据:

screen_shot_2021-04-23_at_6_08_59_pm_bb3W4O1bU5.png

数据消息值为十六进制,应与串行监视器上显示的值相匹配。在0x26=38上方的屏幕截图中°C。

接下来,我们可以发送一个下行消息到开发板,点击“消息”选项卡。

screen_shot_2021-04-23_at_6_11_25_pm_ltEIY7PaXn.png

然后“下行”,输入01作为有效载荷,然后单击“模拟上行”按钮。注意:如果按钮被禁用,您可以刷新页面以启用它。

screen_shot_2021-04-23_at_6_12_08_pm_ZUXmrNPRd1.png

一旦电路板接收到下行信息,其板载LED将亮起,串行监视器上也将显示一条信息:

screen_shot_2021-04-23_at_6_15_46_pm_uxhkgVTKI2.png

LoRaWAN B类设备在发送上行消息后,只能在特定的窗口期内接收下行消息。我们加载的示例每30秒发送一条消息,因此您最多需要等待一分钟才能收到它。

您现在可以发送另一个下行链路消息00到开发板清除LED。

screen_shot_2021-04-23_at_6_18_46_pm_gR75x1wvdL.png

下一步

我们已经介绍了如何使用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

微信图片_20210502231647.png

代码

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

推荐阅读
关注数
5758
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息