你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

大佬带你揭开LoRa的神秘面纱

[复制链接]
zero99 发布时间:2017-9-26 17:32
copyright by @netlhx & 今日头条



LoRa是Long Range的缩写。
Long Range通信是低功耗广域网通信的基础,常与之相提并论的还有SigFox及NB-IoT,这些都是窄带通信中常见的技术。LoRa其实不是新东西,只不过一向比较低调,不曾出现在大众的眼前。但随着荷兰KPN及韩国SK网络的布署成功,LoRa及LoRaWAN一夜之间,成为了IoT的宠儿!
LoRa的主要特性
  • 远距离,空空通信距离最大可达20公里
  • 低功耗,LoRa结点使用电池供电的话,可以高达5至10年之久
  • 低速率,传输速率较低,最高也就几百kbps


毫无疑问,这些特点,让热闹已久的IoT更是如虎添翼!
抛开底层的技术细节,怎样才能快速体验LoRa带来的便利呢?让我们一起来揭开这层神秘的面纱。
先准备必要的硬件。
现在各种LoRa模块已非常丰富了,市面上大多数模块都是基于Semtech的SX1272或1276芯片,因此无论从功能还是从使用上来说都是大同小异。这里给大家准备两块来自Dragino的LoRa产品,使用SX1276来实现LoRa调制及解调功能。
11.jpg
LoRa Shield,提供了Arduino接口,可以与Arduino组合快速访问LoRa功能。
12.jpg
Arduino UNO R3,很常见也很便宜的一块开发板,深受电子爱好者喜爱。
13.jpg
合体图,LoRa Shield与Arduino的组合
14.jpg
另一块用来实现通信的LoRa GPS Hat,与前面介绍的LoRa Shield不同的是这个上面多了个GPS模块。
软件支持方面,Semtech专门为SX1272/SX1276推出了软件支持包,一些模块厂商基于此API结合自己的设计进行了适当的修改。在Arduino平台,有两个比较有名的移植,一个是lmic,另一个是Radio Head。这里以lmic为例,lmic提供的示例代码中有一个raw文件,提供了基本的LoRa层通信API,只需要做很小的修改就可以对两块开发板进行适配。
需要修改两个地方以适配特定的开发板,第一个是raw文件本身,如下
  1. <font color="#000000">// Pin mapping
  2. const lmic_pinmap lmic_pins = {
  3. .nss = 10,
  4. .rxtx = LMIC_UNUSED_PIN,
  5. .rst = 9,
  6. .dio = {2, 6, 7},
  7. };</font>
复制代码
这里修改的片选信号、复位信号及中断信号用到的引脚,SX1276通过SPI接口与Arduino进行通信,这些接口都是统一的。
另一个需要修改的是lmic软件包中的config.h文件,主要包括两处修改:通信频段及芯片型号,修改如下
  1. <font color="#000000">#define CFG_eu868 1
  2. //#define CFG_us915 1
  3. // This is the SX1272/SX1273 radio, which is also used on the HopeRF
  4. // RFM92 boards.
  5. //#define CFG_sx1272_radio 1
  6. // This is the SX1276/SX1277/SX1278/SX1279 radio, which is also used on
  7. // the HopeRF RFM95 boards.
  8. #define CFG_sx1276_radio 1</font>
复制代码

第一行修改通信使用的频段,即ISM中的868MHz,后一个#define语句修改芯片型号。
如此修改之后,就可以将编译的代码上传到两块开发板,打开串口程序,可以看到通信的过程,如下
15.jpg
16.jpg
看到了么,两个串口终端输出的信号是一致的,就是循环收、发一条简单的信息。
Arduino为我们屏蔽了太多的细节,真实的LoRa层通信要设置的参数主要包括如下一些
  1. <font color="#000000">enum _cr_t { CR_4_5=0, CR_4_6, CR_4_7, CR_4_8 };
  2. enum _sf_t { FSK=0, SF7, SF8, SF9, SF10, SF11, SF12, SFrfu };
  3. enum _bw_t { BW125=0, BW250, BW500, BWrfu };</font>
复制代码
这些定义信息与硬件参数对应,通过写寄存器的方式来进行调整,而写寄存器操作都被封装起来了,以API的形式提供调用。
是不是很简单!
不过这还只是冰山一角!LoRa通信只是两个结点间的直接通信,要与网络连接,我们还需要进一步了解LoRaWAN的一些细节,可以把LoRaWAN看作是网络层的通信协议,而LoRa只不过是物理层中的通信!
没关系,后面我们再来聊其它的一些细节,包括LoRaWAN、网关,转发器,还有与Internet的对接!

收藏 3 评论15 发布时间:2017-9-26 17:32

举报

15个回答
Paderboy 回答时间:2017-9-26 20:02:25
赞赞赞
epochal 回答时间:2017-9-26 20:48:46
谢谢分享!
lzts 回答时间:2017-9-26 21:08:06
谢谢分享
wenyangzeng 回答时间:2017-9-26 22:02:29
谢谢分享!
creep 回答时间:2017-9-27 08:23:18
膜拜大佬!
霹雳之火 回答时间:2017-9-27 08:38:13
赞赞!!谢谢分享!
limale 回答时间:2017-9-27 08:54:10
谢谢分享
斜阳 回答时间:2017-9-27 10:19:28
n神大作。     
wolfgang 回答时间:2017-9-27 12:39:17
膜拜~~~
巅峰残狼 回答时间:2017-9-27 13:36:37
牛逼了,我的哥
kylongmu 回答时间:2017-9-27 14:13:50
还要揭露Lora部署成本高的秘密,Lora现在可以买到的1206类芯片都是Device,你可以用他们来点对点,或者自己写轮询协议多机互传(部署与程序耦合)。
标准协议分为ABC三类,但是必须配一个Lora网关,也就是13系芯片设备,成品在3000左右。
而且只能组星型网,没有zigbee、6lowPan协议的自组网与中继功能。
号称的传输距离远是伴随着速率的快速下降的。
做个低速率的监控、抄表还是不错的,能体现低频+扩谱的覆盖优势。
由于没有IP层协议,多个重叠的Lora网将严重互相干扰。

点评

朋友你知道的太多了  发表于 2017-9-27 16:43
wamcncn 回答时间:2017-9-27 19:12:33
kylongmu 发表于 2017-9-27 14:13
还要揭露Lora部署成本高的秘密,Lora现在可以买到的1206类芯片都是Device,你可以用他们来点对点,或者自己 ...

这是LoRa的优缺点吗
五哥1 回答时间:2017-9-29 00:40:44

朋友你知道的太多了,小心有人要杀人灭口呀
binqiang 回答时间:2018-3-21 18:47:51
楼主万岁

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版