1、第3章 NB-IoT无线通信技术开发3.4 NB-IoT扬尘监测系统开发与实现EducationSolutions目录ContentsInternet+任务场景数据采集程序逻辑采集类程序接口分析项目实践22:13/3任务场景城市管理部门为给城市提供更加良好的城市环境服务,通过加大工作力度以维持良好的城市环境质量。但传统的城市环境治理都是通过定时定点的对城市环境信进行保障,这种方式维护成本过高且管理效率低下。而更智能的城市扬尘监测系统可以解决这样的问题。通过在城市路段设置传感器,当传感器监测到扬尘信息超标,则管理部门可派出清洁车辆对城市扬尘进行处理。城市道路清洁车如下:22:13/4任务目标智慧
2、城市中节点的道路扬尘信息采集与数据定时上报是智慧城市物联网中的重要环节,本节以扬尘监测系统设计为例学习在应用接口下的传感器数据开发,学习并掌握数据上报逻辑和应用接口的使用。22:13/5数据采集逻辑分析数据采集的可以归纳为四种逻辑事件,逻辑事件归纳如下:定时查询当前传感器数值。根据软件设计逻辑来决定传感器数值是否上报。根据软件设计逻辑来控制传感器上报时间间隔。能够接收到远程的查询指令反馈最新的传感器数值22:13/6采集类程序逻辑分析采集类程序流程如下:22:13/7数据识别协议分析协议类型协议格式方向说明发送协议airGas=X节点到远程设备X表示为空气质量查询协议airGas=?远程设备到
3、节点查询节点空气质量通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。22:13/8采集类程序接口分析传感器应用层程序在sensor.c文件中实现,采集类传感器接口包括传感器硬件初始化(sensorInit())、传感器节点入网调用(sensoLinkOn())、传感器数值上报(sensoUpdate())、处理下行的用户命令(ZXBeeUserProcess())、传感器采集进程(PROCESS_THREAD(sensor,ev,data))。:函数名称函数说明sensorInit()硬件设备初始化sensoUpdate()上传传感器
4、实时数据ZXBeeUserProcess()解析接收到的下行控制命令PROCESS_THREAD(sensor,ev,data)传感器采集进程22:13/9采集类程序接口分析远程传感器数据采集程序逻辑流程设计如下:22:13/10采集类应用接口分析无线数据包收发函数:无线数据包解析函数:函数名称函数说明ZXBeeInfSend()节点发送无线数据包给汇集节点ZXBeeInfRecv()处理节点收到无线数据包函数名称函数说明ZXBeeBegin()增加ZXBee通信协议的帧头“”ZXBeeEnd()增加ZXBee通信协议的帧尾“”,并返回封包后的数据包指针ZXBeeAdd()ZXBee通信协议的
5、数据包中添加数据ZXBeeDecodePackage()对接收到的无线数据包进行解包22:13/11采集类应用接口分析扬尘监测系统设计如下所示:22:13/12项目实践硬件中使用了空气质量传感器作为空气质量信息的来源,通过空气质量传感器定时获取空气质量信息并上报,以此完成数据发送。扬尘监测系统硬件框图设计如下:22:13/13项目实践空气质量传感器节点LoRaGas工程实现了畜牧气体采集系统,该程序实现了以下功能:1)节点入网后,每隔20s上行上传一次气体传感器数值。2)应用层可以下行发送查询命令读取最新的气体传感器数值。LoRaGas工程采用类josn格式的通信协议(参数=值,参数=值,),
6、具体如下:数据方向协议格式说明上行(节点往应用发送数据)airGas=XX表示为空气质量下行(应用往节点发送指令)airGas=?查询空气质量值,返回:airGas=X,X表示采集的空气质量值。22:13/14项目实践l 传感器初始化空气质量传感器初始化代码如下:void sensorInit(void)printf(sensor-sensorInit():Sensor init!rn);/初始化传感器代码airgas_init();/空气质量传感器初始化22:13/15项目实践l 传感器主动上报传感器数据void sensorUpdate(void)char pData16;char*p=p
7、Data;updateAirGas();ZXBeeBegin();/智云数据帧格式包头sprintf(p,%.1f,airGas);ZXBeeAdd(airGas,p);p=ZXBeeEnd();/智云数据帧格式包尾if(p!=NULL)ZXBeeInfSend(p,strlen(p);/将需要上传的数据发送到智云平台22:13/16项目实践l 无线数据包命令解析int ZXBeeUserProcess(char*ptag,char*pval)int ret=0;char pData16;char*p=pData;if(0=strcmp(airGas,ptag)/查询执行器命令编码if(0=s
8、trcmp(?,pval)updateAirGas();ret=sprintf(p,%.1f,airGas);ZXBeeAdd(airGas,p);return ret;22:13/17项目实践l 传感器驱动函数函数名称函数说明airgas_init()空气质量传感器MP-503初始化get_airgas_data()获取空气质量传感器MP-503实时气体浓度数据22:13/18项目实践项目中传感器主动上报数据的时间间隔为20s,通过ZCloudWebTools工具的实时数据查看发送的空气质量值。地址中输入NB节点地址:NB:863703036243488,数据输入:airGas=?,可以实时查询空气质量数据。22:13/19项目思考NB-IoT的数据上报场景有哪些?NB-IoT数据发送为何要定义数据协议?NB-IoT的数据发送使用了哪个接口函数?