面向LoRa的物联网平台研究
2018-02-02朱庆华景妮琴常莹
朱庆华+景妮琴+常莹
摘要:该文面向LoRa的物联网平台,将平台分解为用户节点终端、LoRa网关、LoRa服务器、管理平台四个模块。其中,传感器和传输节点之间通过串口通信传输数据,节点接收数据之后通过LoRa调制方式发送给网关,服务器为所用设备公司提供的远程服务器,在PC端编写数据读取窗口读取服务器上接收的网关数据。最后对LoRa物联网平台进行了功能测试和性能测试。
关键词:物联网;LoRa;短距离通信
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)01-0075-03
1 概述
1.1 技术的提出
2013年8月,Semtech公司向业界发布了一种新型的,基于1GHz以下的超长距低功耗数据传输技术(简称LoRa)的芯片。其接受灵敏度达到了惊人的-148dbm,LoRa是由升特公司(Semtech)发布的一种专用于无线电调制解调的技术,它与其他如FSK(频移键控)、GMSK(高斯最小频移键控)、BPSK(二进制相移键控)及其派生的调制方案形成竞争关系。
LoRa融合了数字扩频、数字信号处理和前向纠错编码技术,拥有前所未有的性能。此前,只有那些高等级的工业无线电通信会融合这些技术,而随着LoRa的引入,嵌入式无线通信领域的局面发生了彻底的改变。
1.2LoRa技术优势
LoRa技术最突出的两个优点就是长距离和低功耗。
LoRa技术的第一个优点就是传输距离长。在郊区环境下,LoRa技术的传输距离可以达到10~15km;在城市环境下,传输距离也能达到3~5km。这样的传输距离相比Wi-Fi、2G、3G、4G等要远很多。LoRa技术能有这么远的传输距离,得益于它工作的频率范围比较低,频率低的信号波长较大,在城市中众多建筑包围之下产生的衰落就比较小,所以传输距离远。
LoRa技术另一个优点就是低功耗。LoRa技术之所以能够低功耗,首先是因为其发射频率低,信号波长比较长,在传播过程中所产生的衰落比较小,因而可以采用低功率发射;其次,LoRa采用扩频技术,能使信号的抗多径、抗衰落能力比较强,所以对发射功率的要求不高;最后,为达到省电的目的, 业界广泛应用WOR(Wake on Radio) 方式—芯片周期性地进入接收模式以判断有没有唤醒信号(比如前导),其他时间处于Sleep模式,通过对比,采用WOR方式可以使电池寿命相比功耗同样不高的FSK调制提高3倍以上。
1.3 LoRa WAN1.0
LoRaWAN1.0是有LoRa联盟提出的LoRa技术规范,它定义了LoRa网络的通信协议和系统结构。通信协议和系统结构对LoRa网络的节点电池寿命、网络容量、服务质量、安全性和服务的多样性有着重要影响。
如图1所示,LoRaWAN网络架构是一个典型的星形拓扑结构,在这个网络架构中,LoRa网关是一个透明的中继,连接前端终端设备和后端中央服务器。网关与服务器通过标准IP连接,而终端设备采用单跳与一个或多个网关通信,所有的节点均是双向通信。
LoRaWAN的终端设备服务于不同的应用,有着不同的要求。为了优化各类终端应用程序配置文件,LoRaWAN利用不同的设备类权衡网络下行通信延迟与电池寿命。在控制或执行器类型的应用程序,所述下行链路通信延迟是一个重要的因素。
2 面向LoRa的物联网平台设计
2.1 设计原则
物联网平台的设计应该支持多种业务需求,既要满足不同业务的共性需求,同时又能够支持不同业务的个性化需求。除此之外,平台的系统设计还应该遵循以下几个原则:安全性原则、实用性原则、标准性原则和可扩充性原则。
2.2 面向LoRa的物联网平台网络结构
如图2所示,整个LoRa物联网平台分为用户节点终端、LoRa网关、LoRa服务器、管理平台四个模块。其中,用户节点终端由测试节点与数据采集传感器相连接,用户节点终端部署在教学楼、学生公寓及行政楼等分散的多个位置,采用星型网络布局;LoRa网关放在网络中心机房内,用于接收测试节点发送的数据并转发至服务器;LoRa服务器采用设备商提供的远程云服务器;管理平台通过登录远程云服务器获取LoRa网关的数据,并能通过平臺向节点发送消息。
3 面向LoRa的物联网平台实现
平台实现的用户终端模块由检测仪、测试节点和移动电源组成,用于测试LoRa网络覆盖质量,传输温度、湿度和空气质量数据,同时,用户也可以通过检测仪了解到节点位置的温度、湿度和空气质量情况。
3.1 检测仪
检测仪上的各个传感器都是通过串口通信传输数据,因而整个检测仪的数据采用串口方式传输,采用TTL-USB接口将检测仪连接到PC端,通过PC端的串口调试软件测试数据传输是否正常。根据检测仪的说明书,检测仪上传的数据间隔为1秒,波特率9600,数据位8位,停止位1位,无校验位。
测试结果从串口调试软件串口数据接收获取,根据读取的数据,计算如下:温度=28.0℃;湿度=31RH%;PM2.5=0μg/m3;PM10=0μg/m3;计算结果与检测仪屏幕显示结果完全相符。测试结果说明检测仪串口数据上传没有问题。
3.2 测试节点
测试节点为基于LoRa物联网平台中的重要部分,它的主要功能有:通过串口与检测仪通信;OLED显示屏,可根据需要显示数据;通过编程中的逻辑修改,实现LoRaMAC、PHYMAC、低功耗三个模式直接的切换;向LoRa网关发送上行数据;接收LoRa网关的下行数据;测试LoRa网络覆盖质量。
节点编程实现:
1) 串口驱动程序
其中核心代码如下:endprint
串口初始化函数:void UART_Init(void)
该函数的作用为初始化串口设置,在对测试节点进行烧写编程时对串口的波特率、数据位数、有无停止位、有无校验位等参数进行设置,若想修改这些参数,需要对测试节点进行重新烧写。根据检测仪的串口参数需求,编写代码:
UartHandle.Instance = USARTx;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WordLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
串口发送函数的关键语句为:
uint16_t i = 0 ;
for(i = 0;i { USART1→TDR = (uint8_t)(str[i]); while( HAL_USART_GET_FLAG(USART1,UART_FLAG_TC)== RESET);} 2) 屏幕驱动程序 其中的核心函数如下: void OLED_Init(void) 此函数为OLED的初始化函数,用于配置OLED引脚,设置对比度、扫描方向、亮度的参数。若想对OLED的基本参数进行改动,需修改此函数中的内容并重新烧写。 void OLED_DrawPoint(u8 x,u8 y,u8 t) void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode) //单个字符显示 此函数的功能为控制OLED显示屏在(x,y)坐標的位置显示一个字符。核心代码如下: for(t=0;t { if(size==12)temp=asc2_1206[chr][t]; // Font 1206 else if(size==16)temp=asc2_1608[chr][t]; // Font 1206 else if(size==24)temp=asc2_2412[chr][t]; // Font 1206 else return; //Not word stock for(t1=0;t1<8;t1++) { if(temp&0x80)OLED_DrawPoint(x,y,mode); else OLED_DrawPoint(x,y,!mode); temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break;}} void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size) //显示需要的数据 { while((*p<='~')&&(*p>=' ')) //Determine whether illegal { if(x>(128-(size/2))){x=0;y+=size;} if(y>(64-size)){y=x=0;OLED_Clear();} OLED_ShowChar(x,y,*p,size,1); x+=size/2; p++;} } 3) LoRa频点、信道设置 测试节点支持LoRaMAC工作模式,LoRaMAC工作模式又分为LoRa调制和FSK调制两种,本次所建的LoRa物联网平台采用LoRa调制。实现LoRaMAC工作模式设置的程序写在app_oasl.c文件中,其核心代码如下: //设置LoRaMAC工作模式(LoRa调制) //设置信道1 g_macData.channels[0].Frequency = 779500000;//频点 //速率范围:((最高速率<<4丨最低速率)) g_macData.channels[0].DrRange.Value = ( ( DR_5 << 4 ) | DR_0 ); g_macData.channels[0].Band = 0; 4) 串口数据读取 串口数据读取的程序语句如下: switch(step) { case 0: if(ch == 0xFF) { step++; uart1_Rxcount= 0; memset(uart1_rxBuf,0,80);//???????? uart1_rxBuf[uart1_Rxcount] = ch; uart1_Rxcount++;} break; case 1: uart1_rxBuf[uart1_Rxcount++] = ch; if(uart1_rxBuf[8]==0x79)//跳过无用帧
step=0;
if(uart1_Rxcount==12)
……
for(uint8_t i=0;i<13;i++)
{ sprintf((char*)temp_buf+len,"%X",uart1_rxBuf[i]);//bandwidth
len=strlen((char*)temp_buf);}
OLED_ShowString(0,24,(u8*)temp_buf,12);
OLED_Refresh_Gram();
5) 串口数据发送
串口数据读取完毕后,调用osal_set_event函数启动发包程序。由于检测仪上传串口数据的频率固定为1秒1帧,而测试节点采用LoRa模式发送数据的频率远远低于检测仪上传串口数据的频率。为保证测试节点不出现死机的情况,设置为可以丢包但是不会死机的工作模式,以保证测试节点正常工作。
3.3 用户节点终端模块整体测试
用户节点终端模块由检测仪和测试节点组成,在完成对检测仪和测试节点的编程、调试工作后,需对用户节点终端模块整体进行测试。
将测试节点上的4PIN串口数据线按照GND-GND,5V-5V,TX-RX,RX-TX的顺序连接。串口数据线连接完成后,将移动电源的Micro-USB口连接至检测仪,打开移动电源和检测仪的开关,测试节点已经正确地读取到了检测仪上传的串口数据。由此可得,用户节点终端模块工作正常。
3.4 LoRa 网关
为了方便管理和调试LoRa网关,网关上设有USB-B型接口,通过使用USB打印线可以将网关和PC相连接。PC终端与LoRa网关连接成功后,首先在PC 终端的设备管理器中查询到PC终端与LoRa网关连接的串口号。连接后采用的调试软件为Putty。设置相应参数进行连接管理。
常用指令gw info显示LoRa网关的基本信息,包括ID,DTU版本,GWM 版本(硬件/軟件),地理位置信息。指令gw ip显示LoRa网关的IP 信息,包括网络连接类型,IP 地址,子网掩码,默认网关。指令gw ping测试LoRa网关与服务器的连接情况。
3.5 LoRa服务器
基于LoRa的物联网平台使用的远程云服务器主要功能有:实现中心网管平台功能;实现LoRaWAN MAC部分;负责Gateway网关及配置工作,Mote配置及OTA与应用服务器数据交互。
3.6 管理平台
管理平台对网络中各个用户的节点终端进行管理。面向LoRa物联网网络的需求,管理平台具有以下功能:
1) 服务器安全验证
管理平台所有功能的前提是登录LoRa远程云服务器,为保证数据安全,管理平台登录服务器时应验证登录信息并反馈。根据上一节内容,CS需要间隔60秒向AS发送登录信息,这样就确保了信息的安全。
2) 测试节点管理功能
管理平台中应当对所有通过LoRa网关接入服务器的测试节点进行列表管理。通过选中测试节点,可以实现查看测试节点所发数据、向测试节点发送数据的功能。为了测试LoRa网络的覆盖质量,测试节点在发送数据时会将频点、带宽、码率等信息一起发送到LoRa网关。服务器也应该具有读取这些数据的功能,以方便和用户节点终端进行对比,进而检测LoRa网络的覆盖质量。
3) 对测试节点所发数据的处理功能
测试节点所携带的有效数据,根据上文所述,是一串HEX编码的十六进制数据帧。为了更直观地在管理平台展示温度、湿度和空气质量这些数据,管理平台需要对数据帧进行处理。通过上文所述的计算方法,管理平台可以正确地显示实际的数据。
4) 根据测试节点ID进行筛选
由于一个LoRa服务器可以接入很多的LoRa网关,一个网关又支持上千个测试节点接入,所以在服务器端会有很多的测试节点。服务器辨别各个测试节点的依据就是每个测试节点独一无二的ID,根据测试节点ID选择某个位置的测试节点比较繁琐。为了解决这个问题,管理平台应该具有根据节点ID进行筛选的功能,方便管理员通过按钮直接访问特定的测试节点。
4 结束语
本文进行了LoRa物联网平台的需求分析,针对需求,对物理网平台进行了总体设计,将平台分解为用户节点终端、LoRa网关、LoRa服务器、管理平台四个模块。其中,传感器和传输节点之间通过串口通信传输数据,节点接收数据之后通过LoRa调制方式发送给网关,服务器为所用设备公司提供的远程服务器,在PC端编写数据读取窗口读取服务器上接收的网关数据。
参考文献:
[1] 刘琛,邵震,夏莹莹. 低功耗广域LoRa技术分析与应用建议[J]. 电信技术,2016(5).
[2] 龚天平. LORA技术实现远距离、低功耗无线数据传输[J]. 电子世界,2016(10).
[3] 胡江波,颜欢. 基于物联网的无线传感网络平台[J]. 电脑知识与技术,2015,11(6).
[4] 夏莹莹,刘琛,邵震. LPWA,物联网产业发展的新机遇[J]. 通信企业管理,2015(10).endprint