基于STM32和Android的智能家居系统设计

2018-10-09 03:00朱向庆邓浩欣李嘉宝朱万鸿何昌毅钟创平
电子设计工程 2018年18期
关键词:家居智能家居远程

朱向庆,邓浩欣,李嘉宝,朱万鸿,何昌毅,钟创平

(嘉应学院电子信息工程学院,广东梅州514015)

智能家居系统集电子信息、自动控制、计算机、通信技术等于一体,与传统家居相比,它能从各方面提高人们的生活质量[1-2]。家居核心设备智能化,终端配套技术的不断成熟和品牌化,物联网、移动互联网技术的飞速发展,特别是以人为本的健康电子兴起,进一步促进智能家居的发展。在功能设定方面,智能家居从以往简单的近程安防监控,逐渐过渡到远程监控与自动控制,并往智能化方向发展[3]。

目前,我国市场上有很多功能各异的智能家居产品,但是不少产品在追求功能强大的同时,造成价格高企,不利于推广应用。为此,设计一套高性价比,集空气质量、温度、气压和光强检测,家居设备自动控制,远程Android应用程序与手机短消息监控等功能于一体的智能家居系统。

1 系统的硬件结构

本系统硬件结构如图1所示,它以STM32F407ZGT6微控制器为核心,包含EEPROM存储器、SRAM存储器、Flash存储器、烟雾及可燃气体(液化气、甲烷、酒精等)传感器、有害气体(氨、硫化物、苯等)传感器、光敏电阻、PM2.5粉尘传感器、数字温度传感器、气压传感器、Wi-Fi无线模块、GSM模块、4.3寸TFT电容触摸屏、步进电机、直流电机、继电器、蜂鸣器、LED灯及数码管等。

STM32F407ZGT6是意法半导体公司(ST公司)推出的一款以ARM Cortex-M4为内核的32位微控制器[4],拥有 210DMIPS,高达1MB Flash ROM,192kB SRAM,4kB备用RAM,17个TIM(定时器),3个12位ADC,2个12位DAC,以及15个通信接口(3个I2C,4个USART/UART,3个SPI,2个I2S,2个CAN及1个SDIO),多达140个具有中断功能的I/O端口,可满足系统要求。

图1 硬件系统框架

1.1 存储器的扩展

因为STM32单片机要运行μC/OS-III操作系统,存储图片数据,所以必须扩展系统的Flash ROM、RAM等存储器。通过SPI接口连接华邦(Winbond)公司生产的W25Q128,可扩展16 MB的Flash ROM。

STM32单片机使用FSMC(Flexible Static Memory Controller,可变静态存储控制器)I/O口连接SRAM芯片IS62WV51216,该芯片由ISSI公司生产,容量为512 K字。

为了扩展EEPROM,STM32单片机使用I2C总线连接AT24C256。该芯片由Atmel公司生产,容量为32 kB,其特点是可在线电擦写,掉电后数据不丢失。

1.2 空气质量的检测

烟雾及可燃气体传感器MQ2和有害气体检测模块MQ135输出的模拟电压传输至STM32单片机的ADC引脚,单片机将采集到的模拟电压转换成数字量,再进行相应处理,达到对烟雾、可燃气体和有害气体的检测。

系统使用两个Sharp公司生产的GP2Y1051AU型二代传感器分别检测室内外PM2.5。PM2.5检测模块采用标准的串口通信,其TXD引脚连接STM32的RXD引脚,单片机通过公式转换,得到相应的室内外PM2.5浓度值。

1.3 光照度、温度及气压的检测

光敏电阻MG5528与固定电阻的串联分压值送到STM32单片机的ADC引脚,单片机根据读取的ADC值即可计算出周围环境的光照度,进而采用脉冲宽度调制(PWM),改变PWM输出的占空比,通过ULN2803自动调节灯光的亮度。

单片机与DS18B20数字温度传感器通过单总线(1-Wire)通信,实现对环境温度的检测[5]。

同时,单片机通过I2C通信协议与BMP180气压温度模块进行通信,达到对气压和温度的检测[6]。

1.4 无线通信接口

为了完成与远程云服务器、手机的通信,单片机通过串口连接Wi-Fi模块ESP8266和GSM模块SIM900A。Wi-Fi模块内置乐鑫信息科技公司的ESP8266EX芯片[7,8],它内含一个完整且自成体系的Wi-Fi网络解决方案,能够独立运行,也可作为从机搭载于其他主机运行。

GSM模块SIM900A用于给远程手机发送短消息,它是一款尺寸紧凑的GSM/GPRS模块,采用SMT封装,基于STE(意法爱立信)的单芯片案,使用ARM926EJ-S架构,性能强大,可以低功耗实现语音、SMS、数据和传真信息的收发[9-10]。

1.5 输入输出接口

系统使用ALIENTEK公司推出的4.3寸TFT电容触摸屏实现人机交互,该触摸屏有FSMC和SPI两种接口。FSMC总线连接液晶控制器ILI9341,以输出图像;SPI总线衔接触摸屏控制器TCS2046,以达到触摸输入数据。

STM32单片机使用I/O口连接2个复合管驱动器ULN2803,它可驱动步进电机、直流电机、继电器、LED灯和蜂鸣器,电机和继电器用于开关窗户、抽风机、空气净化器或其他家电设备。

STM32单片机使用I/O口连接7段数码管译码器74LS48,用于驱动共阴数码管,显示空调预设温度。

2 软件设计与实现

为了移植方便,以及提高开发速度,STM32单片机运行固件由C语言编写,运行μC/OS-III操作系统,使用Keil uVision5软件编译,通过J-LINK Utility软件将生成的机器码文件烧录到单片机。智能手机APP使用Java语言设计,并通过eclipse软件编译生成可安装的APK文件。

2.1 μC/OS-III系统任务设计

μC/OS-III是一个基于ROM运行、可裁剪、抢占式、实时多任务内核,具有高度可移植性,具有μC/OS-II不支持的时间片轮转法[11-12],特别适合于32位微处理器和控制器。μC/OS-III系统初始化后,建立图2所示五个任务。程序开始运行后,初始化外设与各功能模块,初始化μC/OS-III,然后创建任务1,开启多任务环境。

2.1.1 任务1程序设计

任务1首先开启RTC(Real-Time Clock,实时时钟),初始化emWin图形库,接着创建信号量与任务2~5,最后挂起,不再执行。

图2 μC/OS-III系统各任务流程

2.1.2 任务2程序设计

任务2负责设置和更新emWin显示,执行完毕后挂起15 ms。emWin图形界面包括主界面、设置界面、Wi-Fi扫描界面、Wi-Fi连接界面和服务器界面。

主界面显示家居系统的整体运行状况,设置界面用于配置各家电工作参数、传感器报警门限等。

Wi-Fi扫描界面用于发现周围Wi-Fi,扫描完成进入Wi-Fi连接界面,输入密码后可连接至远程云服务器。

服务器界面用于输入远程云服务器的IP地址和端口,修改完成会将设置保存在EEPROM内。

2.1.3 任务3程序设计

任务3负责触摸屏和数码管显示。首先用触摸屏显示emWin设置好的界面;接着对数码管进行动态扫描,并控制其显示空调设定温度;最后任务挂起15 ms。

2.1.4 任务4程序设计

任务4负责检测各传感器。在程序开始时对ADC、串口等外设进行初始化,进入μC/OS-III系统后,按图3所示流程,依次对烟雾与可燃气体浓度、有害气体浓度、室内外PM2.5浓度、气压、光照度及温度进行检测。当室内PM2.5、MQ2和MQ135检测到的数据超标时,启动蜂鸣器报警。如果检测结果有异常,再根据其数值控制窗户、抽风机、空气净化器等设备,以改善家居环境;最后任务挂起500 ms。

2.1.5 任务5程序设计

任务5负责与Wi-Fi模块和GSM模块交换数据。进入μC/OS-III系统后,若Wi-Fi模块已正确连接以太网,系统执行图4所示Wi-Fi信息发送程序,将采集到的数据和当前家居设备的状态发送至远程云服务器。当远程Android应用程序要控制家居时,也通过云服务器转发数据给Wi-Fi模块,由其传输给单片机。

当出现紧急情况,需要报警时,则依据图5所示流程,通过GSM模块发送短消息至用户手机,及时提醒使用者。STM32单片机都是通过AT命令控制Wi-Fi模块和GSM模块,进行数据收发。

图4 ESP8266远程信息发送程序流程

图5 GSM模块发送报警短消息程序流程

2.2 远程服务器

远程监控工作框架如图6所示,远程服务器采用腾讯公司的腾讯云云服务器(Cloud Virtual Machine,CVM),它提供可扩展的计算容量,且拥有公网唯一IP,理论上在任何地方只要能连接因特网,即可与其进行通信。通过腾讯云CVM,可以在短时间内快速启动任意数量的云服务器,即时部署应用程序,并支持使用者自定义的一切资源,如CPU、内存、硬盘、网络和安全等[13]。腾讯云CVM使用Linux Ubuntu系统,利用Socket和双进程分别完成对8001和9999端口的监听,其中8001为智能手机连接端口,9999为家居系统连接端口。

图6 远程监控工作框架

2.3 Android APP程序设计

智能手机Android应用程序开发环境包括JDK(Java Development Kit,Java开发工具包)、Android SDK(Software Development Kit,软件开发包)、Eclipse和 ADT(Android Development Tools)插件。在安装Android开发环境时,首先须要安装支持Java程序开发和运行的JDK,还需要有 JRE(Java Runtime Environment,Java运行环境)的支持;Android SDK是Android开发工具包,它提供Android相关的API;Eclipse是IBM公司开发的一种基于Java语言编写,开放源代码,可扩展的集成开发工具;ADT是Google专门为Eclipse开发的一个插件,用来辅助开发[14-20]。

打开应用程序后会自动使用Socket连接远程服务器,监听远程服务器发送的信息,解析并显示于屏幕。图7(a)为手机上的Android应用程序主界面,用于显示家居系统整体工作状态;进入图7(b)所示设置页面后,可修改各家居系统工作参数,点击保存会将所有参数以指令形式发送给云服务器。云服务器进程接收到指令后,将指令发送至管道,另一进程接收管道内容并将数据发送至家居系统,完成数据的交互。

图7 Android端应用程序

3 实验结果

研究过程中,采用先模型验证,后实物制作的方法。图8为系统硬件模型,它采用KT纸板做外观材料,电路固定于模型底部,各传感器和电器露出于模型外,以便观察。

实验证明,系统能够正常检测并自动调节家居环境温度、光照度、空气质量等,使用者可通过智能手机远程监控家居状况;有异常时,家居系统也会发送手机短消息以告知使用者。

图8 系统硬件模型

4 结束语

研究表明,通过糅合现有的传感检测技术、自动控制技术等,借助现有的GSM网络、互联网和云服务器,结合Wi-Fi短距离无线通信,操作者可通过Android智能手机远程对家居环境状况进行实时监控。实验证明系统性能良好,实时性高,安全可靠,成本低廉,其包含的核心技术经过企业消化后,能直接投入市场,可望产生积极的社会效应和社会效益,推动现代化智能家居的发展。

猜你喜欢
家居智能家居远程
让人胆寒的“远程杀手”:弹道导弹
远程工作狂综合征
打造日常家居“氛围感”
台北家居
远程诈骗
基于Zigbee的无线通信技术在智能家居中的应用
关于智能家居真正需求的探讨
智能家居更贴心
基于LD3320的智能家居控制
《数码家居》2009年下半年推荐榜