嵌入式智能家居控制系统的研究与设计
扫描二维码
随时随地手机看文章
系统结构设计
本文将控制系统分为现场控制级(主机)和多个控制对象级(分机)。现场控制级设备能够收集到控制对象的各种信息,对这些数据进行处理,并能够在设定的条件下产生报警。通过该系统,可以得到家居的各种运行状态(例如,房间温度、湿度,煤气泄漏报警等),并能根据现场情况做出相应的调整控制(例如,照明及家电控制等)。其家居控制系统结构如图1所示。
图1 家居控制系统结构图
本文仅研究设计智能家居的现场控制部分,图1中的GSM和GPRS等远程通信模块作为以后系统的扩展升级。主机MCU选用ARM9芯片S3C2410,因其具有丰富的功能端口而适合设计要求和日后扩展。S3C2410嵌入式微处理器集成了众多的常用资源,例如,LCD控制器、NAND Flash控制器、SDRAM控制器、系统片选逻辑以及一些常用的通信接口等资源。
分机采用16位单片机MSP430F149,主要考虑此芯片的低功耗性能,具有超低功耗的MSP单片机可以完成分机家居现场的控制功能。报警信息的采集就是对各传感器的信息采集;对各种家电的控制是通过控制连接在家电电源的继电器来实现;现场控制手动命令是通过触摸屏来实现的。各分机通过nRF905收发模块与主机进行无线通信。各分机通过连接不同的传感器或控制器来实现不同的功能。
系统软件开发
在Windows CE.net产品的开发中,有两个重要的方面,一个是内核定制,另一个是应用程序的开发。微软在这两个方面都提供了非常好的开发工具,这就是内核定制工具Platform Builder和应用程序开发工具Embedded Visual C++。
1 操作系统平台定制
Windows CE平台的定制过程
(1)选择操作系统的基本配置,并且为特定的平台选择相应的微处理器和板级支持包BSP(Board Support Packet)。本系统终端采用S3C2410处理器,因此我们导入了和硬件平台相关的smdk2410.cec文件。
(2)利用标准开发向导,根据Windows CE的架构创建一个定制平台,根据目标硬件设备开发Boot Loader、设备驱动程序,适当的裁减、添加组件,如有需要还须对某些配置文件进行修改,然后封装所需要的各功能模块,编译生成OS镜像文件。
(3)通过以太网、USB或串口将镜像文件下载到目标设备,可以使用Platform Builder提供的调试工具查看Windows CE.net的运行情况并进行调试,若需要,进行重复配置、封装、下载及调试,直到满足要求,完成平台的创建。
(4)最后,导出相应的SDK(Software Development Kit)软件开发工具包,运行后安装到EVC中,使得可以进行特定硬件平台上的应用程序开发。SDK包含程序库、头文件、示例程序源代码和库函数使用文档,同时还包括编程指导和API参与以及设备驱动工具包(DDK)。
安装BSP
把Windows CE.net移植到新硬件平台由平台构造器(Platform Builder)完成。Platform Builder 4.2是一个定制基于Windows CE.net 4.2操作系统的嵌入式平台的集成开发环境(IDE)。我们为一个硬件平台构建CE系统,在PB里实际上就是创建平台,然后编译平台,得到CE映像文件的过程。所以我们首先需要创建一个平台。板级支持包(BSP)是连接一个硬件平台和操作系统内核功能的桥梁,所以,首先PB会要求选择BSP。
Platform Builder本身就提供了多种目标板的BSP,如果开发板和Platform Builder提供得相同,那么只需重新编译,生成相应的系统镜像下载到开发板即可。但是实际情况更多的可能是处理器相同,但是板上的各种外围硬件接口不尽相同,这时候可以通过修改Platform Builder中相同或相近处理器的BSP来完成一个新的BSP,这样可以大大减少BSP的研发时间。这里我们利用厂商直接提供的BSP,节省了开发时间,也可以提高成功率。
图2 生成系统镜像
[!--empirenews.page--]定制Windows CE操作系统镜像
PB定制基于本平台的操作系统镜像的步骤如下。
(1)选择板级支持包:本系统开发板CPU是S3C2410,所以选“SAMSUNGSMDK2410:ARMV4”BSP。
(2)选择平台类型。本文选择了手持设备。在“Available configurations”列表中,选择“Mobile Handheld”,并输入“Platform name:sbc2410”。
(3)选择基本类库及所需要的网络通信服务,平台配置完毕。
(4)右键单击“SBC2410 features”选项的“Setting…”。在对话框Build Option属性页中,选择[Enable Full Kernel Mode],Windows CE中所有线程都会运行在核心态。这会使整个系统相对不稳定,但是也可提高系统的运行效率。选择[Enable Images Larger than 32MB],Windows CE的最终运行时映像可大于32MB。
(5)利用Platform Builder进行Windows CE.net操作系统的定制和开发一个重要的步骤就是在Platform Builder提供的特性目录(Catalog)中进行特性选择。这是因为Platform Builder中已经将Windows CE.net操作系统用到的大量的组件以特性(Feature)的形式列在特性目录中。加入USB键盘鼠标支持特性,加入USB移动存储设备(U盘、移动硬盘)支持,加入打印机设备相关的驱动(如果不加入打印机设备相关的驱动,在编译应用程序时会出现“syntax error:identifier ‘LPDOCINFO’”错误),加入网络设备驱动。
(6)更改适合自己网络环境的IP地址、DNS、网关地址等网络参数,通过编辑platform.reg平台注册表文件中相关的键值,来修改网络参数。我的PC的IP:202.114.57.102,所以目标机的IP设定为202.114.57.10,在同一网段内。
(7)单击菜单Build→Build Platform开始编译系统。编译完毕,将会在C:WINCE420PUBLICsbc2410RelDirSAMSUNG_SMDK2410ARMV4Release目录下生成NK.bin和NK.nb0映像文件。编译开始大约10分钟后看到编译信息:SBC2410-0 error(s),30 warning(s)。有警告是正常的,因为某些组件是有风险的,例如,一些网络组件,所以只要没有错误,说明定制没有问题。
此时,我们用USB电缆连接主机和目标机(开发板),在PC端已安装了SAMSUNG提供的USB驱动的前提下,使用2410提供的专用下载工具DNW把生成的NK.bin和NK.nb0下载到开发板中,这样根据我们的目标机系统定制的Windows CE就可以在开发平台上正常运行了。
创建平台SDK
完成了平台的定制后,接着可以利用Platform Builder来创建SDK,SDK为平台上其他应用程序的开发提供支持。SDK(Software Development Kit)是一系列头文件、库文件、文档、平台管理器和运行时库的总称。一旦创建了SDK,就可以将它导出或者安装到别的计算机上,开发者可以将创建的SDK导入Embedded Visual C++或 Visual Studio中,进行应用程序的开发、调试和运行。
在Embedded Visual C++中,提供了Platform Manager来管理已经安装的SDK。注意,在安装开发工具时,默认会安装一个称作“Standard SDK”的SDK。由于Windows CE操作系统特性,不可能存在“标准”的SDK。所谓Standard SDK,只不过是微软把Windows CE中最常用的一些功能取出来作为一个“标准”的SDK,使用Standard SDK开发的应用程序,可在大多数Windows CE平台上运行。但是Standard SDK也并不是万能的,例如,Standard SDK不支持中文和DirectX等。Platform Builder提供了SDK Wizard向导,来创建和生成SDK,最后Build过程完成后即可生成名为SBC2410_SDK.msi的SDK文件。此时在生成目录中找到SBC2410_SDK.msi,双击安装,就可以将生成的SDK安装到EVC中进行应用程序的开发了。
2 应用软件开发
目前,针对Windows CE应用开发的软件有很多种,在使用的时候根据具体情况选择适合应用的软件开发工具。Embedded Visual C++支持WinCE App/DLL/COM/Lib using Win32 API,MFC,ATL and STL等功能,它与Visual C++6.0具有相似的工程管理模式和用户界面,易于调试和测试。但是必须安装相应的为特定平台开发的SDK,本文就是自己导出的SDK。
智能家居系统的主机应用程序通过两个对话框实现分机设备的基本读/写过程:Measure对话框主要实现对输入量信息的采集及对系统运行状态的监视,Control对话框主要用于主机发送控制信息给分机系统。这两个对话框通过主窗体调用完成对整个家居系统的测量与控制。主机应用程序流程图如图3所示。智能家居系统应用程序以1路模拟量输入、3路数字量输入及相应的4路输出控制量为例实现智能控制功能。
图3 主机应用程序流程图
图4 运行界面
EVC的开发环境与Visual C++基本一致。首先,选择项目类型、项目存放路径、项目名称及平台类型;然后选择项目的样式和支持的语言;接下来,确定一些其他的选项;选择完毕后,就可以得到一个程序的框架。项目类型我们选择WCE MFC APPWizard,项目名称为SmartHome,在支持的CPU类型中我们选中了ARM和X86(应该根据开发环境来选择)。对于我们来说,首先要在PC上进行调试,然后编译成适合使用的应用程序,目标机是ARM CPU,所以我们需要WCE X86和WCE ARM。(如果你要开发商用软件或者想让更多的人使用你的程序,应该考虑更多种类的CPU)编译运行,成功启动Microsoft ActiveSync同步软件,这时可将在PC上生成的exe文件复制到移动设备下My Documents文件夹下。智能家居系统应用程序以1路模拟量、3路数字量输入及相应的4路输出控制量为例实现智能控制功能,如图4所示。