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

大佬带你揭开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神大作。     
wolfgang2015 回答时间:2017-9-27 12:39:17
膜拜~~~
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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