基于nRF2401A的家庭智能系统的设计与实现

2015-12-17 05:11
武汉轻工大学学报 2015年2期
关键词:节点

董 萍

(三门峡职业技术学院 信息传媒学院,河南 三门峡 472000)



基于nRF2401A的家庭智能系统的设计与实现

董萍

(三门峡职业技术学院 信息传媒学院,河南 三门峡 472000)

摘要:从家庭智能系统的发展现状及存在问题出发,结合nRF2401A的特点,指出目前nRF2401A与家庭智能系统结合的必要性及其存在的优势。并从硬件和软件方面对nRF2401A无线通信系统进行开发,重点从系统BOOTLOADER的移植、Linux内核驱动开发、nRF2401A内核驱动开发三个方面阐述了设备驱动程序的设计及其实现过程,并对系统进行了分析与测试。

关键词:nRF2401A;家庭智能;ARM;节点

1引言

随着人们生活水平的不断提高以及计算机技术、网络技术、通信技术、物联网技术的不断发展,智能化的家庭智能系统越来越受到人们的欢迎,正逐渐走向人们的生活中,不断改善着人们的生活水平和生活方式,以人为本、舒适、便利、智能化已成为家庭智能系统的重要设计理念,也成为必然的趋势。在房地产产业快速发展的今天,人们对于住宅的舒适度、安全性、智能化也提出了更多要求,希望将与家庭生活有关的各种应用子系统有机地结合起来,更大化的优化人们的生活方式,为居住者提供安全、便利、高效、舒适的家庭环境。“以人为本、舒适、便利、智能化”已成为家庭系统的重要设计理念,家庭智能的出现得益于现代计算机技术、通讯网络技术和自动控制技术的飞速发展。家庭智能系统就是在这个背景下产生的[1]。

2家庭智能系统的定义、发展现状及存在的问题

2.1 家庭智能系统的定义

家庭智能系统是利用计算机技术、网络技术、自动化等技术,有机结合与人们日常居住环境中有关的不同子模块,通过无线节点进行统一管理,使居住者通过各类通信手段从中获取各类控制指令,并能够根据网络提供的信息做出智能判断和执行,达到使人们的生活更加便利、舒适和具有安全性的目的[2]。家庭智能系统能够额外提供高品位、舒适宜人和安全的家居生活方式,由原来的用户主动参与管理转变为自动能动的自动化管理方式,因而能够为居住者提供更加全面的信息,并为居住者制定日程计划,增强家居生活的合理性,控制家中各类能源和电器的使用[3]。

2.2 家庭智能系统发展现状

20世纪80年代,一些经济比较发达的国家提出了“智能住宅”的概念。欧美、加拿大、日本和澳大利亚等世界上的发达国家鉴于居住条件的进步,先后提出了种类繁多的智能家居解决方案。美国电子工业协会提出并完善了世界上首个智能家居的解决方案,以及其电气化协议标准。发达国家的智能家居解决方案在本国内均被广泛的采用,目前已经有近 10 年的发展历史,最初采用家庭网络体系结构[4-5]。目前家庭智能系统主要有基于TCP/IP网络、EIB 智能控制系统、基于无线控制系统、基于电力载波控制系统四大类,但是国内很多从事家庭智能的厂家基本上还是采用来自国外的技术,具有规模小、没有形成主流标准的特点。家庭智能今后的发展趋势主要为智能化、网络化、绿色化。

2.3 家庭智能系统存在的问题

家庭智能系统存在以下几个方面的问题[1]。

(1)成本过高。家庭智能系统的主要问题在于其成本高昂,由于部署范围较小,开发成本居高不下。因此,目前最主要的问题是如何将成本降下来,而本设计的主要目的也是从这一点出发;

(2)系统扩展困难。目前的家庭智能系统的另一个主要问题是目前各类在售系统功能较为简单,且扩展十分麻烦。本设计的主要设计创新点在于加入了可扩展性,系统在刚推出时可以较少功能,随着开发进度可以不断的推出新的功能并可随时并入用户家中,连续不断的推出新产品也可以增加用户的接受度。

(3)系统安全性不高。如果家庭智能系统被黑客劫持,就会给用户带来非常严重的后果。目前的家庭智能系统的安全性一般采用简单的加密方式,对黑客防范性不高,本设计对此点进行了技术改进,引入了加密算法,有效的提升了对黑客的抵抗力。

3嵌入式Linux及与家庭智能系统结合的必要性

3.1 嵌入式Linux

嵌入式Linux系统包括输入/输出功能和控制逻辑,具有开发性能高、稳定性强、多任务、独立性高、安全性能高的特点,系统采用模块化设计方法,能够基于用户的需求合理的增减系统功能,增强操作系统的可伸缩性。

3.2 嵌入式Linux应用在家庭智能系统中的优势

嵌入式Linux操作系统具有能使不同用户拥有相应权限的多用户权限,它的出现为家庭智能的发展提供了新的方向。充分挖掘嵌入式 Linux 操作系统的优势能够改善家庭智能的弊端,不仅实现存储海量数据、设计美观的界面、操作的方便和便于与网络上的其他计算机信息共享,而且能实现家庭系统的智能化,自动化,舒适化。

4嵌入式Linux的开发

4.1 从硬件方面进行开发

4.1.1系统功能划分

本设计将智能家居系统分为中央控制节点和外围传感器子节点两大部分。

中央控制节点的主要工作分为两部分:查询和接收来自子节点的信息和接收来自用户的操作指令。在子节点设计过程中,主要包括以下几个节点。

(1)安防子节点。该子节点主要安装于各个窗户部位, 采用红外线做为安防信号,一旦中央节点发出驻防命令,该子节点就会激活,开始发射红外线组成红外光栅。一旦光栅被阻断,就会立即向中央节点发送警报,并根据系统设定决定是否激活声音报警器。

(2)安全子节点。该子节点的主要功能是监测室内的空气中是否有可燃气体或者处于火灾状态。一旦室内烟雾或燃气水平超过阈值,本子节点就会向中央控制节点发送报警信息,并根据系统设定决定是否立即关闭室内电源系统。

系统整体架构如图1所示。

图1 系统整体架构如图

4.1.2系统硬件系统选型

本设计的智能家居系统中央控制节点采用ARM720T处理器SEP4020,该处理器具有价格低廉、可靠性高、且具备MMU、能够支持嵌入式Linux系统、资源丰富的特点,能够用于用户交互设备和控制系统中。集成了LCD控制器、网卡控制器、DMA控制器、多通道定时器、内嵌EMI接口、海量外部中断。SEP4020处理器能够为用户提供简化的硬软件设计,并提供丰富的开发接口。

本设计为中央控制节点设计了LCD、矩阵键盘、GSM模块、DS18B20温度模块和nRF2401A无线收发模块。这些模块与ARM处理器的架构图如图2所示。

图2 中央节点外部模块连接图

其中LCD和矩阵键盘由SEP4020的厂家提供SDK开发环境支持,本设计为实现用户远程操作加入了GSM模块和nRF2401A无线模块。nRF2401A是由Nordic公司生产的单芯片无线收发芯片,工作于2.4—2.5 GHz的全球免申请(ISM)频率上,使用SPI端口与CPU通信,并且自带了硬件CRC校验协议、突发跳频传输、可编程硬件地址等设计,极大的简化了软件设计,并且降低了工作功耗,是非常适合于工作在家庭环境中的一款无线芯片[6]。

在本设计中,用户是通过短信进行远程操作的,因此需安装短信模块。GSM模块与ARM处理器通过UART接口连接,ARM处理器通过AT指令控制GSM模块。本设计选择SIM300作为GSM模块。

4.2 从软件方面进行开发

智能家居系统的软件系统分为两部分。

第一部分是中央控制节点软件系统。中央控制节点为了实现较为复杂的软件功能,例如LCD显示、键盘控制、身份识别等,采用了Linux作为软件系统平台。如图3所示,中央控制节点的软件总体架构图主要分为以下几个层次。

图3 中央节点软件总体架构图

(1)应用层。本层中主要实现和运行Linux应用程序,例如minigui、键盘程序、密码识别程序等,这些应用程序不参与硬件操作,仅实现对应的应用功能。应用程序可以从内核驱动层获取来自硬件的所需数据。

(2)Linux内核驱动层。本层位于Linux系统内核中,主要对应于对应的硬件操作平台,代码高度匹配硬件操作。

(3)HAL层。本层是位于Linux操作系统内核(包含驱动)与硬件电路之间的接口层,其目的在于将硬件进行抽象,以便隐藏硬件平台的细节,能够为上层软件开发者提供统一接口,从而实现上层软件的硬件无关性,增强其通用性。而如果从软件测试的角度出发,硬件的抽象化使得软硬件测试工作能够并行进行,进而提高的项目的开发效率。

第二部分是各子节点的软件系统。子节点由于硬件资源有限,无法运行大型操作系统,因此软件采用前后台模式在ARM7处理器上运行,其软件架构如图4所示。子节点的软件架构分前台程序和中断后台程序两部分组成。前台程序主要进行轮询操作,应答来自中央节点的操作指令并由硬件执行。

图4 子节点软件架构图

5设备驱动程序的设计与实现

5.1 系统BOOTLOADER的移植

软件系统是家庭智能系统的核心和基础,设备驱动程序的设计关系着软件系统的成功与否。在基于ARM体系的嵌入式系统中,在存储器的起始地址处,会有一小段称为Bootloader的系统引导代码,其作用主要用于在系统加电启动时,对相关硬件进行初始化,建立内存管理功能,为Linux或其他操作系统准备好使用环境。同时,具有能够使用Flash读写、TFTP协议栈数据的传输功能的作用,能极大的提高系统的传输速率。

本设计在U-Boot的基础上,根据硬件平台和SEP4020的支持系统,进行了Uboot系统的裁剪和配置,得到适用的Uboot程序。Uboot移植主要分为以下三个阶段。

第一个阶段是开启网络支持,能够使用TFTP协议传输文件。

设计中采取DM9000的支持代码的网卡设计。按照在Uboot代码路径:include/configs/sep4020.h中添加对DM9000的支持、在/drivers/net/dm9000.c中的eth_init函数中屏蔽掉MII接口所使用的代码部分、在/drivers/net/dm9000.c中将函数dm9000_halt()中的所有内容删除、在读取IMR寄存器时,重新设置一下地址指针四个步骤完成。以上四个步骤完成后,Uboot的网络功能与TFTP功能就能够正常使用。

第二个阶段是添加NAND Flash驱动。

这部分需要完成两部分的信息修改工作(1)Nand_scan()函数处于驱动程序的最底层,能够用于识别Flash的容量、大小、块大小和总块数等信息。修改本函数内的K9F1208U0C芯片信息。(2)修改board_nand_init()中关于SEP4020的Flash控制器部分的初始化、Flash时序控制和寄存器设置相关的部分。完成以上两个步骤后,NAND Flash驱动程序的移植工作就完成了。

第三个阶段是NAND Flash的启动控制。

在board_nand_init()中加入SYS_SETUP1的电平判断代码,用来实现对NAND启动的功能。

5.2 Linux内核驱动开发

根据图2中央节点外部模块连接图,可知,中央控制节点需要实现LCD显示、5x5矩阵键盘、文件系统、DS18B20温度传感系统和nRF2401A五个模块。其中LCD、矩阵键盘与文件系统的驱动程序SEP4020的SDK已经提供,可以通过内核裁剪的方式加入;而DS18B20与nRF2401A的驱动则缺失,需要进行自行开发设计。

Linux内核驱动程序通过module_init()和module_exit()两个系统接口进行注册和注销。一旦驱动程序模块在系统注册,应用程序就可以通过VFS虚拟文件系统提供的read、write、seek等系统接口对驱动程序进行操作,通过驱动程序操作硬件。

5.3 nRF2401A内核驱动开发

nRF2401A的驱动程序需要完成以下四个步骤。

(1)通过修改Kconfig配置脚本为nRF2401A在内核中建立配置项。程序代码如下。

config SPI_NRF2401

tristate "Device driver for SPI NRF2401A"

depends on SPI

default y

(2)然后在Makefile中加入nRF2401A的编译语句。

obj-$(CONFIG_SPI_NRF2401A) += sep4020_nrf2401a.o

此时,make就会根据配置项CONFIG_SPI_NRF2401A的值来决定是否编译nRF2401A的驱动程序。

(3)编写实现nRF2401A的驱动程序代码。

(4) nRF2401A的内核驱动程序的实现,以程序流程图的方式进行阐述。

如图5所示,nRF2401A的内核驱动分为发送和接收两个流程。发送时将CE片选设置为1,然后写入数据;读取时需要判断DR1是否为0来判断数据是否读取完毕。

图5 nRF2401A的内核驱动发送/接收流程图

6分析与测试

本系统使用串口调试接口连接中央节点和任意一个子节点,设定初始化测试字符串0218进行发送和接收,来检测nRF2401A的驱动程序是否工作正常。

如图6所示,nRF2401A能够正常接收到来自对方的数据,说明驱动程序工作正常。该系统具备良好的通用性和稳定性的优点,能满足用户对现代家居环境的需求。

图6 nRF2401A测试结果图

7结束语

以改善人们的生活质量,为人们提供更加舒适、简便、安全、高效的生活方式为目的,以高性能的ARM 微处理器为控制核心,笔者从硬件和软件方面对嵌入式Linux进行开发,重点阐述了设备驱动程序的设计与实现过程,并对系统进行分析与测试。目前,三门峡市建业壹号城邦、天鹅堡小区已经采用该智能系统,系统为解决河南省其它地市小区的智能化作出了初步尝试,对于家庭智能系统的推广是极为有益的,对省内其他小区智能化问题的解决具有参考价值。

参考文献:

[1]黄力,周新莲.无线传感网络基于簇的数据传输可靠性研究[J].计算机应用与软件,2010(8):70-74.

[2]晋保霞.家庭智能的无线传感器网络路由协议的研究[D].重庆:重庆大学.2012.

[3]李明亮,刘小龙,牟宏磊,徐宪清.基于ARM11的家庭智能设计与实现[M].北京:北京航空航天大学出版社,2013.

[4]王淑华,陈国定,赵国炳.一种无线传感器网络能耗模型及有效性分析[J].计算机应用与软件,2011,(2):112-116.

[5]Samsung NAND Flash Memory [Z].Memory Product & Technology Division,2000.

[6]董萍.基于无线传感器网络的智能家庭系统的设计与实现[J].三门峡职业技术学院学报.2013,12(4):106-110.

Design and implementation of smart home system based on nRF2401A

DONGPing

(Information Institute of Media,Sanmenxia Polytechnic, Sanmenxia 472000,China)

Abstract:This paper begins with the current developing situation and the existing problems from smart home management system, points out the necessity and the existing advantages of combining with the nRF2401A and smart home management system, focuses on the development of the nRF2401A communication system from the aspects of hardware and software, and formulates mainly the design and realization from three aspects of the BOOTLOADER transplantation, Linux driver development and nRF2401A development, and analyzes and tests the system.

Key words:nRF2401A;smart home;ARM;node

DOI:10.3969/j.issn.2095-7386.2015.02.021

文章编号:2095-7386(2015)02-0092-06

基金项目,湖北省教育厅科学研究计划项目(D20141703).

通信作者:陆海军(1979-),男,副教授,E-mail: lhjwhpu@163.com.

作者简介:董祎挈(1991-),男,硕士研究生,E-mail: dyqwhpu@163.com.

收稿日期:2014-12-02.修回日期:2015-03-30.

中图分类号:TN 919

文献标识码:A

猜你喜欢
节点
Formation of advanced glycation end products in raw and subsequently boiled broiler muscle: biological variation and effects of postmortem ageing and storage
CM节点控制在船舶上的应用
基于AutoCAD的门窗节点图快速构建
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
抓住人才培养的关键节点