产品详情
LoRa是Long Range的缩写。
Long Range通信是低功耗广域网通信的基础,LoRa无线物联网网关设备制造商常与之相提并论的还有SigFox及NB-IoT,这些都是窄带通信中常见的技术。
LoRa其实不是新东西,只不过一向比较低调,不曾出现在大众的眼前。但随着荷兰KPN及韩国SK网络的布署成功,LoRa及LoRaWAN一夜之间,成为了IoT的宠儿!
LoRa的主要特性有如下三大特点:远距离,空空通信距离最大可达20公里;低功耗,LoRa结点使用电池供电的话,可以高达5至10年之久;低速率,传输速率较低,最高也就几百kbps。
毫无疑问,LoRa无线物联网网关设备制造商这些特点,让热闹已久的IoT更是如虎添翼!
抛开底层的技术细节,怎样才能快速体验LoRa带来的便利呢?让我们一起来揭开这层神秘的面纱。
先准备必要的硬件。
现在各种LoRa模块已非常丰富了,市面上大多数模块都是基于Semtech的SX1272或1276芯片,因此无论从功能还是从使用上来说都是大同小异。这里给大家准备两块来自Dragino的LoRa产品,使用SX1276来实现LoRa调制及解调功能。
Dragino LoRa Shield,提供了Arduino接口,可以与Arduino组合快速访问LoRa功能。
Arduino UNO R3,很常见也很便宜的一块开发板,深受电子爱好者喜爱。
LoRa Shield与Arduino的组合
另一块用来实现通信的Dragino LoRa GPS Hat,与前面介绍的LoRa Shield不同的是这个上面多了个GPS模块。
软件支持方面,Semtech专门为SX1272/SX1276推出了软件支持包,粹联科技LoRa无线物联网网关设备制造商一些模块厂商基于此API结合自己的设计进行了适当的修改。
在Arduino平台,有两个比较有名的移植,一个是lmic,另一个是Radio Head。这里以lmic为例,lmic提供的示例代码中有一个raw文件,提供了基本的LoRa层通信API,只需要做很小的修改就可以对两块开发板进行适配。
需要修改两个地方以适配特定的开发板,第一个是raw文件本身,如下:
// Pin mapping
const lmic_pinmap lmic_pins = {
.nss = 10,
.rxtx = LMIC_UNUSED_PIN,
.rst = 9,
.dio = {2, 6, 7},
};
这里修改的片选信号、复位信号及中断信号用到的引脚,SX1276通过SPI接口与Arduino进行通信,这些接口都是统一的。
另一个需要修改的是lmic软件包中的config.h文件,主要包括两处修改:通信频段及芯片型号,修改如下:
#define CFG_eu868 1
//#define CFG_us915 1
// This is the SX1272/SX1273 radio, which is also used on the HopeRF
// RFM92 boards.
//#define CFG_sx1272_radio 1
// This is the SX1276/SX1277/SX1278/SX1279 radio, which is also used on
// the HopeRF RFM95 boards.
#define CFG_sx1276_radio 1
第一行修改通信使用的频段,即ISM中的868MHz,后一个#define语句修改芯片型号。
如此修改之后,LoRa无线物联网网关设备制造商就可以将编译的代码上传到两块开发板,打开串口程序,可以看到通信的过程,如下
看到了么,两个串口终端输出的信号是一致的,就是循环收、发一条简单的信息。
Arduino为我们屏蔽了太多的细节,真实的LoRa层通信要设置的参数主要包括如下一些:
enum _cr_t { CR_4_5=0, CR_4_6, CR_4_7, CR_4_8 };
enum _sf_t { FSK=0, SF7, SF8, SF9, SF10, SF11, SF12, SFrfu };
enum _bw_t { BW125=0, BW250, BW500, BWrfu };
这些定义信息与硬件参数对应,通过写寄存器的方式来进行调整,而写寄存器操作都被封装起来了,以API的形式提供调用。
是不是很简单!
不过这还只是冰山一角!
LoRa通信只是两个结点间的直接通信,要与网络连接,我们还需要进一步了解LoRaWAN的一些细节,LoRa无线物联网网关设备制造商可以把LoRaWAN看作是网络层的通信协议,而LoRa只不过是物理层中的通信!