基于STM32智能家居系统的设计与实现
智能家居(又称智能住宅)是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的安全、高效、舒适、便利、环保的居住环境。利用综合布线技术、网络通信技术、智能家居一系统设计方案安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统。对比普通家居系统,智能家居不仅满足了人们对居住环境的基本要求,提供舒适安全且宜人的家庭生活空间。还能够主动提供全方位的信息服务,联合外部资源,做出智能化响应。但这类系统通常代价昂贵,控制方式单一,且易受到干扰。因此,在设计实现智能控制的同时,研制一个成本低、实用性强并能普及寻常百姓家的智能家居系统成为必然趋势。
本设备可使使用者置身千里之外也能轻松地全方位掌握家中各方面的情况,很方便的远程控制各类家用电器设备,提高了家居的安全性、方便性、舒适性,实现了环境保护和节约能源,让人们享受家居生活更轻松。
1系统整体结构
系统整体结构如图1所示,主要由微控制器及多个子模块组成,微控制器主要用于分析和处理用户操作信息、传感器信息、控制手机模块的接收和发送,并按优先级执行相应的任务。子模块部分包括:门禁/安防、人机界面、CAN—BUS通信网络、无线通信网络、视频监控模块、语音识别、开窗电动机驱动控制器、多路传感器接口、开关电源电路等。
图1 系统组成框图
系统主机通过一个运行OpenWRT的路由器连入Internet.设置好网络端口,通过Internet访问时,本系统提供一个用户体验良好的界面,用户只需输入域名登陆到运行在家中的服务器即可对家中的设备进行远程控制。
2智能家居系统硬件平台
本智能家居系统主要由主控芯片和功能外设组成。主控芯片STM32F103RBT6是以ARM 32的Cortex—M3为内核的处理器,最高工作频率可达72 MHz,内置大容量高速存储器,轻易容纳智能家居系统所需的空间;具备FSMC灵活的静态存储器控制器,用其来驱动液晶屏极大地提高了刷新率;同时,它内嵌有支持CAN 2.0B的控制器,无需外扩专用芯片便可以组成CAN网络。
LD3320是一款语音识别及合成芯片,集成了高精度A/D和D/A接口,不需要任何外接辅助芯片,如Flash闪存、RAM、解码、功放芯片等,可以直接地实现语音识别/语音/交互式功能的语音识别功能。主控芯片通过四线SPI数字接口传送适合的数据到该芯片对应的寄存器,设置好识别关键词、识别时间长度、麦克风增益等后,语音识别功能便开始运行了。当系统产生需要语音应答条件时,MCU可以把以mp3编码的数据发送到该芯片,配置音量等参数后,随即运行语音合成功能,片内自带的功率放大器推动扬声器发声。
nRF24L01是一款新型单片高度集成的射频收发器件,工作于2.4~2.5 GHz ISM频段之间。内置频率合成器、功率放大器、晶体振荡器以及调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。其多种低功耗模式和40bit超长器件地址保证了它通信的安全性,传输速率高的特点,适合应用在本系统。
CAN总线通信具有较高的通信速率、高可靠性、便于连接和性价比高的优势,它因为高速网络以及作为较低成本的各种网络而普及应用。由于智能家居系统的通信是在家庭供电线路的复杂电磁干扰中,本系统采用一种CAN双绞线转换器,组成一个家电通信网络,足够可靠地应用于强干扰的恶劣环境中。
3智能家居系统软件设计
智能家居其中一个重要目的是为了实现舒适便捷的家居生活,因此必须设计一套用户体验良好的上位机操作界面,包括电脑端对智能家电的详细设置,以及能体现出手机便捷性对家电基本控制需求的Android客户端应用程序。其主要软件设计流程如图2所示。系统任务的实现由两个不同的线程实现:网络通信用的NetStream程序和本地数据处理的程序。
图2 上位机软件设计流程
本地数据处理程序根据任务又分为以下两部分:用户操作响应部分,视频流数据处理部分。用户操作响应部分主要负责采集用户对上位机软件按下的按钮、输入的命令等数据,并将这些采集到的数据进行运算和处理,得到结果后再进行加密并编码,最后加载到网络流上,自动通过网络发送到下位机。视频流数据处理部分则是智能家居安防监控功能的承载,上位机的软件定时器产生一定时间间隔的溢出中断后,通过TCP连接到路由器,账号和密码验证无误后,即可获取监控摄像头每一帧JPEG格式的图像信息,经过处理,可将这些JPEG图像信息合成24帧每秒显示在上位机界面上,由于人眼的视觉暂留效益(Persistence of vision),这些连续的图像可以被看成是达到了流畅的视频效果。
NetStream部分则主要是解决上位机与下位机通信的问题。智能家居系统的安全是一个很重要的问题,建立一个稳定安全的连接就显得尤为重要。本系统采用一种SSL加密的TCP/IP协议。SSL又叫“安全套接层(Secure Sockets Layer)协议”,是一种在客户端和服务器端之间建立安全通道的协议,充分保证了系统通信过程的安全。
4智能家电网络的构建
为了实现对智能家电控制的目的,就必须要将各个家电进行联网,本系统的下位机家电网络包括CAN总线网络,2.4G射频无线网络以及视距红外无线网络。同时应用了这3种通信网络,同时具备了智能家居网络的可靠性好,连接方便,通用性强等优点,弥补了单一通信方式的局限性,若能合理安排组建网络,将会有效地降低系统成本。
下位机软件部分最重要的一个功能,就是接收到上位机发送过来的带有加密的数据后进行处理。数据解密后,是一个带有功能描述与对应参数的字符串,为了方便程序的编写,需要将字符串中的参数部分由连续且未知长度的数字转化为整形变量储存在内存中,实现的代码如下:
这段函数调用了IAR Embedded公司提供的标准库函数stdlib.h中的atoi函数,atoi函数功能的描述是/*convert string to int*/,即把字符串直接强制转成整形数据。本系统上位机与下位机之间的通信协议由我们专门针对性地设计,其中字符串头部带有长度不能预知的命令字节,因此调用atoi函数前还需要判断该数据包之中的参数是从字符串的第几位开始的,得到正确的指向字符串参数位置的指针。
如图3是智能家居下位机主控芯片的流程图,主控芯片上运行了μC/OS轻量级嵌入式实时操作系统,采用的是可剥夺型实时多任务内核,意味着处理器在任何时候都是运行优先级最高的任务,这样就很方便地实现了整个下位机各种任务的调度,同时也保证了系统的实时性。主控芯片启动μC/OS后,分别建立语音识别任务、串口接收任务、液晶显示任务、入侵检测任务4个任务。在语音识别中,首先查询LD3320状态寄存器的识别完成位是否置位,然后做出应答,执行相应的动作,语音播报执行结果,并发送一个信号量表明屋内电器状态有变化,需要更新显示;串口接收任务的工作是对上位机发送过来的数据准确无误地接收,解密解码,并根据指令对电器进行相应操作;液晶显示屏显示任务会一直检测是否有更新显示的信号量,若有信号量则执行整屏刷新,同时对应的信号量自动清空;启动安防系统后,便会运行实时监控,根据数量密集的传感器网络状态判断家中的安全指数,智能的软件决定何时应该发出警报信号。
图3 下位机软件设计流程
图4 PC端上位机控制软件
5上位机控制软件,PC端以及安卓手机端的设计
服务器(一台运行openwrt系统的路由器)运行起来后,USB摄像头自动挂载,在PC端上的位机设置窗口设置好IP与密码信息后,上位机通过TCP连接到服务器,获取视频/图片信息,显示在上位机的GUI界面上。界面中的其他控件同样是利用TCP连接到服务器上,发送或者获取信息,服务器接收到请求后则通过ser2net进程,将tcpserver的信息转发到串口上,与下位机进行通信。手机端上位机设计得比较简单,如图4所示,大按钮方便控制家庭中各种电器。
6结束语
文中设计了一种基于STM32F1系列的智能家居系统,详细地介绍了系统的整体架构并给出了几种重要的硬件装置和服务器软件的实现方法。
实现了室内实时功率、室内温度、天气的监测,和内/外网远程控制家中的电器,远程视频监控功能以及安防设施,语音识别正确率达88%,网络服务器部分采用了路由器代替PC机的方案,系统整体待机功耗≤5 W.手机控制端的设计按键清晰易操作,可以方便地控制部分家电的工作状态。最终实现了智能家居需求的功能。