创建你自己的私有 LoRa 网络

有大量关于 LoR的讨论,低功耗、广域网保证了几公里范围内的通信,因此非常适合网联网通信。电信运营商正在推出 LoRa 网络,由于 LoRa 在开放的频谱范围内运行,你还可以设置自己的网络。本文讨论了构建私有 LoRa 网络,以及如何使用网络将数据从 ARM mbed 终端节点发送到云端。关于 LoRa 与 LoRaWAN 的注意事项:从技术上讲,在本文中我们正在构建一个 LoRaWAN 网络。...了解详情

干货分享:信锐LoRa方案在P2北京e世界店的测试记录

作者:老韩格物资讯之前分享了信锐LoRa方案在3W北京中关村店的测试记录,可以看到在合理部署LoRa网关的前提下,一个网关信号就能完整覆盖三层楼共1200平的空间。不过无线信号的传播受空间结构的影响是非常大的,于是我们把产品拿到P2北京e世界店做了第二次测试。之所以选择P2北京e世界店,是因为这是个单层4000平的环境,信号穿透到楼上楼下都没有任何意义;其次,它的位置在大厦的B2层,空间内有着大量管道和超厚的实墙,这给无线信号的传播带来很大挑战。我们像上次一样,还是选择我们认为最极端的位置以及最合理的位置进行两次测试。在极端挑战中,我们将LoRa网关放置在平面图中A点位置,此时LoRa排插只能在B、I、J三个测试点成功上线,完成功能测试(断电/通电切换)。这个结果在预期之内,不过被寄予厚望的G、C两点没有成功接入,还是令人略感失望。考虑到环境的复杂性(实际环境比平面图多了软装和人),这个结果可以接受。在只有一个LoRa网关的前提下,我们认为P2北京e世界店的最合理布放位置就是B点。从平面图上看这里基本在最中央,是能把全向天线覆盖范围最大化的位置。实际环境中这里是个集装箱改造的小屋,我们最终找到一个很特别的布放方式,既利于测试又不影响他人办公。果然LoRa网关在合适的位置发挥了它的威力,实测结果是除E、H两点外,排插在其它所有测试点都能通过测试。这是超越预期的表现,原本我们预测C、D两点可能会接入失败,毕竟从网关到测试点要穿越两堵实墙,但最终一点问题都没有。而E、H两点始终无法成功接入,证明当墙体够厚、数量够多以及穿越电梯间时,LoRa信号依然会有迅速衰减。不要盲目认为媒体所说的LoRa能打十几公里或者穿几层楼板是常态,那都是理想情况+纸上谈兵,最终覆盖效果依然取决于场景复杂度。当然这里还存在一个网关信号发射功率的问题,后面我们单独讨论。大概测试过程就是这样,下面请大家做一道很重要的选择题:在P2北京e世界店,各位认为布放多少个LoRa网关比较合理?了解详情

博立信(Polysense)发布全国首个大学和研究机构物联网套件项目计划

2017年7月28日,博立信(Polysense)科技公司今天宣布推出首个针对全国大学和科研机构的物联网LoRa套件项目计划。 “LoRa通讯和传感大学物联网项目计划”将为大学生和科研人员了解和使用最先进的通信和传感技术提供必要的工具和教育学习的机会。 其开创性计划将着重于使用LoRaWAN™的低功耗广域网(LPWAN)通信协议。 LPWAN是一种专为万物互联所设计的,采用低功耗、长距离、低速率通...了解详情

干货分享:信锐Lora物联方案在3W北京中关村店的测试记录

作者:老韩格物资讯物联网现在已经被吹上了天,它到底能不能落地,以及适合在哪落地,很多人其实根本不知道。格物资讯认为,对于物联网市场中需求导向的部分,“物联网+空间管理”是短期比较明显的热点。所以当得知信锐已经提前规划开发了一套产品方案,我们在第一时间抢来一个网关和两个排插进行评估。为什么测信锐的产品方案格物资讯长期关注中小“互联网+”场景的IT需求发展,在我们的客户样本库中,其实已经有一部分业务比较超前的企业部署了物联网方案,承载着关键应用。而在针对于此的吐槽中,最大的不满往往是业务可用性不高,透过现象看本质,其实是管道的不可靠。甚至有管理者这么说过:智能终端或者APP这种接触最终用户的东西,一定得搞互联网的来搞,他们能把体验玩出花来;IoT平台、核心组网,这些东西还是得靠传统数通厂商。精辟!这样的客户绝对是活明白了,他从血的教训中明白了互联网的产品开发套路搞设备是行不通的,试错成本没白交!在《小米智能插座是怎样对WiFi发起慢性DDoS的》这篇文章里我们写过这样一句话:“其实市场上大量智能家居设备对WiFi的友好性还不如小米智能插线板。原因很简单,他们团队里大多就没有懂802.11的人。” 在格物资讯看来,现在大量号称能提供物联网空间管理方案的企业也存在一样的问题,眼瞅着Lora要替代ZigBee了没错,但请问你们真有能力搞Lora么?或者说,有几个团队能养精通Lora、做出高品质回传设备的人?于是我们和越来越多的客户一直在等待传统数通厂商推自己的IoT平台+组网方案,去年国内WLAN市场份额前五的厂商(依次新华三、锐捷、华为、信锐、思科,from IDC)中,目前只看到信锐在空间管理领域准备推出方案,所以除了信锐没得选。特别提示,因为研发阶段的产品未知且不可控的因素太多,我们决定站在最终客户角度去做黑盒应用测试,去验证一些自己感兴趣的问题,同时把遇到的问题反馈给信锐。这套方案本身仍处于开发阶段,还在不停迭代更新,所以测试结果仅代表目前我们手里的版本。一个网关带一个店是怎样的体验和很多对Lora存在期待的客户一样,我们最最关心的当然是Lora的信号覆盖能力。所以简单熟悉了信锐这套产品后,马上拿到真实场景进行测试。第一个测试环境是3W咖啡北京中关村店,这是个1200多平的三层小楼,其中1、2两层是咖啡区域,3层是办公空间。平面图如下。图纸很规整,有WiFi项目经验的人都能看出位于2层的C点是放置Lora网关的最优之选;而位于3层机房内的A点则是放置Lora网关最不合理的选择,和E、F有着最远的店内直线距离,信号要跨越两层楼板和无数道承重墙。梦想总是要有的,所以肯定要先把网关放在A点了……测试结果是排插放在E和F连不到网关,其它地方都没问题。不过在F点,如果把排插拿到高一些空旷一些的位置,就能顺利建立连接并且正常远程控制,可见这里是信号边缘。而当把网关放在C点时,排插在其他所有测试点都正常连接、正常工作。总体说来,我们对测试结果还是感到比较意外的。可以确定当规划部署比较合理且带机量不成为瓶颈的前提下,一个信锐的Lora网关就可以覆盖3W北京中关村店完整三层楼1200多平的面积,这就是满分,比通常ZigBee的方案完美了不知道多少倍。这次测试结果也令人更加坚信,Lora才是真正适合承载空间管理业务的最佳管道。之前不管WiFi、蓝牙还是ZigBee,在实际场景中技术优势都会缩小、技术缺陷都会被放大,整体效果可能是负的;直到Lora出现,才让客户真正能充分感受到技术进步带来的红利。先写这么多,还有其它场景的测试数据以及感受、问题、分析,后面慢慢发。了解详情

共享单车上的智能锁,做出来有多难?

共享单车作为现阶段的资本风口,媒体对共享单车的兴趣和报道渐渐多了起来,有关注的同学可能早早就看过这些文章是这样介绍单车上的智能锁的,“技术实现手段也不难:在电动车锁里加上传感器、GPS、3G网络和芯片……”,事实上真的像众多报道中所描述的如此“简单”吗?单车联网的核心必是智能锁在探讨共享单车上智能锁要怎样做出来前,我们应该先弄明白:共享单车是否非要智能锁不可?在如今市场出现的“百车大战”中,OFO...了解详情

完整的LoRa体验,有这一套就够了!——LoRa IoT Kit体验

[导读]如果想要完整的LoRa体验,至少需要一个LoRa网关和一个LoRa节点。而除了这两者必须部件之外,Dragino的套件中还提供了更多惊喜。所以想要完整的LoRa体验究竟要花多少银子?这或许是很多LoRa入门开发者最关心的问题。我们认为Dragino在这一方面做的不错。不经意间,IoT的热门话题似乎已转到了NB-IoT及LoRa之间。这中间自然免不了争论:谁才是IoT远距通信技术的皇太子?这...了解详情

STM32 Nucleo Pack LoRa技术入门 – 十分钟搭建一个完整的LoRa节点

LoRa技术备受热捧,给低功耗物联网应用带来了很大的发展和创新的空间。ST也与Semtech公司合作推出了LoRa解决方案。在现阶段,为使开发者快速地体验和开发基于LoRa的技术,ST公司在其现有产品的基础上,搭建起了一套LoRa网络系统。这些硬件和软件有:P-NUCLEO-LRWAN1开发板、I-CUBE-LRWAN中间件和X-NUCLEO-IKS01A1扩展板。使用这些板子和软件就可以非常容易地创建和配置一个LoRaWAN™的节点。另外,ST还提供了各种产品的NUCLEO开发板和扩展板,可以方便定制各种节点的扩展功能,创建各种可能的产品原型组合。在本文所附的视频中,生动地展示了如何使用这些工具快速搭建一个基于STM32的LoRaWAN™节点。下面将视频中的部分内容,摘录文字如下:LoRa要点LoRa是一种无线技术,用于创建M2M和物联网应用所需要的低功耗广域网(LPWAN)。低功耗(10-20年电池寿命)、低成本(非常低的基础设施投资)、安全性(AES128加密)长距离(1-10公里)标准化(由主要的行业执行者联盟推动)跟踪( 免费跟踪)STM32和LoRa 10分钟1. 准备– P-NUCLEO-LRWAN1NUCLEO-L073RZ开发板SX1272MB2DAS扩展板天线USB连接线P-NUCLEO-LRWAN1 官方主页:http://www.st.com/content/st_com/en/products/wireless-connectivity/lorawan/p-nucleo-lrwan1.html– 计算机KEIL IDEI-CUBE-LRWAN LoRaWAN软件扩展包串口客户端(TeraTerm 或 PuTTY)浏览器– 网关选择基于LoRaWAN的网关,频率可根据地区选择,不同厂家的网关配置不同。本文选择了MULTITECH的“MultiConnect Conduit”网关2. STM32和LoRa板子安装– 确认JP1、JP6跳线短接,JP5设置为EV5– 将SX1271MB2DAS LoRa扩展板插到STM32 Nucleo板子上– 将天线接到LoRa扩展板上3. 安装LoRaWAN软件包– 下载并安装LoRaWAN软件包(可到www.st.com搜索LoRaWAN)– 下载 I-CUBE-LRWANI-CUBE-LRWAN官方主页地址:http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-software/i-cube-lrwan.html默认可保持到 “C:\Users\yournam\STM32Cube\Repository\”4. 软件开发– 找到I-CUBE-LRWAN安装包,在下面的应用工程:..\STM32CubeExpansion_LRWAN_V1.0.1\Project\Multi\Applications\LoRa\classA\MDK-ARM\STM32L073RZ-Nucleo\Lora.uvprojx– 打开KEIL工程文件,选择sx1272mb2das目标模块– 在”hw_conf.h”文件中,去掉注释“DEBUG”和”TRACE”.– 在”comissoning.h”文件中,更改EUI设备,在96行。{0x0BE,0x7A,0x00,0x00,0x00,0x00,0x00,0xC8}– 在“main.c”文件中,在249行,设置产生一个测试消息。AppData->BuffSize=sprintf((char*)AppData->Buff,”-Hello world. STM32 is LoRaWAN connected”);– 编译并下载工程到目标设备。– 使用TeraTerm从Nucleo板子上获取UART数据。* 选择串口”Serial”,Port: COM8:STMicroelectronics STLink Virtual COM Port (COM8)* Setup> Terminal…> “New line->Receive: “AUTO”* Setup> Serial port..>Baud rate: 921****00;Data: 7bit5. 网关设置和连接给网关上电,确认用以太网线连接到电脑。打开浏览器,连接网关的默认地址是:192.168.2.1Username: adminPassword: admin选择 Setup>LoRa Network Server, 设置:–Mode:Network Server– Network ID: EUI– EUI: 01-01-01-01-01-01-01-01– Network Key: Key– Key: 0x2B,0X7E, 0x15,0x16,0x28,0xAE,0xD2,0xA6,0xAB,0xF7,0x15,0x88,0x09,0xCF,0x4F,0x3C选择Status & Logs >Statistics>LoRa,检查节点是否连接到网关。如果Nucleo+LoRa设备都打开了,”Refresh Node List”, EUI地址会显示。结果:总结现在你可以做:– 创建自己的基于STM32的LoRa传感器节点– 设置Multi-conduit网关作为一个网关和网络服务器– 建立自己私有的基于STM32的LoRa网络ST的LoRa官方主页:www.st.com/stm32-lrwan了解详情

LoRa Gateway 源码工程梳理

本文作者twowinter,转载请注明作者http://blog.csdn.net/iotisan/1.核心库:libloragw这个目录包含了编译一个多通道基站库所需的源码。编译之后就会生成固定链接的libloragw.a。lora_gateway\libloragw\tst目录下还有不同子模块的测试程序。1.1 HAL介绍这部分也就是LoRa集中器的HAL层(LoRa concentrator Hardware Abstraction Layer),它是个C库,让大家使用少量的C函数就可以对LoRa集中器芯片进行配置硬件,以及收发数据包。LoRa集中器是数字化的多信道多数据包标准的射频芯片,使用LoRa或者FSK模式进行收发数据。1.2 HAL的组成这个库是由6(8)个模块组成:loragw_hal主模块,包含高等级函数来配置和使用集中器loragw_reg这个模块用来操作集中器的寄存器loragw_spi通过SPI接口来操作集中器的寄存器loragw_aux包含一个主机需要的wait_ms函数,用于指定ms的延时loragw_gps通过基准时基来同步集中器内部计数,例如例程中的GPS授时。loragw_radio配置 SX125x 和 SX127x。loragw_fpga (only for SX1301AP2 ref design)SX1301AP2参考设计才需要,用于操作FPGA的寄存器,以及配置FPGA功能。loragw_lbt (only for SX1301AP2 ref design)SX1301AP2参考设计才需要,用于配置和使用LBT功能。1.3 软件编译1.3.1 软件细节这个库按照ANSI C99进行编写。loragw_aux模块中的ms精确延时含有POSIX格式函数,嵌入式平台可以用硬件定时器进行重写。1.3.2 编译选项library.cfg 中 DEBUG_xxx 如果置为1,则会用 fprintf 输出对应的调试信息。1.3.3 编译流程对于交叉编译,需要设置 Makefile 中的 ARCH 和 CROSS_COMPILE 变量,或者在 shell 环境中,使用正确的工具链名字和路径。例如:export PATH=/home/foo/rpi-toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-libloragw目录下的Makefile会解析 library.cfg 文件,产生一个config.h的C头文件,包含 #define 选项。那些选项会使能或禁用loragw_xxx.h 文件和 *.c 原文件中的代码。library.cfg 也用来直接选择动态链接库。1.3.4 导出如果想在其他系统使用编译后的库,你需要导出这些文件:libloragw/library.cfg -> 根配置文件libloragw/libloragw.a -> 静态库libloragw/readme.md -> license要求libloragw/inc/config.h -> 从 library.cfg 衍生出的C配置标志libloragw/inc/loragw_*.h -> 你需要用到的头文件 (例如. _hal and _gps)在这个库链接到你的应用之后,只有 license 文件要求在程序文件中拷贝和保留。1.4 硬件条件1.4.1 硬件版本loragw_reg 和 loragw_hal 是针对Semtech硬件编写的特殊版本:Semtech SX1301 芯片Semtech SX1257 or SX1255 收发器如果硬件版本和库版本不匹配的话,这个库将无法使用。你可以用 test_loragw_reg 来测试软硬件是否匹配。1.4.2 SPI通信loragw_spi 的SPI函数适合平台相关的,如果你用别的SPI接口可能需要重写这个函数:SPI master matched to the Linux SPI device driver (provided)SPI over USB using FTDI components (not provided)native SPI using a microcontroller peripheral (not provided)你可以用 test_loragw_spi 来测试SPI通信。1.4.3 GPS接收为了使用库中的GPS模块,主机必须要通过串口连接GPS接收器,串口连接必须以“tty”设备出现在 /dev/ 目录,启用这个程序的用户必须用读写这个设备的权限。使用 chmod a+rw 来允许所有用户能操作指定的tty设备,或者使用sudo来运行你的程序(例如. sudo ./test_loragw_gps)。当前版本,库只从串口读取数据,在GPS接收器上电后会收到他们发出NMEA帧 以及 u-blox 模块私有的 UBX 消息。GPS接收器必须在发出PPS脉冲后发出UBX消息,让内部集中器的时间戳可以用GPS时基校准。如果GPS接收器发出了GGA NMEA语句,gateway则可以进行3D定位。1.5 使用1.5.1 设置软件环境对一个典型应用,你需要这么做:源码中包含 loragw_hal.h编译时链接 libloragw.a 静态库文件由于 loragw_aux 的依赖关系,需要链接 librt 库如果应用需要直接访问集中器配置寄存器的话(例如做些高级配置),你还需要这样做:源码中包含 loragw_reg.h1.5.2 使用软件API要在你的应用中使用 HAL,需要遵守如下规则:在射频启动之前需要配置好 radios path 和 IF+modem path只有在调用了 start 函数之后,配置才会传送给硬件只有在 radio 使能,同时IF+modem 使能,以及集中器启动后,才能接收数据包。只有在 radio 使能,以及集中器启动后,才能发送数据包。改变配置之前,必须停止集中器。一个对HAL的典型应用流程图如下:<configure the radios and IF+modems><start the LoRa concentrator>loop {<fetch packets that were received by the concentrator><process, store and/or forward received packets><send packets through the concentrator>}<stop the concentrator>/!\ 注意,lgw_send 在LoRa集中器仍然发包时,或者即使在准备开始发包时,是非阻塞立即返回。当有数据包在发送时,将无法收到任何数据。你的应用需要考虑发包的时长,或者在尝试发包前检查下状态(使用 lgw_status)。当前一包未完成时立即发一包,会导致前一包无法发送,或者发送部分(会导致接收端出现CRC错误)。1.5.3 调试模式为了调试程序,可以激活调试信息后( 在 library.cfg 中设置 DEBUG_HAL=1 ),编译 loragw_hal 函数。这样就会输出很多细节信息,包括stderr的错误细节信息。2.帮助程序工程中的这些程序提供了一些示例,应该如何使用HAL库。帮助系统构建者单独测试不同部分。2.1. util_pkt_loggerThis software is used to set up a LoRa concentrator using a JSON configurationfile and then record all the packets received in a log file, indefinitely, untilthe user stops the application.这个软件用来让LoRa集中器使用JSON配置文件,以及记录所有的包于一个log文件,除非用户停止这个应用。2.2. util_spi_stressThis software is used to check the reliability of the link between the hostplatform (on which the program is run) and the LoRa concentrator register filethat is the interface through which all interaction with the LoRa concentratorhappens.这个软件用来检测主CPU与LoRa协调器寄存器文件的连接的稳定性。2.3. util_tx_testThis software is used to send test packets with a LoRa concentrator. The packetscontain little information, on no protocol (ie. MAC address) information butcan be used to assess the functionality of a gateway downlink using othergateways as receivers.这个软件用来做发包测试。包里没有协议信息,但可以用来检测基站下行功能,使用另一台基站来做接收。2.4. util_tx_continuousThis software is used to set LoRa concentrator in Tx continuous mode,for spectral measurement.这个软件用来设置LoRa集中器为持续TX模式,用于频谱测试。2.5. util_spectral_scanThis software is used to scan the spectral band in background, where the LoRa这个软件用来扫描基站工作环境的频段。2.6. util_lbt_testThis software is used to test "Listen-Before-Talk" channels timestamps.这个软件用来测试“Listen-Before-Talk”的信道时间戳。3. 帮助脚本3.1. reset_lgw.shThis script must be launched on IoT Start Kit platform to reset concentratorchip through GPIO, before starting any application using the concentrator.这个脚本仅在 IoT Start Kit 平台上运行,用于在启动任何应用前,通过GPIO复位集中器芯片。End了解详情

浅谈LoRa及在无线抄表中的设计思路和应用举例

大多数厂家对LoRa的理解或印象仅仅停留在普遍被宣传的距离远,抗干扰,低功耗,如被洗脑一般,更有甚者,过度神话LoRa,简直无所不能的能解决一切问题,极其容易被忽悠掉坑里,我想应该先吐糟一下。某些厂家使用或者测试LoRa,往往过于肤浅,只关注LoRa能传多远距离、穿几层楼层,甚至在对比不同厂家产品的时候都只以距离为唯一的评判标准,其实LoRa芯片只来源于美国SEMTECH,各家拿到的是一样的芯片S...了解详情

DIY自制低成本LoRa网关(英文:A DIY low-cost LoRa gateway)

1. IntroductioThis page describes our low-cosLoRagateway based on a Raspberry PI. The gateway can receive from any LoRa device and is designed to be fully customizable for a targeted application with post-processing features based on high-level languages such as python. Typical post-processing features are to push the received data on various IoT/cloud platforms. Currently, we provide example for DropBoxTM, FirebaseTM, ThingSpeakTM, SensorCloudTM, GroveStreamsTM, FIWARE.The work presented here is part of the EU H2020 WAZIUP project (grant agreement number 687607, 2016-2019) which objective is to develop low-cost IoT solutions for deployment in sub-saharian African countries. Various applications are considered: water quality monitoring, cattle rustling, logistics and goods transportation. More details will come soon, but right now you can get the presentation of the developped gateway in.pdf.There are many advanced and well-integrated LoRa gateways capable of simultaneous reception on several channels and implementing the LoRaWAN specification (see slides). These gateways are based on the SX1301 baseband concentrator. Our LoRa gateway could be qualified as “single connection” as it uses the SX1272, much like an end-device would do. However, in order to increase LoRa transmission robutsness we improve the LoRa transmission with CSMA features (or so-called Listen Before Talk) and add Quality of Service guarantees with regards to radio time limitations. This solution keeps the cost of the gateway low and can satisfy small to medium size deployment scenario for ad-hoc application cases in various private usages, farming, agriculture, infrastructure surveillance, application-specific telemetry systems,… Note that more than 1 gateway can be deployed to serve several channel settings. However, it is probably not adapted, in the current state of development, to large-scale deployment with a large number of end customers from various different organizations with their own and different requirements regarding data management, confidentiality and security.Download:github(drop me a mail if you use our development so that we could advertise it)gw_full_latest folder: the latest version of the gateway softwarethe modified SX1272 library (initial version comes from Libelium) with enhanced features: support of SX1276, LBT & CSMA-like, …the arduPi library for RPI1 and RPI2the lora_gateway.cpp code (which compile on both RPI and Arduino)the makefilethe post-processing python scripts: cloud management, encryption, etc.Arduino folderthe modified SX1272 library (initial version comes from Libelium) with enhanced features: support of SX1276, LBT & CSMA-like, …the lora_gateway.ino code (which compile on both RPI and Arduino)an interactive end-device sketchvarious templates for most of Arduino boards (Uno, Mega, Due, Pro Mini, Teensy, etc.). Work out-of-the box with the gateway.a README.md for some installation/compilation instructionsourFAQ, explaining our LoRa framework, and especially why we are not LoRaWAN compatibleDownload:full SD card zipped imagefor the Raspberry gateway (based on Raspbian Jessie)Supports Raspberry 1B+, RPI2 and RPI3.Get the zipped image, unzip it, install it on an 8GB SD card, seethis tutorial from www.raspberrypi.orgPlug the SD card into your RaspberryConnect a radio module (see below)Power-on the RaspberryThe LoRa gateway starts automatically when RPI is powered onWith an RPI3, the Raspberry will automatically act as a WiFi access point. For RPI 1&2, see instructions on githubUpdate to the latest gateway version:https://github.com/CongducPham/LowCostLoRaGw#latest-gateway-versionBy default, incoming data are uploaded to ourLoRa ThingSpeak test channelWorks out-of-the-box with theArduino_LoRa_Simple_temp sketch2. Hardware componentsThe gateway is based on a Raspberry PI. RPI 1B+/2B/3B can be used. The LoRa modules comes from (a) Libelium LoRa radio module, (b) HopeRF RFM92W/HopeRF RFM95W (or RFM96W for 433MHz), (c) Modtronix inAir9/inAir9B (or inAir4 for 433MHz), (d) NiceRF LoRa1276. Libelium LoRa and RFM92W use the Semtech SX1272 chip while RFM95W, inAir9/9B and NiceRF LoRa1276 use the SX1276 which is actually more versatile.Figure: supported (tested) radio modulesFigure: Left: Hardware components with a Modtronix inAir9 radio module. Right: RPI GPIO header for RPI 1B (short) and RPI 2B/3B (long)Figure:GPIO header of the RPIUsing Libelium LoraFor the Libelium LoRa module, we directly connected the LoRa module without the connection bridge developed by Libelium to save the extra cost of the connection bridge, by just connecting the required SPI pins (MISO, MOSI, SPI_CLK and SPI_nSSEL), VCC and GND to the corresponding pins on the RPI (CE0 on the RPI for SPI_nSSEL and 3v3 for VCC). Pin out diagrams for the LoRa module in XBee format is shown below. The LoRa module from Libelium is however quite expensive: around 45€.Figure: XBee pin-out diagram for the Libelium LoRa moduleWe solder the wires to the pin as shown in the figure below. If the RPI is put in a case for outdoor usage, the radio module could just be fixed with the antenna or an SMA extension cable could be used. At the Raspberry side, you can simply plug the right cable end to the corresponding GPIO pin.Figure: using two 10-pin 2mm female socket to connect the LoRa module that has an XBee format. Right: the module is seen from the back sideFigure: connect the LoRa radio module to the RPI GPIO headerUsing HopeRF RFM92W/RFM95WNow, the HopeRF RFM92W (RFM95W) module is shown below. An adapter is need to have the break-out pins (the RFM92W module is quite small) and most importantly the antenna plug (which is in Female SMA). Note that the latest news from HopeRF indicated that the RFM92W is discontinued because the RFM95W is better. So you probably will have an RFM95W if you buy them now.       Figure: the RFM92W module (left), the RFM92W adapter (middle), the RFM92W and the adapter before soldering, comparison with the Libelium LoRa for size (right)After some delicate soldering, we have the RFM92W module ready to be plugged on our Raspberry like previously: just connect the right cable to the GPIO header or use an additional header for fast insertion/removal of the radio module.       Figure: the RFM92W and the adapter, after soldering (left), ready to be plugged on the Raspberry (middle), the adapter pin-out (right)The RFM92W (or RFM95W) with the adapter costs less than half of the Libelium LoRa (around 15€) which makes it quite attractive for our low-cost LoRa gateway. As both use the native SPI communication with the SX1272, the Libelium library can also drive the RFM92W, as explained in next section. See our low-cost gateway based on the RFM92W/95W at the end of the page.Using Modtronix inAir9We also tested with the Modtronix inAir9 which is based on the SX1276. This module has 2 advantages: it costs less than half of the Libelium LoRa (around 15€) and can come with the header pins already soldered! The left figure shows the radio module and the right figure shows the pin out.   To connect the inAir to the Raspberry, proceed as previously: just connect the right cable to the GPIO header or use an additional header for fast insertion/removal of the radio module. Our first tests show that the inAir is reliable. Given its low cost and readiness (the RFM92W/RFM95W need some soldering) it is definitely a good choice. Note that there is an inAir9B with +20dBm transmit power but regulation is quite strict on such transmit power usage.Using the LoRa GPS HatTheLoRa GPS Hat from Draginois also a nice solution based on an RFM95W. Look at theDragino wikithat explain how to use their shield with our library (see example 4).Important notice for the SX1272 libraryNote that the original Libelium library to drive the LoRa module does not use DIO pins as many other libraries do, so there is no need to connect these pins. You can use other development codes using DIO pins by connecting the required pins that are mostly configured as follows DIO0 (RXdone or TX done), DIO1 (RX timeout) and DIO5 (ready). Of company, you have to check first. Some may also use the RST pin to reset the module.3. Main architectureInitially, the gateway was implemented on an Arduino (MEGA/Due) for test purpose and for having a “direct” transparent radio bridge. We enhanced the gateway code but maintained compatibility with Arduino therefore the main features are available on both platforms. On the RPI, we use the arduPI layer provided by Libelium to run both the SX1272 library and the gateway program. The original SX1272 library has been significantly improved to support also the SX1276, to add CSMA-like capability to increase LoRa efficiency and implement the possibility to dynamically ask for an ACK from the receiver side. This library basically drives the SX1272 through the SPI interface (it then works with no modifications with the HopeRF RFM92W and has some modifications for the SX1276). The most important point to mention is that the original library adds 5 bytes for internal usage as shown is the following figure, taken from the Libelium documentation.
dst addr (1 bytesrc addr (1 bytesequence number (1 bytepayload length (1 bytespayload data (variable lengthretry counter (1 byte
The dst addr allows...了解详情

LoRaWAN协议中文版 第17章 Class C – 持续接收的终端

前言这是《LoRaWAN102》的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿)。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/翻译开始第17章 持续接收的终端具备Class C 能力的终端,通常应用于供电充足的场景,因此不必精简接收时间。Class C 的终端不能执行 Class B 。Class C 终端会尽可能地使用 RX2 窗口来监听。按照 Class A 的规定,终端是在 RX1 无数据收发才进行 RX2 接收。为了满足这个规定,终端会在上行发送结束和 RX1 接收窗口开启之间,打开一个短暂的 RX2 窗口,一旦 RX1 接收窗口关闭,终端会立即切换到 RX2 接收状态; RX2 接收窗口会程序打开,除非终端需要发送其他消息。注意:没有规定节点必须要告诉服务端它是 Class C 节点。这完全取决于服务端的应用程序,它们可以在 join 流程通过协议交互来获知是否是 Class C 节点。17.1 Class C 的第二接收窗口持续时间Class C 设备执行和 Class A 一样的两个接收窗口,但它们没有关闭 RX2 ,除非他们需要再次发送数据。因此它们几乎可以在任意时间用 RX2 来接收下行消息,包括MAC命令和ACK传输的下行消息。另外在发送结束和 RX1 开启之间还打开了一个短暂的RX2窗口。图13.Class C 终端的接收时隙时序图17.2 Class C 对多播下行的处理和 Class B 类似,Class C 设备也可以接收多播下行帧。多播地址和相关的 NWKSKEY 及 APPSKEY 都需要从应用层获取。Class C 多播下行帧也有相同的限制:不允许携带MAC命令,既不能放在FOpts域中,也不能放在 port 0 的 payload 中,因为多播下行无法像单播帧那样具备相同的鲁棒性。ACK 和 ADRACKReq 位必须要为0。MType 域需要为 Unconfirmed Data Down 类型的数值。FPending 位表明有更多的多播数据要发送。考虑到 Classs C 设备在大部分时间处于接收状态,FPending位不触发终端的任何特殊行为。翻译完了解详情

LoRaWAN协议中文版 第2章 LoRaWAN Classes 类型介绍

前言这是《LoRaWAN102》的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿)。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/翻译开始第2章 LoRaWAN Classes 类型介绍LoRa 是由Semtech面向长距离、低功耗、低速率应用而开发的无线调制技术。本文档中,将 Class A 基础上实现了更多功能的设备称为“更高 class 终端”。2.1 LoRaWAN ClassesLoRa网络包含基础LoRaWAN(称之为Class A)和可选功能(Class B,Class C):图1.LoRaWAN Classes双向传输终端(Class A): Class A 的终端在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输。传输时隙是由终端在有传输需要时安排,附加一定的随机延时(即ALOHA协议)。这种Class A 操作是最省电的,要求应用在终端上行传输后的很短时间内进行服务器的下行传输。服务器在其他任何时间进行的下行传输都得等终端的下一次上行。划定接收时隙的双向传输终端(Class B): Class B 的终端会有更多的接收时隙。除了Class A 的随机接收窗口,Class B 设备还会在指定时间打开别的接收窗口。为了让终端可以在指定时间打开接收窗口,终端需要从网关接收时间同步的信标 Beacon。这使得服务器可以知道终端正在监听。最大化接收时隙的双向传输终端(Class C): Class C 的终端基本是一直打开着接收窗口,只在发送时短暂关闭。Class C 的终端会比 Class A 和 Class B更加耗电,但同时从服务器下发给终端的时延也是最短的。2.2 文档范围这份LoRaWAN协议还描述了与 Class A 不同的其他 Class 的额外功能。更高 Class 的终端必须满足 Class A 定义的所有功能。注意:物理层帧格式,MAC帧格式,以及协议中更高 class 和 Class A 相同的内容都写在了 Class A 部分,避免内容重复。翻译完了解详情

LoRaWAN协议中文版 第1章 介绍

前言这是《LoRaWAN102》的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿)。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/翻译开始第1章 介绍本文档描述了LoRaWAN网络协议,是针对电池供电的终端设备(不管移动还是固定位置)进行优化的一套网络协议。LoRaWAN网络通常采用星型拓扑结构,由拓扑中的网关来转发终端与后台网络服务器间的消息。网关通过标准IP连接来接入网络服务器,而终端则通过单跳的 LoRa 或者 FSK 来和一个或多个网关通讯。虽然主要传输方式是终端上行传输给网络服务器,但所有的传输通常都是双向的。终端和网关间的通讯被分散到不同的信道频点和数据速率上。数据速率的选择需要权衡距离和消息时长两个因素,使用不同数据速率的设备互不影响。LoRa的数据速率范围可以从 0.3kbps 到 50kbps。为了最大程度地延长终端的电池寿命和扩大网络容量,LoRa网络使用速率自适应(ADR)机制来独立管理每个终端的速率和RF输出。虽然每个设备可以在任意信道,任意时间,发送任意数据,但需要注意遵守如下规定:终端的每次传输都使用伪随机方式来改变信道。频率的多变使得系统具有更强的抗干扰能力。终端要遵守相应频段和本地区的无线电规定中的发射占空比要求。终端要遵守相应频段和本地区的无线电规定中的发射时长要求。twowinter注:发射占空比,意思是发射时长占总时长的比例。按照无线电规定,每个设备不能疯狂发射霸占信道,总得给别人一点机会。这份文档主要讲述协议细节,一些基于各地区规定的操作参数,例如发射占空比和发射时长等,在另一份文档[LoRaWAN地区参数]中做具体描述。将这份文档分开,是为了加入新地区参数时不影响基础的协议规范。1.1 LoRaWAN Classes所有的LoRaWAN设备都必须至少实现本文档描述的 Class A 功能。另外也可以实现本文档中描述的 Class B 和 Class C 及后续将定义的可选功能。不管怎么样,设备都必须兼容 Class A。1.2 文档约定MAC命令的格式写作 LinkCheckReq (粗斜体),位和位域的格式写作 FRMPayload (粗体),常量的格式写作 RECEIVE_DELAY1,变量的格式写作 N。在本文档中,所有多字节字段的字节序均采用小端模式EUI 是8字节字段,采用小端模式传输默认所有RFU保留位都设为0翻译完了解详情

LoRaWAN协议中文版 第3章 PHY帧格式

前言这是《LoRaWAN102》的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿)。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/翻译开始第3章 PHY 帧格式LoRa 有上行消息和下行消息。3.1 上行消息上行消息是由终端发出,经过一个或多个网关转发给网络服务器。上行消息使用 LoRa 射频帧的严格模式,消息中含有 PHDR 和 PHDR_CRC 。载荷有CRC校验来保证完整性。PHDR,PHDR_CRC 及载荷 CRC 域都通过射频收发器加入。上行 PHY:
PreamblPHDPHDR_CRPHYPayloaCR
图2.上行PHY帧格式3.2 下行消息下行消息是由网络服务器发出,经过单个网关转发给单个终端。下行消息使用射频帧的严格模式,消息中包含 PHDR 和 PHDR_CRC。下行 PHY:
PreamblPHDPHDR_CRPHYPayloa
图3.下行PHY帧格式3.3 接收窗口每个上行传输后终端都要开两个短的接收窗口。接收窗口开始时间的规定,是以传输结束时间为参考。图4.终端接收时隙的时序图3.3.1 第一接收窗口的信道,数据速率和启动。第一接收窗口 RX1 使用的频率和上行频率有关,使用的速率和上行速率有关。RX1 是在上行调制结束后的 RECEIVE_DELAY1 秒打开。上行和 RX1 时隙下行速率的关系是按区域规定,详细描述在[LoRaWAN地区参数]文件中。默认第一窗口的速率是和最后一次上行的速率相同。3.3.2 第二接收窗口的信道,数据速率和启动。第二接收窗口 RX2 使用一个固定可配置的频率和数据速率,在上行调制结束后的 RECEIVE_DELAY2 秒打开。频率和数据速率可以通过 MAC 命令(见 第5章)。默认的频率和速率是按区域规定,详细描述在[LoRaWAN地区参数]文件中。3.3.3 接收窗口的持续时间接收窗口的长度至少要让终端射频收发器有足够的时间来检测到下行的前导码。3.3.4 接收方在接收窗口期间的处理如果在任何一个接收窗口中检测到前导码,射频收发器需要继续激活,直到整个下行帧都解调完毕。如果在第一接收窗口检测到数据帧,且这个数据帧的地址和MIC校验通过确认是给这个终端,那终端就不必开启第二个接收窗口。3.3.5 网络发送消息给终端如果网络想要发一个下行消息给终端,它会精确地在两个接收窗口的起始点发起传输。3.3.6 接收窗口的重要事项终端在第一或第二接收窗口收到下行消息后,或者在第二接收窗口阶段,不能再发起另一个上行消息。3.3.7 其他协议的收发处理节点在LoRaWAN收发窗口阶段可以收发其他协议,只要终端能满足当地要求以及兼容LoRaWAN协议。翻译完了解详情

LoRaWAN协议V1.0.2中文版_配套文件 地区参数(物理层)

前言这是《LoRaWAN102》的配套文档《LoRaWAN_Regional_Parameters_v1_0》(2016年7月定稿)的中文译文,在早期的LoRaWAN协议中它是以第7章 物理层的形式存在,由于LoRaWAN逐步应用过程中肯定会有很多新区域加进来,为了不影响旧有协议文档主体,所以从V1.0.2版本开始,联盟把这块内容单独出来。该LoRaWAN官方源文件可点此下载。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/翻译开始LoRaWAN地区参数1 介绍这份文档描述了全球不同地区的LoRaWAN具体参数。这份文档是对LoRaWAN协议文档(从版本V1.0.2开始)的配套补充文档。为了避免新区域的加入而导致文档的变动,因此将地区参数章节从协议规范中剥离出来。2 LoRaWAN地区参数2.1 欧洲 863-870MHz 免授权频段待补充,计划3月份补足。2.2 美国 902-928MHz 免授权频段待补充,计划3月份补足。2.3 中国 779-787MHz 免授权频段待补充,计划3月份补足。2.4 欧洲 433MHz 免授权频段待补充2.5 澳洲 915-928MHz 免授权频段待补充2.6 中国 470-510MHz 频段2.6.1 中国 470-510MHz 前导码格式要用如下的同步字:
调制方式同步字前导码长度
LoR...
了解详情

LoRaWAN协议解析 第6章 终端激活

1 前言我正在陆续对《LoRaWAN102》即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿)协议的各个章节进行翻译。译文之外还对LoRaWAN协议和源码进行了解析,可点此查看帖子LoRa学习笔记_汇总。欢迎同行朋友们留言交流。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/2 梳理解析LoRaWAN第6章,主要对节点加网做了描述,它有两种方式。如果要用一句话来总结的话,那就是这一句了,请看:如果是空中激活,则需要准备 DevEUI,AppEUI,AppKey 这三个参数,即设备自身MAC地址和要使用的应用(应用ID和密钥)。如果是ABP激活,则直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。这里插个题外话,商用的LoRaWAN网络一般都是走OTAA流程,这样安全性才得以保证。(twowinter,你数数,这是一句话?)(如果是空中激活,则需要准备 DevEUI,AppEUI,AppKey来join。如果是ABP激活,则直接配置 DevAddr,NwkSKey,AppSKey。)3 代码位置3.1 激活处理协议的第6章,相关的核心代码是这么几行,位于 \src\mac\main.c。整个代码结构非常清晰,用一个宏(OVER_THE_AIR_ACTIVATION)分开两段,分别对应两种激活方式。3.2 参数配置关于参数部分,相关的默认值全部位于\src\apps\LoRaMac\classA\硬件平台\Comissioning.h本尊有机会接触了几个LoRaWAN基站厂家,发现大家为了调试方便,一般也会支持这些默认值。End了解详情

LoRaWAN协议解析 第5章 MAC命令

1 前言我正在陆续对《LoRaWAN102》即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿)协议的各个章节进行翻译。译文之外还对LoRaWAN协议和源码进行了解析,可点此查看帖子LoRa学习笔记_汇总。欢迎同行朋友们留言交流。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/2 梳理解析从LoRaWAN第4章的帧格式可以得到如下信息:MAC命令,要么使用FPort0来单独传输,要么使用非零的FPort来和数据一起传输。LoRaWAN第5章,LoRaWAN出于网络管理需要,提出了9条MAC命令,这个章节是对9条命令进行具体的描述。说个题外话,CLAA(中国LoRa应用联盟)在9条命令以外还扩充了一些MAC命令。现阶段协议还不能公开,所以我就不多说了。中兴目前作为LoRa联盟董事会成员,也许以后会把这些拓展MAC命令引入到LoRaWAN协议也说不准,大家暂且当个课外知识了解下就好。3 代码位置MAC命令枚举MAC命令的接收处理OnRadioRxDone()携带着MAC帧进来,经过层层筛选,最终到达ProcessMacCommands()来处理MAC命令。这里代码中涉及的两种处理方式,可以跟协议对应起来:port = 0时,MAC命令放在FRMPayload中,需要先解密再处理;port非零时,MAC命令放在fopts中。MAC命令的发送及回复MAC命令的发送及回复处理都在这个函数中,AddMacCommand()。协议栈对MAC命令发送的处理还是比较简单的,都是放在Fopts中来传输,都在这个15字节的MacCommandsBuffer中。了解详情