图2 系统硬件电路框图。
2.1 ARM 中央控制模块
ARM 中央控制模块由ARM9 控制器、FLASH、SDRAM、电源及复位模块、LCD 触摸屏及相关外围电路组成。系统选用SAMSUNG 的基于ARM920T 内核的16/32 位RISC 处理器S3C2440 作为控制器。
S3C2440 处理器功能强大、性价比高、功耗低,除具有一般嵌入式芯片所具有的总线、SDRAM 控制器以外,还具有丰富的扩展功能接口,内部集成了TFT/STN LCD 和触摸屏控制器、SD & MMC 存储卡接口和摄像头接口等大量的功能模块,便于构建外围电路,视频处理能力非常强。系统采用64M 的NAND 型Flash K29F2808 来存放系统启动代码、内核代码及根文件系统;SDRAM 选用2 片HY57V561620CTP-H 构成容量为64MB 高速动态随机存储器。
2.2 ZigBee 模块
为了满足家庭智能系统简洁、方便的要求,系统采用ZigBee 无线通信技术组建家庭网络。ZigBee 是一种新兴的短距离、低功耗、低数据速率、低成本的双向无线通信技术。ZigBee 模块采用支持IEEE802.15.4 协议,技术成熟的CC2430 芯片。经测试,室内有效传输距离为30~40m,完全能够覆盖普通家庭环境。下面从抗干扰及功耗两方面阐述本设计的可行性。
2.2.1 Zigbee 抗干扰性能分析
ZigBee 技术的抗干扰特性主要是指抗同频干扰。
IEEE802.15.4 标准中提供了很多抗干扰机制[2],比如:空闲信道评估,动态信道选择,信道算法等。实验证明,正确选择信道,增大频偏,ZigBee 与Wi-Fi可以近距离(小于2m)共存;蓝牙采用调频技术,对ZigBee 的干扰很小,两者能很好的共存;WirelessUSB可以根据干扰环境自动变换信道,因此完全可以同ZigBee 共存;此外,为了减小无绳电话(2.4GHz)对ZigBee 的干扰,设计中ZigBee 设备放置在离客厅中心较远的地方,使干扰源尽量远离ZigBee 网络,经测试可行;当微波炉与ZigBee 设备距离大于1m 时,干扰则可以忽略不计。因此ZigBee 在2.4GHz 频段能可靠地与Wi-Fi、蓝牙、WirelessUSB 以及家用无绳电话和微波炉共存。
2.2.2 Zigbee 功耗分析
ZigBee 模块支持多种工作模式,包括运行(发送与接收)、空闲和休眠等。通过监测传感器节点的正常工作,发现节点大部分时间处于空闲状态。而空闲模式的功率消耗与运行模式大体相同,收发模块长期处于空闲模式会消耗大量能量。因此,当节点空闲时应使其处于休眠状态。当需要节点工作时,通过外部中断或定时中断将其唤醒,进入运行状态。本设计经测试,系统运行一个月后,电池电压变化轻微,实际应用中两节普通5 号干电池使用寿命超过一年。
2.3 GPRS 模块
GPRS(General Packet Radio Service),即通用分组无线服务技术,是一种以GSM 为基础的数据传输技术。GPRS 采用分组交换技术,支持资源共享,频带利用率高,数据传输率高。GPRS 最高传输率可达171.2kbit/s,支持X.25 协议和IP 协议;用户永远在线且按流量、时间计费,通信成本低。因此,将GPRS技术应用于家庭智能控制系统的无线数据传输是最佳选择。
GPRS 模块主要功能是通过GPRS 网络实现ARM控制器与户主手机之间的数据交换。经过性能与成本的综合考虑,系统选用西门子公司的MC55 GPRS 模块。
MC55 集成了完整的射频电路和GPRS 基带处理器,提供了完整的GSM 和GPRS 无线接口;支持数据、语音、短消息和传真等多种通信方式,采用TCP/IP 网络协议进行通信,GPRS 数据包最高可达1.5K;GPRS 模块与ARM 控制器采用AT 指令集通过串口进行数据通信。
图3 ARM 控制器与GPRS 模块连接图。
如图3 所示,系统采用SP3238 芯片实现电平转换,S3C2440 通过UART1 控制MC55,通过GPRS网络采用短信或拨打电话的方式与用户手机进行通信来实现对家庭智能系统的远程控制。
3 系统软件设计
软件部分的设计主要是基于ARM-Linux,与其他嵌入式操作系统相比,Linux 操作系统具有完整的TCP/IP 协议,良好的稳定性和实时性,很好的满足了家庭智能控制系统对系统可靠性的要求;此外,Linux易于移植裁减、内核小、效率高、源代码开放并有众多的开发者,为系统的开发提供了良好的技术支持。
系统开发首先要建立交叉编译环境,然后引导bootloader,移植操作系统,装载文件系统,开发图形界面,最后编写应用程序。Bootloader 主要实现系统的快速引导,将Linux 内核加载到内存,并进行内核初始化。Linux2.6 内核具有强大的进程、中断、内存和设备管理,支持各种文件系统。
系统主程序流程如图4 所示,主程序由一系列用来实现相应功能的子程序组成,主要包括ZigBee 无线通信程序、各智能模块控制程序、GPRS 无线通信程序、图像采集压缩程序、和以太网通讯程序等。限于篇幅,这里主要阐述GPRS 无线通信的实现。
图4 系统主程序流程。
GPRS 模块程序设计主要用AT 指令编写,结合一些主要函数来实现GPRS 模块各项功能,包括GPRS模块初始化、GPRS 网络参数配置、AT 命令的收发、短信收发、拨打电话和发送彩信等。
3.1 GPRS 模块的初始化
系统启动之后,通过调用gprs_init()函数实现基本的初始化工作,包括串口初始化,MC55 的状态设置等。通过调用char gprs_getkey()函数获取键盘输入值。
3.2 AT 命令的接受和发送
GPRS 模块通过UART1 与S3C2440 进行通讯,S3C2440 通过串口发送AT 命令到GPRS 模块并读取GPRS 模块的输入。S3C2440 通过调用int send_gprs_cmd(int fd,char*send_buf)函数发送AT 命令到GPRS 模块中,并通过int read_gprs_datas(intfd,char*rcv_buf)函数读取GPRS 模块的数据。如果通信成功返回GPRS_OK,否则返回GPRS_ERR.
3.3 短信的收发及彩信的发送
GPRS 模块向户主手机发送的短信是设定好的,模块初始化时短信的内容、服务中心号码及目标手机号码都已设置完毕,出现紧急情况时,系统只需调用AT 指令即可完成短信的收发。AT+CMGS=n,发送长度为n的一条短信;命令发出后,GPRS 模块回送">",处理器收到提示符即将短信内容发给GPRS 模块,发送成功返回" OK ", 否则返回" ERR ".接收短信由AT+CMCR=指令来实现,然后处理器再根据收到的短信指令去控制各家庭智能模块。
彩信的功能主要是当家庭出现紧急情况时,将摄像头的截图以彩信形式发送到用户手机。其功能函数如下:
intmms_send(char*fro,char*to,char*subj,char*cont,char*img, long len)
参数fro 为模块SIM 卡号码;to 为户主手机号码;subj 为彩信标题;cont 为彩信的文字信息;img 为图片的地址指针;len 为图片字节数。发送成功返回MMS_OK,否则返回MMS_ERR.
4 结语
本文介绍了一种基于ARM 与GPRS的家庭智能控制系统,给出了详细的系统架构方案,从软、硬件两方面阐述了设计思路和实现方法。系统采用GPRS 技术实现了家庭智能系统的远程控制;采用ZigBee 技术组建家庭无线网络,很好的解决了主控制器与各家庭控制模块之间的通信问题,避免了繁琐的布线;有很好的实际运用价值,是未来家庭智能系统发展的一个趋势。