首页 > 评测 > 轻松实现远距离通信——P-NUCLEO-LRWAN1评测

轻松实现远距离通信——P-NUCLEO-LRWAN1评测

P-NUCLEO   LRWAN1   ST   LoRa   SemTech   低功耗远距通信   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • LoRa之风愈吹愈劲,ST也与SemTech合作推出了P-NUCLEO的LoRa套装、一个Discovery的LoRa板子以及一个拓展板。这次我们就先来给大家评测一下基础版的入门P-Nucleo-LRWAN1套装,一起来看看STM32+LoRa会有什么化学反应产生。

结点与网关交换信息的不同方式,又可以分为三类:

• Class A: 低功耗模式,必须实现

• Class B: 低延迟,可选实现

• Class C: 无延迟,可选实现,功耗较大

目前各种LoRa设备具体实现的方式不一,一般来说网关为了处理大量的数据连接,通常采用DC电源供电,根据结点实现的类型,定时或连续处理来自结点的信息。结点则根据实际情况,采取A/B/C类中的一种模式与网关交换信息。

LoRa网关在LoRaWAN中起着至关重要的作用,网关作为网络及结点的桥接设备,是必不可少的。只是现在对于个人用户来说,网关的费用还是太高了,如Contuit网关及相关的LoRa模块一起购买的话大约需要500美元。当然如果只是为了体验及测试,可以使用LoRa模块结合Linux系统来架设一个简单的LoRa网关。

此次的P-NUCLEO-LRWAN1评估套件提供的主要特性如下

• 超低功耗特性,由STM32 L073提供,STM32 L0系列MCU最主要的特性就是低功耗

• LoRa模块提供了高达157dB的链路预算功能,让传输距离更远

• +20 dBm,100mW的RF输出

• 低到-137dBm的灵敏度

• 接收电流(RX current)低至10mA

• 同步字(Sync word)及起始字段(Preamble)识别与检测

• 内置温度及低电池检测功能

• I-CUBE-LRWAN软件SDK支持,该SDK已通过LoRaWAN Class A认证,保证了兼容性

在上电之前,先了解一下LoRa模块与STM32开发板的硬件连接细节,在具体的代码中,特别是使用LoRa模块与Arduino连接时,这些细节都在在代码中进行相应的修改才能保证硬件正常工作

P-NUCLEO-LRWAN1-14.jpg

模块与MCU之间通过SPI连接进行通信,DIO0~DIO3通过中断来实现不同的状态检测,RESET实现硬件复位,另外模板使用的电压规格为3V3,在与Arduino连接时要注意。SX1272 mbed shield支持mbed开发,各引脚之间的对应关系如下

P-NUCLEO-LRWAN1-15.jpg

I-CUBE-LRWAN为配套的硬件提供了全套解决方案,不过只是客户端也就是结点方面的代码,我们知道,要完整的体验LoRa,需要三个方面的要素:LoRa结点,网关,及Application。结点收集信息,通过LoRa RF发送给网关,网关再转发给Application,一些CrowdSource站点如TTN、Thingspeak也提供了在线Application服务,最终的结果可以在WEB上呈现给用户。I-CUBE-LRWAN提供了LoRa底层的代码库,如下

P-NUCLEO-LRWAN1-16.jpg

代码库的组织按功能进行了分组,如Mac文件夹包含了MAC层的相关协议,Phy则提供了物理层间的相关协议。要了解LoRa详细的信息,这些w代码提供了极好的参考。另外,SDK内也包含了相关的测试例程,如下

P-NUCLEO-LRWAN1-17.jpg

其中的End_Node提供了结点的演示,需要和网关配合使用,PingPong则提供了两个结点之间的点对点通信,需要两个LoRa结点协同完成,同时需要对二者的通信参数如SF、BW等做相同的设置。

使用MDK打开PingPong工程文件,编译并将代码写入到NUCLEO开发板,在串口中可以看到如下信息

P-NUCLEO-LRWAN1-18.jpg

由于只有一块开发板,看到串口输出的都是超时信息,因为没有Peer和它通信。

ST提供的SDK比较完善,兼容LoRaWAN规范V1.0.1,实现了A类及C类协议,支持ABP及OTAA设备激活。接下来的测试工作主要专注于LoRa本身,并与网关实现简单的通信。网关设备为Dragino LG01-P,这是深圳Dragino推出的一款低价网关,提供了硬件及部分网关实现代码,用户可以在此基础上实现自己的具体应用。

P-NUCLEO-LRWAN1-19.jpg

该网关提供了网络通信及单频LoRa通信功能,网关内置一个ATMEGA328,与内置的LINUX系统进行通信。

另外为了统一代码,使用的是IBM的LMIC库来进行测试,LMIC的ARDUINO移植版本代码简单,功能也比较丰富,顺便也体验下SX1272 mbed shield与Arduino的配合使用,可谓一举两得。

ARDUINO的管脚电压为5V,为了得到3.3V的电压,使用了一个ARDUINO扩展板来实现电压转换,安装好之后的效果如下

P-NUCLEO-LRWAN1-20.jpg

中间的扩展板是Grove for Arduino,可以方便的调节5/3.3V电压,非常方便。

  • 本文系21ic原创,未经许可禁止转载!

网友评论