随着人们对居住环境的舒适度、便捷性和安全性需求的日益提高,智能家居系统应运而生。智能家居系统的核心功能是实现家用设备运行状况的实时监测和传输,主要包括:安全防盗报警;火警、水电、煤气泄漏等实时监测和自动报警;室内温度、湿度、灯光自动调节和遥控等[1]。因此采集和传输各种设备的运行信息是保证智能家居系统正常运行的关键。MB90F462是Fujitsu公司生产的一款通用16位单片机,最小指令周期仅为62.5m,适用于工业控制和高速实时数据处理等场合;同时,该芯片具有多功能定时器和多脉冲发生器,适用于交流感应电机和直流无刷电机的控制。本文利用MB90F462丰富的片内资源设计了一款智能家居系统的低速数据采集卡。
1系统结构及功能概述 根据智能家居系统在线设备比较多的特点和方便控制的需求,数据采集卡应具有足够的输入、输出接口和远程通信功能。基于MB90F462的数据采集卡的系统结构如图1所示。系统按功能可分为以下几个模块:8路模拟量输入;8路数字量输入;GSM短信数据传输;RS-232、RS-485通信;GPRS数据传输;实时时钟;状态指示;EEPROM数据存储。
2 主要功能模块的设计2.1信号输入模块
在智能家居系统中,需要采集的数据信息包括空气温度、湿度、灯光的调节和水、电、煤气、烟、火等报警信息,按照信号的性质可分为模拟量数据和数字量数据两类。该数据采集卡可支持的输入电平有5V、3.3V、RS-232和RS-485接口。
MB90F462带有8路8/10位精度可选的A/D通道,可供输入8路传感器的模拟量信号。对于温度、湿度、灯光、水流量等信息,可通过相应的传感器将设备的实时数据通过A/D通道采集到管理中心。由于该系统数据量不大,软件设计采用查询的方式来检查各路A/D的采样完成标志,并读入数据至管理中心的计算机中。A/D采样需要设置的寄存器包括:ADER、ADCS1、ADCS0、ADCR1和ADCR0。A/D转换共有四种可选模式:单步转换模式1(运行时允许重复激活)、单步转换模式2(运行时不允许重复激活)、连续转换模式(运行时不允许重复激活)、停止转换模式(运行时不允许重复激活)。
对于设备的报警信息和一些特殊的开关量,利用MB90F462的8路外部中断对数字量输入信号进行触发或脉冲计数。由于外部中断和GPIO管脚是复用的,所以使用外部中断时必须设置相应的管脚为输入。每两个外部中断共用一个中断控制寄存器,使用外部中断时需要设置的寄存器有ICRXX、ENIR、ELVR和EIRR。中断信号的触发信号电平可以为高电平、低电平、上升沿或下降沿。使用外部中断之前和中断处理完成后要清除标志位。
2.2短消息通信模块
为了更方便地服务于用户,智能家居系统采用GSM短消息(SMS)服务来实现远程报警和遥控功能,用户通过个人移动电话即可监测家用设备的实时状态和报警信息,同时还可通过发送短消息远程控制某个设备的开关。SIEMENS公司的GSM无线模块TC35具有可靠的数据、语音、短消息服务和传真四种数据传输功能。该模块的工作电压为3.3~5.5v,可以工作在900MHz和1800MHz两个频段,所在频段功耗分别为2W(900MHz)和1W(1800MHz)。TC35的数据接口采用串行异步收发,符合ITU-T RS-232接口电路标准,工作在CMOS电平。数据接口配置:8位数据位、1位停止位、无校验位,可以在300bps~115Kbps的波特率下运行,支持的自动波特率为4.8~115Kbps(14.4Kbps和28.8Kbps除外)[2]。
在进行短信通信之前,通过在/IGT管脚输出一电压下降沿激活GSM模块,待模块稳定之后,设置短信服务中心号码和数据格式,并进行短信收发、删除、查询等操作。GSM的短消息程序设计流程如图2所示,用于SMS通信的AT指令如表1所示。
2.3 GPRS通信模块
与传统的GSM相比,GPRS通信的特点是终端可移动、接入时间短、传输速度快、按流量计费、可接入Internet网、时时在线[2]等。GPRS网络使用TCP/IP协议栈进行组网,可以实现与Internet网络的无缝连接,但是在传输时数据格式应该符合TCP/IP协议栈的数据包格式。GPRS网络为实现点对点通讯,在数据链路层上使用PPP协议,物理层上使用串口通信。因此,实现基于GPRS的数据传输系统时需要对数据进行打包,并需要在数据链路层上实现PPP协议[3]。基于TCP/IP专用模块的GPRS远程数据传输的流程如图3所示。
基于TCP/IP专用模块的移动终端主要由数据获取模块(数据采集卡)、数据打包模块和数据发送模块组成。数据打包模块采用ConnectOne公司生产的Iconnector模块,数据发送模块采用SIEMENS公司生产的具有GPRS功能的GSM手机模块MC35。在Iconnector内部的Flash中存储有Internet协议栈,支持PPP、IP、UDP、TCP、DNS、SMTP、POP3、HTTP、FTP、Telnet等几乎所有的网络协议。通过AT+i指令设置并控制Iconnector,以实现数据的打包。Iconnector有两个标准的RS-232串行接口,在标有Modem字样的一端与MC35相连接,在另外标有Device字样的一端与数据采集卡相连接。用于GPRS数据传输的AT+i指令如表2所示。
2.4实时时钟模块
为了合理有效地管理各个用户的数据,特别是一些报警数据,应该记录其出现的实时时间。该数据采集卡采用了美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能;DS1302与CPU同步串行通讯,接口只需三根线:/RST、I/O、SCLK;一次可以读写1个字节数据或31个字节的字符串;共有七个数据寄存器,即秒、分钟、小时、日期、月份、周和年份寄存器;命令字的地址从80H~8DH,奇数为读,偶数为写;一个时钟周期由下降沿开始,上升沿结束;写入数据时,在时钟的上升沿期间数据必须保持有效,读出数据时,在时钟的下降沿期间数据有效;如果,RST输入低电平,中止所有的数据传输并且I/O呈高阻态;数据输入/输出的时序是首先写入一个字节的命令字节(读或写),后面紧跟8个时钟周期读出/写入一个字节的数据。
虽然DS1302的功耗很小,但是如果要长时间保证时钟正常,最好选用小型充电电池或0.1F以上的超级电容作为备用电源。如果断电时间较短,可以用漏电较小的普通电解电容器代替。DS1302在第一次加电后必须进行初始化操作,之后即可按正常方法调整时间。
此外,系统还配置了RS-232、RS-485接口和EEPROM数据存储器,方便与其他设备的连接,并实现掉电数据保护功能。
3 Accemic MDE调试 Accemic MDE是目前市场上能够调试Fujitsu 16LX系列不带仿真器的单片机的首选工具,其监控内核与应用程序是并行运行的,所以了解其监控内核的工作方式非常重要。使用Accemic MDE进行调试应严格按照如下步骤进行:
(1)在启动Accemic之前按以下步骤连接硬件(勿接电源)
(a)将MB90F462置为编程状态,即MD0、MD1、MD2、P00、P01分别设为ON(=0)、OFF(=1)、OFF、ON、ON。
(b)用串行电缆连接目标板的Bootloader-UART和PC机的COM端口,(对于MB90460系列,UART0为Bootloader-UART)。
(c)给目标板加电。
(2)启动Accemic调试环境
(a)打开preference│systerm菜单,设置CPU类型、封装形式、工作时钟、倍频数、通讯波特率、复位线路和COM端口号等。
(b)按下"Download Monitor"按钮导入监控内核;
(c)使目标系统处于复位状态,将单片机切换到工作
状态,即MD0、MD1、MD2、P00、P01分别设为OFF、OFF、ON、X、X。
(d)退出复位状态,此时可以通过监控内核访问目标系统。
(e)按下"Connect"按钮开始连接调试。
(3)Aecemic MDE调试注意事项
(a)调试前将位于Accemic MDE的安装目录C:\programs\AccemicMDE\include下的文件"monitor.asm"添加到用户工程中;如果要使用目标信息功能,要在应用程序中包含"monitor.h"文件(与monitor.asm在同一目录下)。
(b)如果Bootloader-UART未使用外部时钟,不要使用改变PLL时钟寄存器的功能。PLL时钟可以通过"start.asm"中的设置来修正,确保其中CLOCKSPEED的设置为NOCLOCK。
(c)调试时不能改变Bootloader-UART中断级别及Bootloader-UART的寄存器设置,注意在文件"vectors.c"中不要覆盖Bootloader-UART的中断级别。
(d)如果要使用看门狗定时器,需要开启Accemic MDE的看门狗定时器自动更新功能,即在程序中调用acc_WatchdogEnable()函数。
(e)调试中为了让Monitor能够进入中断服务程序中的断点,必须满足两个条件:一是在程序中允许中断,即调用_EI()函数;二是中断服务程序的中断级别高于7(因为Bootloader-UART的中断级别是7)。
(f)MB90F462带有两个UART,其中UART0是BootloaderUart,用于在线调试和烧录程序,也可以和用户程序复用。复用时需要调用Accemic MDE中定义的函数acc_KernelUART(1),参数默认值为1,表示UART0用作正常的用户程序通信;参数默认值为0,表示UART0用作调试接口,用户程序中没有用到UART0时不需要调用此函数。
综上所述,该数据采集卡提供8路模拟量输入及8路开关量输入接口,具备两路RS-232接口,支持RS-485、RS-232、3.3V、5V等多种输入电平,可以实现现场数据采集和远程传输,远程通讯及传输方式有GPRS和SMS;而且可以对现场设备实行远程开关量控制。该数据采集卡传输与协议转换透明化,使用方便、可靠,而且配备系统配置和维护接口,方便现场维护,可普遍应用于远程监控、远程仪表数据读取等场合。