3 软件设计及流程
3.1 单片机软件设计
单片机软件部分主要包括主程序、中断子程序、测温子程序、转换显示及存储子程序、UART通信子程序、语音播放子程序等,为了降低功耗,使用中断来唤醒单片机进行测温等工作,因此主程序部分比较简单,主要负责系统各部分初始化和中断的调用,在系统初始化完成后就直接进人睡眠模式,当中断到来时单片机退出睡眠模式,调用中断子程序实现测温、转换显示、温度数据的传输以及语音的播报和报警等功能。
3.2 蓝牙应用程序设计
本系统是基于蓝牙的串口应用模型SPP(SerialPortProfile)实现无线数据的透明传输,在核心协议栈之上编写自己的上层应用程序。CSR的蓝牙核心协议栈包括HCI、LZCAP、SDP、RFCOMM等,以固件的形式提供给开发人员,用户编写的应用程序和协议栈一起运行在CSR嵌人式环境中。在CSR程序中,不同任务之间可以异步地发送消息,每一个任务在创建的时候可以让其中一个拥有消息队列,其它的就把发给任务的消息提交给该消息队列,由任务调度程序自动运行获得任务的消息。蓝牙模块上层应用程序流程如图3所示。
4 低功耗设计
作为无线传感器,低功耗运行可以最大限度地延长设备的有效使用时间,为了获得最佳性能,设计时在电源损耗和可用性方面必须根据情况权衡使用,除了选用低功耗器件外,笔者从以下几个方面设计了电源管理程序以尽量减少无线温度传感器的功耗。
(1)由于无线温度传感器负责向控制终端传输数据,因此何时进行数据采集、何时进行数据传输可以由控制终端决定,非常适合使用休眠模式和呼吸模式,通过减少蓝牙设备在微微网中的活动达到节电的目的,并且控制终端一般接有持久的电源,所以电源管理的开销由终端来负责比较合适。把控制终端作为主设备,将电源管理程序设计在终端的应用控制层中,并由控制终端完成设备的查询、配对、建链等工作,当无线传感器与控制终端配对成功并建立RFCOMM连接后进人休眠模式,此时主从设备仍然保持着RFCOMM信道,只是不能发送和接收数据,休眠模式下信标间隔可设为15,电流大概在lmA左右。当需要进行数据传输时,退出休眠模式进人呼吸模式,通过呼吸时隙发送数据,呼吸间隔可设为20~40ms,间隔过大会带来明显延迟,当数据传输结束后再次进人休眠模式,从而尽可能地降低能耗。
(2)CSR的BlueCore芯片提供T独特的硬件节能方法—深度睡眠(Depslep)模式,进人和退出深度睡眠模式至少需要10ms,通过按钮或事件进人深度睡眠模式很大程度上降低了损耗。当用户确定将有较长时间不使用无线温度传感器时,可通过控制终端发送事件消息进人深度睡眠模式,需要使用时再通过消息快速退出。在深度睡眠模式下电流一般可控制在50拼A左右。
(3)凌阳单片机SPCE06lA也可以应用CPU的睡眠模式,且A口具有键唤醒功能,将BCM02的PIOS与单片机的IOA7相连接,当蓝牙模块退出休眠模式,发送指令进行数据采集时,PIOS输出高电平,通过IOA7电平的变化产生中断来唤醒CPU进人工作状态。