1、第3章 NB-IoT无线通信技术开发3.5 NB-IoT防空警报系统开发与实现EducationSolutions目录ContentsInternet+NB-IoT数据接收与反馈机制NB-IoT数据接收与发送接口NB-IoT控制应用协议设计22:13/3开发场景:防空警报系统城市人防系统将是城市设计者必须考虑的事情。另一方面就是需要城市警报信息的急时传达,如果警报信息不能及时传达,在错过了关键的时间窗口将有可能造成极其严重的损失。因此高效的防空报警系统必不可少,通过城市管理部门即可在危险的情况下远程控制可以实时的发布报警信息。22:13/4任务目标智慧城市系统中对城市安全的及时预警和避难场所时
2、城市安全建设的重要环节,本节以防空警报系统为例学习在应用接口下的控制节点的程序开发,学习并掌握控制节点的操作逻辑和应用接口的使用。22:13/5数据控制逻辑分析数据控制的可以归纳为三种逻辑事件,逻辑事件归纳如下:远程设备对节点发送控制指令,节点实时响应并执行操作。远程节点发送查询指令后,节点实时响应并反馈设备状态。控制节点设备工作状态的实时上报。22:13/6控制类程序逻辑分析远程控制程序流程22:13/7控制类程序逻辑分析控制类协议设计1)每条数据以“”作为起始字符;2)“”内参数多个条目以“,”分隔;3)数据上行格式参考:value=12,status=14)数据下行查询命令参考:valu
3、e=?,status=?,程序返回:value=12,status=1协议类型协议格式方向协议说明控制指令cmd=X远程设备到节点X表示控制内容反馈指令beepStatus=X节点到远程设备X表示设备状态查询指令beepStatus=?远程设备到节点设备状态查询混合指令cmd=X,beepStatus=?远程设备到节点执行控制后查询状态22:13/8控制类程序接口分析远程传感器设备控制程序逻辑流程设计如下:22:13/9控制类程序接口分析传感器应用接口函数函数名称函数说明sensorInit()硬件设备初始化sensoUpdate()上传传感器实时数据sensorControl()传感器控制Z
4、XBeeUserProcess()解析接收到的下行控制命令PROCESS_THREAD(sensor,ev,data)传感器采集进程22:13/10控制类程序接口分析无线数据包收发函数函数名称函数说明ZXBeeInfSend()节点发送无线数据包给汇集节点ZXBeeInfRecv()处理节点收到无线数据包无线数据包解析函数函数名称函数说明ZXBeeBegin()增加ZXBee通信协议的帧头“”ZXBeeEnd()增加ZXBee通信协议的帧尾“”,并返回封包后的数据包指针ZXBeeAdd()ZXBee通信协议的数据包中添加数据ZXBeeDecodePackage()对接收到的无线数据包进行解包2
5、2:13/11控制类程序接口分析防空警报系统设计22:13/12项目实践硬件功能设计从上图中可以得知,BUZZER为系统外部控制器件,BUZZER的开关是由STM32单片机控制的,STM32F103芯片通过输出电平信号可实现对BUZZER的操作。BUZZER原理图如下:22:13/13项目实践系统通信协议协议类型协议格式方向协议说明控制指令cmd=X远程设备到节点X表示控制内容反馈指令beepStatus=X节点到远程设备X表示设备状态查询指令beepStatus=?远程设备到节点设备状态查询混合指令cmd=X,beepStatus=?远程设备到节点执行控制后查询状态22:13/14项目实践v
6、oid sensorUpdate(void)char pData16;char*p=pData;ZXBeeBegin();sprintf(p,%u,beepStatus);/上报防空警报器状态 ZXBeeAdd(beepStatus,p);p=ZXBeeEnd();/智云数据帧格式包尾if(p!=NULL)ZXBeeInfSend(p,strlen(p);/将需要上传的数据进行打包操作,并通过zb_SendDataRequest()发送到协调器sensorUpdate(),该函数使用状态量beepStatus更新传感器数据,并通过ZXBeeBegin()、ZXBeeAdd(char*tag,c
7、har*val)、ZXBeeEnd(void)函数实现对数据的封包,最后调用zxbee-inf.c-ZXBeeInfSend(char*p,int len)函数将数据包发送给应用:22:13/15传感器控制代码项目实践void sensorControl(uint8_t cmd)if(cmd&0 x01)/根据cmd参数处理对应的控制程序Beep_on(0 x01);/开启防空警报器elseBeep_off(0 x01);/关闭防空警报器 beepStatus=cmd;22:13/16传感器驱动函数函数名称函数说明Beep_init(void)蜂鸣器传感器初始化Beep_on(unsigned char fan)打开蜂鸣器传感器Beep_off(unsigned char fan)关闭蜂鸣器传感器22:13/17项目实践任务验证地址中输入NB节点地址:NB:863703036243488,数据输入:cmd=1,beepStatus=?,可以实时控制警报灯与查询状态。22:13/18项目思考NB-IOT的远程控制场景有哪些?NB-IOT的远程控制的要点是什么?NB-IOT的数据收发使用了哪些接口函数?