面向LoRa的物联网平台研究

2018-02-02 05:51朱庆华景妮琴常莹
电脑知识与技术 2018年1期
关键词:物联网

朱庆华+景妮琴+常莹

摘要:该文面向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

猜你喜欢
物联网
基于无线组网的智慧公交站点信息系统研究与实践
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
中国或成“物联网”领军者