LoRa智能组网芯片-快速上手指南与性能评测

一、LoRa智能组网芯片简介ZSL42x系列是致远电子自主研发的LoRa智能组网芯片。该产品集成无线收发器,超低功耗MCU,射频收发匹配电路和滤波电路。支持自组网透传协议、LoRaNET、LoRaWAN、LinkWAN、CLAA等软件组网协议。且芯片支持二次开发,拥有256K字节Flash,32K字节SRAM,45个通用IO口,多个SPI,IIC,UART数字接口,内置ADC,DAC等模拟外设,支...了解详情

解决LoRa同频干扰的三种方法

LoRa无线通信技术的出现使得无线通讯距离有了新的突破,为物联网应用带来新的发展空间,而且给一些需要远距离的应用提供了技术支撑。随着lora技术的不断发展,各种lora模块干扰的事件却日益增多,其中以同频干扰最为严重,干扰危害也是最大,所以我司给大家科普一下同频干扰的相关知识。同频干扰是什么呢?有关专家给出了一个明确的定义:凡是无用信号的载频与有用信号的载频相同,对接收同频道有用信号的接收机造成干...了解详情

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了解详情

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

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

无线通讯LoRa—SX1278芯片开发笔记

1、资源搜集Datasheet 和驱动源码从Semtech官网下载最新驱动代码http://www.semtech.com/apps/filedown/down.php?file=sx12xxDrivers-V2.1.0.zipDatasheet我上传了资源,中文版和英文版都有,还带了笔记的http://download.csdn.net/detail/csdn_logo/95607682、过一遍Datasheet,过之前必须对一些英文缩写有些了解,不然会要到处翻专业术语及其缩写:FHSS 跳频扩频技术 FIFO 先进先出队列,这里代表队列寄存器PA 功率放大器 LNA 低噪声放大器SNR 信噪比 SF 扩频因子PLL 锁相环 CAD 信道活动检测CR 编码率 BW 带宽RS符号速率 Preamble 序头。。。重要参数:扩频因子 RegModulationCfg因为不同扩频因子(SpreadingFactor)之间为正交关系,因此必须提前获知链路发送端和接收端的扩频因子。另外,还必须获知接收机输入端的信噪比。在负信噪比条件下信号也能正常接收,这改善了LoRa接收机的灵敏度、链路预算及覆盖范围。注:SF=6 时必须用ImplicitHeader 模式循环纠错编码cyclic error coding信号带宽Bandwidth较低频段(169 MHz)不支持250kHz和500kHz的带宽数据包结构序头preamble 报头 header (可配) 数据段 payload 校验码CRC对于希望前导码是固定开销的情况,可以将前导码寄存器长度设置在6到65536之间来改变发送前导码长度,实际发送前导码的长度范围为6+4至65535+4个符号。这样几乎就可以发送任意长的前导码序列。接收机会定期执行前导码检测。因此,接收机的前导码长度应与发射机一致。如果前导码长度为未知或可能会发生变化,应将接收机的前导码长度设置为最大值。报头分显示报头模式和隐式报头模式低数据速率优化LowDataRateOptimize当单个符号传输时间超过16毫秒时,必须使用LowDataRateOptimize位。注意:发射机和接收机的LowDataRateOptimize位设置必须一致。有效负载 payload其实就是数据段,即你要发或者要收的数据数字寄存器和 数字I/O寄存器113个,数字I/O也有6个,太多了,具体见Datasheet操作模式 OpMode3、分析驱动源码解压后打开doc下的README.txt找到关于sx1276的相关说明如下:2.1.3 SX1276 driver version V2.1.0——————————————————————————-The SX1276 driver is split in 4 parts (驱动源码包含如下四个部分)1. Generic SX1276 driver. 驱动调用接口( src\radio\SX1276.c )2. SX1272 FSK modem driver. FSK调制模式用( src\radio\SX1276-Fsk.c andsrc\radio\SX1276-FskMisc.c )3. SX1272 LoRa modem driver. LoRa调制模式用( src\radio\SX1276-LoRa.cand src\radio\SX1276-LoRaMisc.c )4. SX1276 HAL ( Hardware Abstraction Layer ). 硬件抽象层(src\platform\sx12xxEiger\SX1276-Hal.c )1. The generic SX1276 driver implements atleast the functions required bythe RadioDriver structure defined in src\radio\radio.h file. It offersalsothe same interface for the FSK or the LoRa modem.Inorder to choose which modem to use one must modify the src\radio\radio.hfile as follows:-For FSK modem#define LORA 0-For LoRa modem#define LORA 12. FSK调制的可以跳过不看3. The LoRa modem driver handles the SX1276as a LoRa modemInorder to change generic LoRa modem settings one must modify the followingparameters in file src\radio\SX1276-LoRa.c (LoRa模式初始化参数配置的结构体)tLoRaSettings LoRaSettings ={870000000, // RFFrequency 收发频率20, // Power 发射功率8, // SignalBw [0: 7.8kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz, 带宽// 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8:250 kHz, 9: 500 kHz, other: Reserved]7, // SpreadingFactor [6:64, 7: 128, 8: 256, 9: 512, 扩频因子// 10: 1024, 11: 2048, 12:4096 chips]2, // ErrorCoding [1:4/5, 2: 4/6, 3: 4/7, 4: 4/8] 循环纠错编码true, // CrcOn CRC校验false, // ImplicitHeaderOn 序头模式1, // RxSingleOn 接收模式中的single模式开关 0代表continue模式0, // FreqHopOn 跳频开关4, // HopPeriod 跳频周期100, // TxPacketTimeout 发送超时时间100, // RxPacketTimeout 接收超时时间4 // PayloadLength 负载数据长度};4. The HAL makes the SX1276 driver platformindependent.One must modify each function inside this file(src\platform\sx12xxEiger\SX1272-Hal.c ) according to the platform used.(根据硬件平台修改硬件抽象层)3. How to use the driver:——————————————————————————-This driver has been tested for high speedtransmission (up to 100kbps in FSK)and long payloads (up to 255 bytes in FSK or LoRa). To set a transmission /reception, it is necessary to:-Change the payload lengthThe payload length for the system isdefined with the parameter BUFFER_SIZElocated in main.c#define BUFFER_SIZE 128 // Definethe payload // size hereThe payload length can be configured from 1up to 2554、用例自己定义一个函数用来动态的初始化芯片view plaincopystaticvoidRFInit(){Radio->LoRaSetOpMode(RFLR_OPMODE_STANDBY);//settheRFsettingsRadio->LoRaSetPa20dBm(false);Radio->LoRaSetRFPower(5);Radio->LoRaSetSpreadingFactor(7);//SF6onlyoperatesinimplicitheadermode.Radio->LoRaSetErrorCoding(1);Radio->LoRaSetPacketCrcOn(0);Radio->LoRaSetSignalBandwidth(7);Radio->LoRaSetImplicitHeaderOn(0);Radio->LoRaSetSymbTimeout(0x3FF);Radio->LoRaSetPayloadLength(128);Radio->LoRaSetLowDatarateOptimize(true);Radio->LoRaSetFreqHopOn(false);Radio->LoRaSetRxSingleOn(true);Radio->LoRaSetPreambleLength(6);Radio->LoRaSetOpMode(RFLR_OPMODE_STANDBY);}通过RF发送数据的发送函数,主要用于收发异频,收发异频能减少干扰view plaincopyINT8URFWrite(INT8U*buff,INT8Usize,INT32Ufreq){Radio->LoRaSetRFFrequency(freq);//478750000DownChannel[10]Radio->SetTxPacket(buff,size);while(Radio->Process()!=RF_TX_DONE);returnsize;}通过RF接收数据的接收函数view plaincopyINT8URFRead(INT8U*buff,INT32Ufreq,INT8Utimeout){uint32_tresult;INT16URxLen;Radio->LoRaSetRFFrequency(freq);Radio->LoRaSetRxPacketTimeout(timeout*1500);//1s=1500Radio->StartRx();while(1){result=Radio->Process();///SX1276LoRaProcessif((result==RF_RX_DONE)||(result==RF_RX_TIMEOUT)){break;}}if(result==RF_RX_DONE)//RFBuffer{Radio->GetRxPacket(buff,&RxLen);returnRxLen;}else{return0;}}了解详情

LoRa笔记02 LoRa sx1276 sx1278的发射功率研究

1 前言发射功率也是射频基础指标,目前SX1278可以支持最大20dBm。我正在学习LoRa和LoRaWAN,基本按照 官方资料+梳理解析+相关源码 的方式来记录笔记,相信对不少同行者有所帮助,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/2 官方datasheet资料5.4.2. RF Power AmplifiersPA_HF and PA_LF are high efficiency amplifiers capable of yielding RF power programmable in 1 dB steps from -4 to+14dBm directly into a 50 ohm load with low current consumption. PA_LF covers the lower bands (up to 525 MHz), whilstPA_HF will cover the upper bands (from 779 MHz). The output power is sensitive to the power supply voltage, and typicallytheir performance is expressed at 3.3V.PA_HP (High Power), connected to the PA_BOOST pin, covers all frequency bands that the chip addresses. It permitscontinuous operation at up to +17 dBm and duty cycled operation at up to +20dBm. For full details of operation at +20dBmplease consult section 5.4.3Table 33 Power Amplifier Mode Selection Truth Table
PaSelecModPower RangPout Formul
PA_HF or PA_LF on RFO_HF or RFO_L-4 to +15dBPout=Pmax-(15-O...
了解详情

LORA 射频自组网 两级中继设计方案

基于sx1276lora模块,进行多个模块之间自组网,组网形式为1个集中器加多个终端。模块之间距离较远时,集中器无法直接与某个终端进行通信,其他终端本身可作为中继给该终端作为中继与集中器通信。lora调制方式,发送数据为星型通信方式,为自组网提供了便利。终端接收心跳存储typedef strucuint32_t Id;//接收的Iuint8_t Rssi;//信号强度}RECV_TERMINAL_T;...了解详情

花费200欧元打造自己的LoRa网关

本文来源https://github.com/isiot/diy_LoRa_gateway本教程介绍一个便宜的LoRa网关的制作步骤,然后让节点、网关和云在一起运行。注:本文仅翻译自github,并未亲测part1硬件选择我要介绍的LoRa网关,运行在sx1301之上,该芯片不能单独出售,只出售给符合条件的客户。唯一的办法就是购买一个成品的网关板。目前市场基于sx1301的LoRa网关板有:Semtech LoRa物联网入门套件,只出售给符合条件的客户IMST iC880A,约189欧元:Multitech mCard-LoRa, 约156欧元:Link Labs LoRaWAN Raspberry Pi(树莓蒎) Gateway Board, 225美元:Cisco LoRa card, sold with Cisco IR900 router only(思科LoRa板卡,只提供思科IR900路由器):只有Multitech mCard-LoRa符合我们的预算,而剩下的其他硬件就很便宜了。mCard LoRa是一个为Multitech MultiConnect Conduit router定制的插件板,这个Mini-PCIe card没有使用文档可以提供,因为它是即插即用的。但是如果我们想把用它在其他的硬件环境下,我们应该对它进行逆向拆解。余下的硬件则需要一个嵌入式Linux主机像Raspberry Pi,25欧元:以及一个 USB to Mini-PCIe转换器, 5欧元:对了,别忘了还有电源适配器、电缆和天线。进入第2部分我们将探讨对mCard LoRa硬件上的修改。part2硬件改造mCard LoRa是一个Mini-PCIe规格的板卡。包含有一个sx1301基带芯片和两个sx1257 I/Q调制收发器(1 TX 2 RX) ,都集成在一个很小的板上。图中,射频链用蓝色线画出,包含发送通道上的“平衡-不平衡转换器”BALUN,声表面波滤波器saw,功率放大器PA,滤波器和开关接收通道上的声表面波滤波器saw,低噪声放大器LNA,声表面波滤波器saw在另一层有一个FTDI SPI转USB转换器FT232,以及一些电源芯片请看USB转Mini-PCIe板卡的电源引脚,GND引脚连接到地,3.3V的电源引脚(2,24,52)连接到了一些电源芯片的输入上(用于为数字部分供电)。但是为模拟部分供电的电源芯片的输入接到了引脚23和25。3个LDO器件lp38502sd-adj用于模拟供电并调整到3.3V输出,所以它们 的输入电压应该大于3.52v,因为它们工作时的最小压差是220mv,总之,我决定为迷你PCIe连接器的23和25脚提供5V电压,这个5V电压从 USB接口处取得。我推荐你使用一个质量好的USB接口供电.树莓蒎2有USB电流限制以防止集线器启动,可以修改启动文件/boot/config.txt,增加max_usb_current = 1来增大USB电流。part3软件编译Raspberry Pi足够强大,Raspbian(Raspbian,树莓派自带的基于debian的OS)系统自带了GCC,Git…这样我们就可以在Raspberry Pi里面进行软件编译,而不需要在桌面PC上编译后上传二进制文件到Raspberry Pi。打开一个控制台或SSH会话,默认的用户名是“pi”和密码“raspberry”。首先我们需要FTDI芯片FT232HQ的驱动(libmpsse.so),不要试图在网上找到它,因为它是依赖于平台的,所以最好是从源码编译:sudo apt-get updatesudo apt-get install git --assume-yessudo apt-get install libftdi-dev --assume-yescd ~wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libmpsse/libmpsse-1.3.tar.gztar zxvf libmpsse-1.3.tar.gzcd libmpsse-1.3/src./configure --prefix=/usr --disable-pythonmakesudo make installcd /etc/udev/rules.dsudo wget https://raw.githubusercontent.com/mirakonta/lora_gateway/master/libloragw/99-libftdi.rulessudo udevadm control --reload-rulessudo udevadm triggersudo adduser pi plugdevcd ~现在我们可以继续关于LoRa网关的部分了:下载源代码和编译,一旦完成编译,就把他们复制到 ~/lora/exec:mkdir ~/loracd ~/loramkdir execgit clone https://github.com/mirakonta/lora_gateway.gitgit clone https://github.com/mirakonta/packet_forwarder.gitcd ~/lora/lora_gatewaymake clean allcd ~/lora/packet_forwardermake clean allcp ~/lora/packet_forwarder/basic_pkt_fwd/basic_pkt_fwd ~/lora/exec/cp ~/lora/packet_forwarder/gps_pkt_fwd/gps_pkt_fwd ~/lora/exec/cp ~/lora/packet_forwarder/gps_pkt_fwd/global_conf.json ~/lora/exec/cd ~/lora/exec最后,我们执行的LoRa gateway:sudo ./gps_pkt_fwd本节我使用了这些链接作为参考资料:https://github.com/Lora-net/lora_gateway/blob/v3.1.0/libloragw/install_ftdi.txthttps://github.com/Lora-net/packet_forwarder/wiki/Use-with-Raspberry-Pipart4软件修改LoRa网关的软件部分本来应该做适当修改再进行编译的,但本教程第3部分用来编译的代码是我从原始lora_gateway代码fork的一个分支并做了必要的修改,所以你不需要修改任何文件如果你想知道我所做的修改,请阅读下文并查看我提交的commits。我第一次编译时,软件并没有运行起来,我意识到USB驱动没有被识别,因为我手上的mCard与LoRa开发套件(即与 https://github.com/Lora-net/lora_gateway 配套的套件)使用了不同的FTDI USB to SPI转换芯片FT232H,每个FT232H都有不同的PID(Product IDentification),我修改了源文件中的以下文件:loragw_spi.ftdi.c/* parameters for a FT232H */#define VID 0x0403#define PID 0x601099-libftdi.rules# FTDI Devices: FT2232HSUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="0664", GROUP="plugdev"为了使用FTDI SPI,我们必须做以下修改library.cfgCFG_SPI= ftdi现在,板子可以被正确识别但是还不能与SX1301通信,因为板子还处于复位状态,复位引脚是由主机通过FTDI的GPIO引脚来控制的,修改以下文件:loragw_spi.ftdi.c/* toggle pin ADBUS5 of the FT232H *//* On the MTAC-LORA, it resets the SX1301 */a = PinLow(mpsse, GPIOL1);b = PinHigh(mpsse, GPIOL1);现在sx1301似乎开始工作但没有读寄存器,这是因为sx1301没有时钟源,两个sx1257通过共享的TCXO进行时钟驱动,sx1257具有时钟输出,用于驱动sx1301时钟, 查看schematic的文档,我发现是radio_0的时钟输出而不是radio_1的被连接到了sx1301的时钟输入,所以修改以下文件:global_conf.json"clksrc": 0, /* radio_0 provides clock to concentrator */完工!!!Note:写完本教程以后,MultiTech公开发布了具有相同补丁的的GIT库文件,地址在http://git.multitech.net/cgi-bin/cgit.cgi/lora_gateway.git/commit/?h=1.7.0-mts了解详情

LoRaWAN版本历史及协议格式说明

译文参考翻译原文链接LoRaWAN 规范 1.0 (章节2~4)LoRaWAN 规范 1.0 (章节5)LoRaWAN 规范 1.0 (章节6)LoRaWAN 规范 1.0 (章节7)LoRaWAN 规范 1.0 (章节10~13)英文文档下载链接LoRaWAN1.0.1_d3LoRaWAN Specification 1R0LoRaWAN1.0.2第7章物理层(Physical layer)的内容放到另一个文档LoRaWAN Regional Parameters修正章节4.3.1.1中与ADR相关的错误描述(要写成ADR_ACK_LIMT而不是ADR_ACK_DELAY)修正章节18.2标题错误(1.0.1中是19.2)增加MAC命令DlChannelRec,该命令用来修改节点下行频率增加MAC命令Tx ParamSetupRec,此命令用来远程修改某些区域中节点的最大TX驻留时间和最大无线电发射功率终端设备能够处理多个ADRreq命令(章节5.2)明确AppKey定义LoRaWAN1.0.1_d3该版本是一些bug修复,协议本身没有什么改动。阅读中文翻译的朋友可以略过大部分改动,因为这些在翻译过程中已经处理了。变化如下:明确 RX 窗口开启时间修正 章节NA 中 DR2 负载大小上限修正 7.2.2 中的拼写错误对 7.2.2 中使用码率 4/5 提出新的规定,以保证无线传输时间 < 400ms修正 6.2.5 中的JoinAccept MIC算法5.2 中的 字段名由 NbRep 改为 NbTrans删掉4.3.3.2,排除 MAC层不对应用数据(Applicative payload)加密的情况。出于应用对安全的进一步要求,不管用什么算法,需要对payload加密(这里无关LoRaWAN协议,跟个人安全有关),然后再使用LoRaWAN中的算法在MAC层再次加密。修正 FHDR 相关错别字修正 7.2.5 中 chMaskCntl 等于6或7时 ChMask 对信道的影响。说明 JoinResp 消息中 RX1 的数据速率偏移删除 7.2.7 中 DRoffset表的下半部分。LoRaWAN Specification 1R0初始版本协议格式整理整个协议包括LoRa和网关交互部分,服务器只需要带颜色的数据。最近有不少朋友对PHYPayload还是搞不清,再分享两张图片,把整个流程都分享给大家1 入网激活2 接收入网3 正常通信本文由 qingchuwudi 整理、译制,除非另有声明,本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。了解详情

阿里物联网推出LoRaWAN开放式实验平台

摘要: 本文介绍了基于loraserver和uDC的LoRaWAN开发平台,基于该平台用户无需投入硬件即可在设备端和服务端进行,极大的降低了入门和开发门槛。点此查看原文:http://click.aliyun.com/m/43348本文旨在介绍AliOS Things的LoRaWAN开放式实验平台和具体使用方法,通过这些介绍用户可以在没有节点和网关,没有架设server的情况下完成对节点的远程调...了解详情

巧用LoRa无线网络 远距离采集温湿度

一. 采集系统意义温湿度是自然界中和人类打交道最多的两个物理参数,无论是在生产实验场所,还是在居住休闲场所,温湿度的采集或控制都十分频繁和重要,比如机房,变电站,粮仓,冷库,图书馆,博物馆,药厂等都需要监测环境的温湿度,而且,网络化远程采集温湿度并报警是现代科技发展的一个必然趋势。如果您购买锐米公司的LoRa终端和LoRa网关,可以快速搭建一个采集温湿度的物联网系统,该系统如下图所示,可以将温湿度采集到云服务器,通过智能手机查看。快速搭建锐米物联网系统请链接:http://www.rimelink.com/nd.jsp?id=36&_np=105_315如上图红色虚线框所示,为快速设计Demo系统硬件采用了RNDU470T和温湿度传感器SHT71,开发语言为ASNI C,开发环境为IAR for STM8(免费下载链接:http://www.rimelink.com/nd.jsp?id=33&_np=105_315),为降低复杂度没有使用操作系统二. 硬件连接采集系统硬件基于RNDU470T(锐米LoRa终端www.rimelink.com)设计,它的引脚定义如下:
引脚号引脚名称引脚类型描述
VCSuppl3.3V电源
GNSuppl电源地
RXD IN/OUUART接收
TXD IN/OUUART发送
CONDIN/OUUART输出信号端口
CONDIN/OUUART输入信号端口
COND IN/OU保留
RSD IN/OU复位引脚
固定引脚
固定引脚
SM
了解详情

巧用LoRa无线网络 实现工厂节能减排

据统计测算,2011年我国工业领域电机总用电量为2.6万亿kWh,占工业用电的75%。系统调节方式落后,大部分风机、泵类采用机械节流方式调节,效率比调速方式约低30%。如果全国整体提升电机系统效率5-8%,年可实现节电1300-2300亿度,相当于2-3个三峡电站的发电量,因此进行电机能效提升和电机系统的节能改造,是进行可持续发展和产业升级的一条必由之路。 现在物联网技术助力工厂节能减排。如下图所...了解详情

四个案例告诉你“定制树莓派”在企业级市场大有所为

树莓派自2012年推出以来,经过4年技术积淀以及社区运营,它在创客中间已经具备相当的名气了,去年仅英蓓特出货量就达到200多万片,这个对非消费类电路板块来说,是一个很不错的成绩了。近年来智能硬件概念的兴起,再加上国家层面大力推动“互联网+”、“智慧城市”,越来越多的传统企业参与其中,由此也诞生了很多新的创业公司以及新的业务,涌现出一批批刷新三观的应用。在这个讲究速度与激情的商业时代,比竞争对手先一...了解详情

年轻小农靠开源翻转传统农业

在众多软件高手云集的2017年开源人年会(COSCUP)上,有一群年轻人看起来格外不同,晒得通红的健康黝黑肤色,在软件工程师中格外亮眼,他们不只是软件工程师,更是一群善用开源科技的「作田人」。就连在开源人年会开场,前行政院院长张善政都分享了自己靠开源技术管农田的经验。张善政每逢周末都会到花莲自家农地从事农作,最近找来一位朋友,利用开源软件,用空拍机从高处拍摄农地後,运用影像辨识技术来计算农地上的西...了解详情

【典型案例】LoRa无线模块在温控器中的应用实例

其实无线技术很早就已经在热计量等领域有过不少的尝试,但为何迟迟未得到很好的普及?早在2005年,国家就发文推广对供热按用热量进行计量收费管理的制度,但历经十几年,由于分户计量实施难度大,技术门槛高,施工成本居高不下等诸多原因,进展缓慢,其实该情况不仅存在于热计量,在许多温控仪表、能源计量、能效管理的类似应用中同样存在。无线技术的推出,包括433、zigbee等无线方案的逐步完善,才逐步解决此类问题...了解详情

如何设计高品质LoRa无线模块

“炮制虽繁必不敢省人工,品味虽贵必不敢减物力”-百年同仁堂古训从14年至今,本着追求极致的工匠精神,锐米通信迭代设计了5版LoRa无线模块,最终达到高品质。干过射频设计的工程师都知道,因为高频电路敏感,元器件微小测试仪器精密;每一版设计,不但凝聚心血,还需要真金白银的投入。为此,我们分享LoRa射频设计的一些经验,只为您(们)不必再掉进这些“坑”。1 原理图在14年,获取一份SX1276/8的原理图,得找semtech的代理商;现在,可以直接从官网上获取:http://www.semtech.com/apps/filedown/down.php?file=SX1276RF1KAS_e269v01a.zip需要注意的是:官方是针对SX1276的射频电路,如果使用SX1278,需要处理HF引脚;官方有多个中心频点的物料BOM,在国内,一般使用490MHz中心频点;PE4259接天线的电路,根据天线性能,需要修改电容和电感值;2  PCB图尽管二层板也能工作,还是强烈建议使用四层板设计,它的优势很明显:稳定性高,抗干扰能力强,电路板的电磁兼容得到了很大的改善。独立的电、地层可以使所有的信号环路面积最小;电源层和地层形成较大的分布电容,为电源提供了很好的高频解耦作用,从而减小了电源线上的噪声;当然,四层板的价格比二层板贵得多,尤其是首次制作的工程费用更高。根据原理图设计PCB后,千万记得提交给semtech公司官方review。锐米通信的PCB经过semtech官方2次review,性能有明显的提升。在此,感谢科通(深圳)黄工和semtech(深圳)刘工的审核。3 电感电容直接用官方推荐的元器件吧,它保证精度和性能,唯一的缺陷是物料成本高。特别注意,要使用绕线电感,叠层电感虽然便宜,但是性能欠佳。锐米通信全部采用muRata品牌,这是国际公认的优秀品质。4 温补晶振按SX1276/8的数据手册,LoRa可以使用廉价的XTAL(无源晶振),仅当BW低于62.5kHz时,才建议使用TCXO(温补晶振)。然而,根据我们的测试经验,建议使用高品质的TCXO:具备温补功能,让处于不同温度(如室内和室外)的LoRa模块无线电频率最大化接近,可以有效提高解码率,从而提升通信质量;良好的抗老化,让不同寿命(先期部署和后期部署)的LoRa模块频偏最小,从而保证通信成功率;以锐米通信使用的NDKTCXO:它的最大功耗仅1.5mA,最大温漂仅2.5ppm,最大老化率仅1ppm/年。当然,它的价格昂贵,是普通XTAL的好几个倍。5 频谱实验每设计一版射频电路,至少得使用频谱仪进行遍历实验,我们使用Tektronix RSA5100A real- time signal analyzer。频谱仪测试选项很多,上2张中心频点为470MHz的测试照:6  SMT生产LoRa射频是高频电路,0402器件很微小,生产只能使用高精密SMT机器,才能保证品质和合格率。我们的生产机器为:7 自动化测试为保证100%合格率,每一片LoRa无线模块,锐米通信都会采用工装仪器进行自动化测试。除检测UART、SPI和RTC等外设外,还通过若干次RF通信,统计计算射频性能分数。测试结果如下图所示:关于LoRa无线模块更多资料,请链接:http://www.rimelink.com/pd.jsp?id=20了解详情

LoRaWAN实战 中国470频段的代码实现

前言在LoRaWAN协议中文版_配套文件 地区参数(物理层)中已经为中国规划了470频段,因此国内开发者对此需求很强烈。在最新(2017-02-27)的V4.3.1版本协议栈上已经新增了中国470频段。这篇文章从源码角度解析下其实现方式。目前国内的LoRaWAN基站产品都和标准有一些不同,比如CLAA等,所以搞清楚整个代码实现还是很有必要的。只要熟悉了整个流程,对接任何一个基站都不是难事。我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/源码解析1.前导码格式的源码实现同步字的处理在SX1276的驱动中:void SX1276SetPublicNetwork( bool enable ){SX1276SetModem( MODEM_LORA );if( enable == true ){// Change LoRa modem SyncWordSX1276Write( REG_LR_SYNCWORD, LORA_MAC_PUBLIC_SYNCWORD );}else{// Change LoRa modem SyncWordSX1276Write( REG_LR_SYNCWORD, LORA_MAC_PRIVATE_SYNCWORD );}}而前导码长度则是在每次SetTxConfig和SetRxConfig时配置进去。2.信道频率的源码实现先说上行信道的处理。第一步,初始化时把所有信道6*16=96个上行信道都使能了。LoRaMacParamsDefaults.ChannelsMask[0] = 0xFFFF;LoRaMacParamsDefaults.ChannelsMask[1] = 0xFFFF;LoRaMacParamsDefaults.ChannelsMask[2] = 0xFFFF;LoRaMacParamsDefaults.ChannelsMask[3] = 0xFFFF;LoRaMacParamsDefaults.ChannelsMask[4] = 0xFFFF;LoRaMacParamsDefaults.ChannelsMask[5] = 0xFFFF;第二步,紧接着把96个信道的频点赋值一遍。for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS; i++ ){Channels[i].Frequency = 470.3e6 + i * 200e3;Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0;Channels[i].Band = 0;}第三步,发送时在SetNextChannel中选择合适的频点,默认是96个信道中随机选择。Channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )];这上面是上行信道处理三部曲,下行信道处理则轻松多了。主要是配合接收窗口处理,由这个宏定义了下行的起始频点。具体可以看下面第7点。#define LORAMAC_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 )3.数据速率和节点发射功率编码速率编码如下:const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7 };发射功率编码如下:const int8_t TxPowers[] = { 17, 16, 14, 12, 10, 7, 5, 2 };速率范围如下:/*!* Minimal datarate that can be used by the node*/#define LORAMAC_TX_MIN_DATARATE DR_0/*!* Maximal datarate that can be used by the node*/#define LORAMAC_TX_MAX_DATARATE DR_5/*!* Minimal datarate that can be used by the node*/#define LORAMAC_RX_MIN_DATARATE DR_0/*!* Maximal datarate that can be used by the node*/#define LORAMAC_RX_MAX_DATARATE DR_5/*!* Default datarate used by the node*/#define LORAMAC_DEFAULT_DATARATE DR_0发射功率范围如下:/*!* Minimal Tx output power that can be used by the node*/#define LORAMAC_MIN_TX_POWER TX_POWER_2_DBM/*!* Maximal Tx output power that can be used by the node*/#define LORAMAC_MAX_TX_POWER TX_POWER_17_DBM/*!* Default Tx output power used by the node*/#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM4.CFList中国没有。具体见OnRadioRxDone中的FRAME_TYPE_JOIN_ACCEPT分支。5.LinkAdrReq命令对于 ChMaskCntl 的处理都在 ProcessMacCommands() 的 SRV_MAC_LINK_ADR_REQ 分支中。小彩蛋一个:你发现没,注释里写着Channel mask KO。不知是djaeckle (loramac-node的作者之一)调皮,还是语言习惯如此。if( chMaskCntl == 6 ){// Enable all 125 kHz channelsfor( uint8_t i = 0, k = 0; i < LORA_MAX_NB_CHANNELS; i += 16, k++ ){for( uint8_t j = 0; j < 16; j++ ){if( Channels[i + j].Frequency != 0 ){channelsMask[k] |= 1 << j;}}}}else if( chMaskCntl == 7 ){status &= 0xFE; // Channel mask KO}else{for( uint8_t i = 0; i < 16; i++ ){if( ( ( chMask & ( 1 << i ) ) != 0 ) &&( Channels[chMaskCntl * 16 + i].Frequency == 0 ) ){// Trying to enable an undefined channelstatus &= 0xFE; // Channel mask KO}}channelsMask[chMaskCntl] = chMask;}6.最大载荷长度/*!* Maximum payload with respect to the datarate index. Cannot operate with repeater.*/const uint8_t MaxPayloadOfDatarate[] = { 51, 51, 51, 115, 222, 222 };/*!* Maximum payload with respect to the datarate index. Can operate with repeater.*/const uint8_t MaxPayloadOfDatarateRepeater[] = { 51, 51, 51, 115, 222, 222 };这在RxWindowSetup()进行处理,调用了最终的驱动函数。if( RepeaterSupport == true ){Radio.SetMaxPayloadLength( modem, MaxPayloadOfDatarateRepeater[datarate] + LORA_MAC_FRMPAYLOAD_OVERHEAD );}else{Radio.SetMaxPayloadLength( modem, MaxPayloadOfDatarate[datarate] + LORA_MAC_FRMPAYLOAD_OVERHEAD );}7.接收窗口处理。RX1的处理在OnRxWindow1TimerEvent()中,满足协议要求。RxWindowSetup( LORAMAC_FIRST_RX1_CHANNEL + ( Channel % 48 ) * LORAMAC_STEPWIDTH_RX1_CHANNEL, datarate, bandwidth, symbTimeout, false );RX2的默认参数见如下宏:#define RX_WND_2_CHANNEL { 505300000, DR_0 }RX2的处理在OnRxWindow2TimerEvent()中:if( RxWindowSetup( LoRaMacParams.Rx2Channel.Frequency, LoRaMacParams.Rx2Channel.Datarate, bandwidth, symbTimeout, rxContinuousMode ) == true ){RxSlot = 1;}速率偏移处理如下:datarate = LoRaMacParams.ChannelsDatarate - LoRaMacParams.Rx1DrOffset;if( datarate < 0 ){datarate = DR_0;}8.默认设置目前基本各地区的参数都一样,因此协议栈也是直接共用如下参数:/*!* Class A&B receive delay 1 in ms*/#define RECEIVE_DELAY1 1000/*!* Class A&B receive delay 2 in ms*/#define RECEIVE_DELAY2 2000/*!* Join accept receive delay 1 in ms*/#define JOIN_ACCEPT_DELAY1 5000/*!* Join accept receive delay 2 in ms*/#define JOIN_ACCEPT_DELAY2 6000/*!* Class A&B maximum receive window delay in ms*/#define MAX_RX_WINDOW 3000/*!* Maximum allowed gap for the FCNT field*/#define MAX_FCNT_GAP 16384/*!* ADR acknowledgement counter limit*/#define ADR_ACK_LIMIT 64/*!* Number of ADR acknowledgement requests before returning to default datarate*/#define ADR_ACK_DELAY 32/*!* Number of seconds after the start of the second reception window without* receiving an acknowledge.* AckTimeout = \ref ACK_TIMEOUT + Random( -\ref ACK_TIMEOUT_RND, \ref ACK_TIMEOUT_RND )*/#define ACK_TIMEOUT 2000/*!* Random number of seconds after the start of the second reception window without* receiving an acknowledge* AckTimeout = \ref ACK_TIMEOUT + Random( -\ref ACK_TIMEOUT_RND, \ref ACK_TIMEOUT_RND )*/#define ACK_TIMEOUT_RND 1000End了解详情

利用DEMO系统 评估LoRa终端与网关

一.  系统意义为帮助客户有效评估LoRa终端http://www.rimelink.com/pd.jsp?id=2)和网关(http://www.rimelink.com/pd.jsp?id=14),我们设计一个DEMO板,该DEMO板需要满足:简单易用,成本低廉,稳定可靠,开放设计资料(免费下载源代码:http://www.rimelink.com/nd.jsp?id=38&_np=105_315)。达到:1. 帮助用户与LoRa终端硬件接线;2. 帮助用户与LoRa终端解析软件协议帧;3. 有效评估LoRa终端的性能(通信距离、能耗等)和LoRa网关功能。如此一来,客户可以快速搭建一个物联网系统,该系统如下图所示,可以将温湿度采集到云服务器,通过智能手机查看。二. 产品框架DEMO板的整体框架如下图所示,MCU选用STM8L151C8T6,达到开发和采购低成本;温湿度传感器选用SHT10,它的成本较低;电池盒安装2节AAA干电池,贴片方式焊接在电路板上;miniUSB接口方便接入5V供电;2.0mm圆孔8芯排座用于安装LoRa终端。三. 硬件设计四. 软件设计1. 软件开发环境开发语言为ASNI C,IDE为IAR for STM8,为降低复杂度没有使用操作系统。2. Demo系统逻辑Demo系统的主程序逻辑如上图所示,非常简洁,基于最简单的软件结构:while(1)无限循环。经过实测:Demo系统采集SHT10的12位湿度约用时62毫秒,采集14位温度约用时216毫秒。用户每3秒采集一次温湿度数据,再传输给RNDU470T。3. UART驱动时序RNDU470T是超低功耗产品,它大部分时间都处于休眠状态,因此Demo系统需要“唤醒”RNDU470T才能发送UART数据帧;同理,考虑Demo系统也可能处于休眠状态,RNDU470T在发送UART数据帧也通过信号线“唤醒”用户系统。具体时序请查看《锐米LoRa终端说明书》。如下图所示,当Demo系统发送UART数据帧时,先置高P7引脚,然后启动UART端口发送序列,当发送结束时再拉低P7引脚;置高P7引脚(T0时刻)与启动UART端口发送(T1时刻)有一个延时Tx prepare time,它的最小值为100微秒。4. UART通信帧解析算法RNDU470T的UART通信帧格式如下图所示,它是变长数据帧,帧具体的定义请参考《锐米LoRa终端说明书》。为简化系统设计,我们强烈建议您采用“状态机”来解析该UART数据帧,并且把解析工作放在ISR(中断服务程序)完成,仅当接收到最后一个字节(0x0D)时,再将整个数据帧提交给进程(Demo系统为main程序)处理。该解析状态机的原理如下图所示:5. 代码工程整个工程文件如下图所示:main.c:Demo系统的整体逻辑代码;SHT7x.c/.h:SHT10驱动代码;stm8l15x_it.c/.h:MCU中断服务程序注册文件timer.c/.h:定时器驱动代码;uart.c/.h:UART驱动代码。Project下存放基于IAR开发环境的工程文件;STM8L15x_StdPeriph_Driver:ST公司官方驱动库文件。了解详情