1、第4章 LTE无线通信技术开发4.6 LTE道路安全预警系统开发与实现EducationSolutions目录ContentsInternet+LTE网络设备报警场景LTE数据接收与反馈机制LTE数据接收与发送接口20:10/3开发场景:道路安全预警系统设计智慧交通中引入地质预警系统变的尤为重要。其工作原理是,在关键路段设置地质预警系统,当检测到地质灾害时可以及时上报道路监测危险警报,为道路管理部门提供道路保障的安全信息指示,降低路网道路维护成本。道路安全监测如下图所示:20:10/4任务目标智慧交通系统中的道路安全监测系统是保证路网安全保障的重要环节,本节以道路安全监测系统为例学习在应用接口
2、下的报警节点的程序开发,学习并掌握控制节点的操作逻辑和应用接口的使用。20:10/5安防类程序逻辑分析远程信息预警可以归纳为四种逻辑事件,逻辑事件归纳如下:节点安全信息定时获取并上报。当节点监测到危险信息时系统能迅速上报危险信息。当危险信息解除时系统能够恢复正常。当监测到查询信息时节点能够响应指令并反馈安全信息。20:10/6安防类程序逻辑分析安防类程序流程:20:10/7安防类程序逻辑分析安防类协议设计:1)每条数据以“”作为起始字符;2)“”内参数多个条目以“,”分隔;3)数据上行格式参考:value=12,status=14)数据下行查询命令参考:value=?,status=?,程序返
3、回:value=12,status=1协议类型协议格式方向说明发送协议 shockStatus=X节点到远程设备X表示安全状态查询协议 shockStatus=?远程设备到节点查询节点安全状态20:10/8安防类程序接口分析数据警报程序流程20:10/9安防类程序接口分析传感器应用接口函数:函数名称函数说明sensorInit()硬件设备初始化sensoUpdate()上传传感器实时数据和报警状态sensorCheck()实时监测传感器报警状态,并实时预警上报ZXBeeUserProcess()解析接收到的下行控制命令PROCESS_THREAD(sensor,ev,data)传感器进程20:
4、10/10安防类程序接口分析无线数据包收发函数函数名称函数说明ZXBeeInfSend()节点发送无线数据包给汇集节点ZXBeeInfRecv()处理节点收到无线数据包无线数据包解析函数函数名称函数说明ZXBeeBegin()增加ZXBee通信协议的帧头“”ZXBeeEnd()增加ZXBee通信协议的帧尾“”并返回封包后的数据包指针ZXBeeAdd()ZXBee通信协议的数据包中添加数据ZXBeeDecodePackage()对接收到的无线数据包进行解包20:10/11安防类程序接口分析道路安全预警系统设计20:10/12项目实践硬件功能设计从上图中可以得知,光照检测使用了外接传感器,外接传感
5、器使用的是BH1750,通过IIC总线与CC2530 ZigBee芯片进行通信。BH1750传感器原理图如下:20:10/13项目实践通信协议设计 协议类型协议格式方向说明发送协议 shockStatus=X节点到远程设备X表示安全状态查询协议 shockStatus=?远程设备到节点查询节点安全状态20:10/14 PROCESS_THREAD(sensor,ev,data)函数项目实践PROCESS_THREAD(sensor,ev,data)static struct etimer et_update;static struct etimer et_check;PROCESS_BEGIN
6、();ZXBeeInfInit();sensorInit();etimer_set(&et_update,CLOCK_SECOND*20);etimer_set(&et_check,CLOCK_SECOND/10);/100 hzwhile(1)PROCESS_WAIT_EVENT_UNTIL(ev=PROCESS_EVENT_TIMER);if(etimer_expired(&et_check)sensorCheck();etimer_set(&et_check,CLOCK_SECOND/10);if(etimer_expired(&et_update)sensorUpdate();etim
7、er_set(&et_update,CLOCK_SECOND*20);PROCESS_END();20:10/15传感器监测报警代码项目实践void sensorCheck(void)static char lastShockStatus=0;static uint32_t ct0=0;char pData16;char*p=pData;/更新震动状态updateShock();ZXBeeBegin();if(lastShockStatus!=shockStatus|(ct0!=0&clock_time()(ct0+3000)sprintf(p,%u,shockStatus);ZXBeeAdd
8、(shockStatus,p);ct0=clock_time();if(shockStatus=0)ct0=0;lastShockStatus=shockStatus;p=ZXBeeEnd();if(p!=NULL)int len=strlen(p);ZXBeeInfSend(p,len);20:10/16传感器驱动函数函数名称函数说明vibration_init(void)震动传感器初始化get_vibration_status(void)获取震动传感器状态20:10/17项目实践任务验证地址中输入LTE节点地址:LTE:868323027919627,数据输入:shockStatus=?,可以查询状态。20:10/18项目思考LTE的危险报警场景有哪些?LTE危险报警为何要定义数据协议?LTE的危险报警使用了哪个接口函数?