如何将赛普拉斯PSoC 6 MCU接入LoRaWAN TTN
图1:物联网(loT)网络(来源:https://thethingsnetwork.org)
关于LoRa
LoRa是一种相对较新的用于远距离低功耗的无线通信技术,主要应用于物联网(IoT)领域。有关详细信息,请访问其专利持有者——Semtech公司(http://www.semtech.com)和LoRa联盟社区(http://lora-alliance.org)。
基于LoRa技术的LoRaWAN,可在全球各地布局物联网(IoT)网络(见图1)。IBM提供免费的堆栈(LMiC),网址为:https://github.com/mcci-catena/ibm-lmic/releases。TTN提供一个开源网络,网址为:https://thethingsnetwork.org。
小编今天介绍的项目就是如何将采用LoRaWAN LMiC堆栈的PSoC 6 MCU设备连接到TTN。
本文转自Hackster.io网站(点击文章末尾的“阅读原文”访问该网站相关页面),由小编编译,欢迎拍砖。
项目简介
通过Dragino LoRa RFM95W,将采用LMiC堆栈的Cypress PSoC 6 MCU设备连接到LoRaWAN TTN平台。
准备材料
硬件:
Cypress PSoC 6 (CY8CKIT-062-BLE) ×1
SeeedStudio Dragino LoRa Shield ×1
软件应用程序和在线工具:
Cypress PSoC Creator
(https://www.hackster.io/cypress/products/psoc-creator)
构建系统
One Thing(设备)是由一个PSoC 6 MCU先锋套件(CY8CKIT-062-BLE)和一个配备有LoRa射频模块(RFM95W/RF96 = SX1276)的Arduino 扩展板组成。图1展示了整个硬件配置。在PSoC Creator中导入一个现成的项目,硬件抽象层(HAL)已经过调整适用于PSoC 6 MCU,并导入了IBM LMiC v1.6的LoRaWAN堆栈。
图2:基于PSoC 6 MCU的TTN设备和TTN网关
所需硬件:
PSoC 6 CY8CKIT-062-BLE先锋套件 ×1
Dragino LoRa 扩展板(含RFM95W射频模块)×1
选配:LoRa网关,例如:LG01 ×1
Dragino LoRa扩展板具有完整的相关文档,以及专门的网页(维基网页),所有项目细节均已列出在相关页面:http://wiki.dragino.com/index.php。
在PSoC 6 MCU先锋套件中使用该扩展板,需满足以下跳线设置:
CY8CKIT-062和Dragino LoRa的跳线设置图解
(图片来源:http://wiki.dragino.com)
该扩展板采用了一个HopeRF生产的基于Semtech SX1276的RFM95W射频模块。请务必安装天线,然后小心地将Dragino LoRa扩展板安装在PSoC 6 MCU先锋套件上,如图3所示。
图3:安装有Dragino LoRa扩展板和RFM95W射频模块的CY8CKIT-062-BLE
网关
为确保接入TheThingsNetwork,必需要保证LoRa网关可访问。
你可以通过TTN网站 https://www.thethingsnetwork.org/,查询附近是否存在TTN LoRa网关。此次案例演示,因为我们没有TTN LoRa网关,所以决定买一个便宜的单通道网关(图4),然后通过搭建我们自己的网关节点连接到TTN。
图4-图片来源:
http://www.dragino.com/products/lora/item/119-lg01-s.html
LG01-S是一个单通道开源LoRa网关,它可以通过WiFi、以太网、3G/4G蜂窝网络将LoRa无线网络和一个IP网络连接起来。
详情请查阅:http://www.dragino.com/products/lora/item/119-lg01-s.html
请注意:单通道网关(如LG01)有一定的局限性。它只由一个通道并且以一种速度接收和传输数据,且不具备下行链路的功能,所以无法用于需要将信息发送回设备的场合。此外,并非所有的网络都可以允许使用单通道网关,目前TTN是可以的。所以,作为既经济又快捷的解决方案,我们决定这次使用它来进行首个LoRaWAN测试。
获取更多关于如何配置LG01以适用于TTN的详细信息,请访问Dragino网站 http://wiki.dragino.com/index.php?title=Connect_to_TTN。
软件
整个软件项目已添加到本项目的文档中。然而,所用的堆栈可能还会有更新的版本。以下列出一些已使用过的编译:
PSoC Creator v4.2 (www.cypress.com)
IBM LMiC堆栈 v1.6 (https://github.com/mcci-catena/ibm-lmic/releases
进入如下链接,获取所导入的基于Arduino的项目主程序:
https://github.com/dragino/Arduino-Profile-Examples/blob/master/libraries/Dragino/examples/LoRa/LoRaWAN/Arduino_LMIC/Arduino_LMIC.ino
为便于PSoC 6 MCU以及相应的PSoC Creator工具链采用LMiC库,需要做出一些修改,其中一个主要问题与#defines用法有关:
原始版本:
PSoC Creator:
综述在LMiC v1.6内做出的所有变动:
hal.h:
增加的
增加的
lmic.c
PSoC Creator:
lorabase.h
增加的
oslmic.h
radio.c
PSoC Creator:
最后,HAL.c/h/的执行需要使用PSoC 6 MCU外设和API。因此,该模块已经重新编写了与头文件及其功能规范相关的内容。
注意:要在PSoC Creator内完成全局定义:
See Project -> Build Settings... -> Compiler -> CM4 -> Preprocessor Definitions:
CFG_lmic_clib; CFG_eu868; CFG_DEBUG; CFG_sx1276_radio
附件的项目仍然有22条警示需要继续解决,包括未用到的变量,符号问题等,但这并不影响常规测试。
测试
由于没有公共的TTN网关,我们基于Dragino LG01-S建立了自己的单通道网关。该网关已在TheThingsNetwork 注册,且无论何时连接至网络均可以在地图上显示(图5/6)。
图 5:TTN网络地图显示的赛普拉斯网关
图 6:赛普拉斯LoRa网关详细信息
在网络控制台内,用户可增加自己的设备、随时监控该设备与TTN的连接,以及观察所接收到的数据包(上行链路)。
图7显示赛普拉斯网关处于在线连接状态,并且显示上一次在线时间仅为一分钟前。已接收信息超过200条。
图8显示了通过我们的PSoC 6设备(注册为“psoc6lora”),一个数据包已经被上传至TheThingsNetwork。并且,有效负载(PSoC6LoRa)是通过我们自己的网关接收获得,此外,还展示了更多细节方面的信息,如频率和扩展因子。
图7:赛普拉斯网关在线信息
图8:PSoC 6 LoRa设备信息
经过初步测试得出,通过LoRa通信可以顺利地连接我们自己的网关,距离为大约10厘米(参见图9)。荷兰作为领先的运行LoRa网络的国家,我们在进行客户访问期间进一步完成了一些其他的测试。 在距离酒店大约6.7公里的距离上,我们连接到另一个网关,如图9所示。该网关的详细信息见图10。
图9:在酒店和一个外部网关之间建立起PSoC MCU LoRa通讯连接
图10:网关所接收到的来自酒店的PSoC 6数据包详情
客户访问回来的途中,开车穿过荷兰的时候,PSoC 6 MCU LoRa设备在车内运行,可以连接到了A12高速公路旁边的几个网关。
图11:连接至A12高速公路上的网关
总结
集成LoRaWAN软件堆栈的PSoC 6 MCU已经成功进驻TheThingNetwork。
这个项目应该被视为一个非常基本的概念验证,主要对运行在PSoC 6 MCU上面的LMiC堆栈进行验证。
目前,我们并未涉及LoRa的所有方面,尤其是距离范围或低功耗考量。这些研究毋庸置疑将是下一步要完成的。
在荷兰已经完成了一些快速测试,连接距离可以达到7公里左右的外部网关。
由于内部仅有一个单通道网关可用,如调频或者下行链路等其他功能尚有待评估。但作为LMiC所提供的主要部分,预计可以正常运行。
该项目所需的完整的软件项目已附在此备忘录内。
下一步计划要做的是在低功耗运行方面的研究……敬请期待!
代码
PSoC Creator Project (PSoC6_RFM95_LoRaWAN_IBM_LMiCv16)C/C++
下载
https://halckemy.s3.amazonaws.com/uploads/attachments/396339/PSoC6_RFM95_LoRaWAN_IBM_LMiCv16.cyprj.zip
该PSoC Creator项目运行LMiC LoRaWAN堆栈。
看完这个项目,您是否已跃跃欲试?赛普拉斯欢迎大家将自己的创作踊跃投稿,我们将在微信上选登,选登文章作者将赢得我们的微信红包!您还在等什么?
长按下方的二维码
关注赛普拉斯最新动态