基于无线通信芯片的多路消防栓无水监测系统设计
,可以由串行输入口DI的3位控制字指定通道。CYGl512传感器将压力信号以电压信号的形式提供给ADC0832。选择ADC0832的CHl为单端输入工作方式,CHO为不工作。所以,由DI端输入的控制字为“111”,可将DI固定接高电平。当单片机的P1.2口将ADC0832的CS脚置低电平时,CLK的前3个脉冲上升从DI端输入控制字“111”,接下来的8个脉冲完成转换过程,转换后的8位数据就从P1.O口读入到单片机中。
状态指示部分是一个发光二极管,指示系统工作状态。灭状态表示水管水压正常,当发光二极管亮时表明水管没水,当二极管闪烁时表明水管水压偏低。
3 系统的软件设计
系统的软件设计其主要部分为通信处理模块和消防栓信息采集模块两大部分的设计。
通信处理模块的软件设计主要有程序初始化部分、RS 232通信部分和无线通信部分。串口初始化。W77E58的串口O工作在工作方式1,通过RS 232与PC机通信。串口1工作在工作方式1,控制nRF401通信。两个串口均使用定时器1控制通信波特率,波特率定为9 600 b/s。
由于无线通信的特殊性,外部干扰使得误码率较高。因此,软件设计首先要保证能够识别噪声和有效数据,通信协议的设计就显得十分重要。设计中采用如下通信协议:
(1)数据发送使用查询方式,接收使用中断方式。
(2)数据帧包含帧首、帧尾、地址、数据及校验部分,数据帧的格式如图4所示。帧首采用双字节0x55和0xAA,帧尾使用0x01结束;地址是用双字节地址,共16b,地址分配上,各个电流采集模块地址不相连,使其保持一定的容错性;数据部分为一个字节;地址部分和数据部分使用16进制ASCII送;帧的校验部分使用CRC4校验。
(3)接收方检测到连续的0x550xAA字节,表示接收到有效的数据帧,如果帧校验通过,接收方根据命令请求后发送相应数据,若该帧结构非法,则丢弃该帧,不做任何处理。
(4)发送方在发送查询请求后,将启动监控定时器并等待接收应答,如果在规定的时间内没有收到相应的数据应答,发送方将重新发送请求,并进行错误计数,以免数据丢失。如果错误计数达到一定值,发送方停止发送请求,进入错误处理。
消防栓信息采集模块软件设计,当从机收到自己的地址并向主机应答后,转为接收模式。如随后一段时间内再没有收到主机的查询信号,则认为主机已经正确接收到该从机发送回的应答信号,完成一次正确通信,从机转为接收模式。消防栓信息采集模块部分流程图如图5所示。
4 结 语
本系统充分考虑了环境对通信的干扰,在调试中发送数据时,应首先尝试不断发送0X55AA,以检验数据收发的误码率,如果误码率校大,应对电路进行重新设计。由于采用无线通信芯片nRF401,进行多点数据采集十分方便、快捷。尤其适合对厂房、仓库等复杂场所控制。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)