基于STM32的嵌入式智能家居系统
牛妍燕 田子怡
摘要:为了满足人们对家居环境智能化的要求,设计了一种基于Cortex-M4内核并且以STM32F407ZGT6微处理器为嵌入式控制器核心的智能家居控制系统。该系统采用GPRS模块和无线模块nRF24L01为通信模块,完成控制台、家电模块、防灾模块、手持设备等各模块之间的通信和信息传输,进而实现对室内家居的智能控制。实验结果表明,该系统控制方便、运行稳定、外扩能力强,适合普通家庭使用,具有广泛的应用前景。
关键词:智能家居;STM32F4;GPRS;嵌入式
中图分类号:TP273 文献标识码:A 文章编号:1009-3044(2016)13-0240-03
Abstract:In order to meet the requirements of the intelligent home environment for people. Smart Home control system based on STM32F407ZGT6 carried Cortex-M4 has been designed.The GPRS and nRF24L01 are used to make the communication between the Console、the Home Appliances、the Protection and the Handheld Device achieved in this system, so it can control the Smart Home. The results from the experiment indicate that: the system has convenient control, stable running, strong extended ability, suitable for normal household use, and extensive application prospect.
Key words: Smart Home; STM32F4; GPRS; Embedded
1概述
随着科学技术和计算机技术的快速发展,使得智能家居逐渐成为现代家居生活的发展方向。当今正处在互联网、大数据的时代,智能家居以迅猛速度聚焦于人们的视野,我们物质追求价值的提升,对智能家居的渴望也越演越烈[1]。文献[6]提出利用RS485总线设计智能家居系统,虽然解决了传输距离短的问题,但具有布线困难和比较难维护的缺点。文献[7]和[8]提出利用WiFi技术设计智能家居系统,虽然实现了无线组网,但是功耗比较大,不实用。针对以上出现的布线困难、难维护、功耗较大的问题,本系统采用STM32作为控制器,该控制器功耗低,价格低廉,功能实用,能够让普通消费者所接受,在以STM32为控制核心的基础上,将无线通信技术、传感器技术等相融合,通过分析各个传感器所采集到的信息、GPRS模块接收到的信息以及用户通过人机界面接收到的信息,从而将危险报警信息由GPRS发送短信到用户手机上,这样就构成了一个舒适安全的居住环境。
2系统总体结构
为了用户方便操作,系统控制部分采用本地控制和远程控制两部分。本地控制部分主要有传感器模块、无线模块nRF24L01、显示模块和电源模块,通过设置每个模块的状态,传感器所采集的信息就会显示在屏幕上,这样就可以实时了解并查询家里的信息,远程控制部分主要是通过GPRS模块发送信息,并由移动终端通过短信的方式来控制,从而达到对家居设备的远程控制[3]。根据功能来看,该系统可以分为防灾模块和家电控制模块。防灾模块所要实现的功能是当室内燃气传感器检测到有可燃气体存在时或烟雾传感器检测到的浓度高于安全值,就会通过GPRS模块向用户手机发送报警信息,用户可以第一时间消除危害。家电控制模块所要实现的功能是用户可以通过短信随时随地查询家里电器的信息,或者可以随时打开或关闭家中的电器,给人们生活带来极大方便。总体结构框图如图1所示。
3系统硬件设计
3.1 主控制器
本系统主控芯片选用STM32F407ZGT6,它是以ARM32的Cortex-M4为内核的处理器,与STM32F1/F2等Cortex M3 产品相比,STM32F4 拥有多达 192KB 的片内SRAM,STM32F4最大的优势,就是新增了硬件FPU单元以及DSP指令,同时,STM32F4的主频也提高了很多,能够达到168Mhz,可获得210DMIPS的处理能力,这一点使得STM32F4非常适用于需要浮点运算或DSP处理的应用,也被称之为DSC,具有非常广泛的应用前景。
3.2 无线模块nRF24L01
nRF24L01是一种世界通用ISM频段的单片无线收发器芯片,它工作在2.4-2.5GHz。无线收发器包括:频率发生器、增强SchockBurst模式控制器、功率放大器、晶体振荡器、调制器等功能模块。它的输出功率、频道选择等可以通过SPI接口来进行设置。它具有极低的电流消耗:当工作在发射模式情况下的发射频率为-6dBm时,电流消耗为9mA,接收模式时电流消耗为12.3mA。在掉电模式和待机模式这两种情况下电流消耗更低。在这个模块中,无线模块nRF24L01与STM32F4通过CSN、SCK、MISO、MOSI、IRQ、CE这六个引脚完成无线数据通信。其引脚图如图2所示。
3.3 GPRS模块
GPRS模块选用ALIENTEK推出的ATK-SIM900A。ATK-SIM900A模块接口丰富,功能也比较完善,板载SIMCOM公司的工业级双频GPRS模块:SIM900A,该模块可以工作在900MHz和1800MHz两个频段,还可以在较低功耗情况下实现语音、短信、数据和传真信息的传输。GPRS模块还支持RS232串口,并且带有硬件流控制功能,支持5V~24V的超宽工作范围,使得本模块可以非常方便地为智能家居系统提供包括语音、短信和GPRS数据传输等功能。
GPRS模块与主控制器是通过杜邦线连接,连接方式如表1所示。
3.4 传感器模块
传感器主要包括燃气传感器、烟雾传感器,所有传感器都与无线模块nRF24L01相连,无线模块将接收到的信息发送给主控制器,从而实现与控制系统通信的目的。
3.5 TFT触摸屏显示模块
该模块选用3.2英寸TFT真彩触摸屏,功耗低,支持8bit、16bit总线接口,模拟I/O控制,触摸屏上配置有ADS7843触摸控制器,支持一个SD卡,支持一个SPI的DATE Flash,构成人机交互图形界面[4]。TFT触摸屏的硬件连接方式很简单,通过4根数据线与STM32F4连接就可以实现。
4系统软件设计
该智能家居系统支持C语言与汇编语言混合编写。系统软件由系统主程序、nRF24L01无线模块子程序、GPRS无线通信模块子程序等模块组成。软件流程图如图3所示。
该智能家居系统的控制方式有两种:在户外时,如果家里出现煤气泄漏、火灾等危险情况时,GPRS模块可以发送报警信息给用户,其次用户还可以通过发送手机短信的方式,发送控制命令给GPRS模块,从而达到对家电的控制;在家时可以通过触摸屏完成对所有家电的控制以及应对发生的煤气泄漏、火灾等危险状况。
智能家居系统接通电源后,首先需要对系统初始化,包括nRF24L01无线模块的初始化、GPRS无线通信模块的初始化以及串口的初始化[2]。接着通过主控制器STM32监测GPRS无线通信模块是否收到短信,如果收到短信,系统就会通过GPRS模块中的AT指令把收到的新短信传输到主控制器,进而主控制器发送控制命令实现对家电设备的控制。远程控制的报警系统通过中断服务子程序完成,当接通电源后,从无线模块对与传感器连接的I/O口不断进行监测,如果发生煤气泄漏、火灾等危险状况,各个传感器将采集到的信息发送到I/O口,软件获得这个信息之后会立即启动中断响应,同时进入中断服务子程序进行处理并向用户手机发送报警信息。
4.1 nRF24L01组网实现
无线传感网络节点的基本组成包括4个基本单元:传感器单元、数据处理单元、数据传输单元以及电源,无线传感器网络技术特点具有自组网、低功耗、低复杂度、低成本等优势[5]。nRF24L01的工作模式有收发模式、配置模式、空闲模式和关机模式。收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种。该智能家居系统采用Enhanced ShockBurstTM收发模式。
发射流程:首先,需要把接收机接收到的地址以及即将发送的数据按时序送入nRF24L01,其次配置CONFIG寄存器,使它进入发送模式,微控制器把CE置高10us以上,激发nRF24L01进行Enhanced ShockBurstTM发射:首先给射频前端供电;其次给射频数据打包;最终高速发射数据包,发射完成之后nRF24L01进入空闲状态。
接收流程:配置本机地址和准备接收的数据包大小;配置CONFIG寄存器,使之进入接收模式,把CE置高; 130us后,nRF24L01进入监视状态,等待数据包的到来;当接收到正确的地址和CRC校验码,nRF24L01自动把字头、地址和CRC校验位移去;nRF24L01通过把STATUS寄存器的RX_DR置位通知主控制器;主控制器把数据从NewMsg_nRF24L01 读出;所有数据读取完毕后,可以清除STATUS寄存器。
4.2 无线通信模块的软件实现
短信功能是智能家居系统中实现远距离控制功能的核心,GPRS模块采用AT指令,从而实现度短信和写短信的功能。AT指令集是从终端设备或数据终端设备向终端适配器或数据电路终端设备发送的。用户可以通过AT指令进行呼叫、短信、电话本、数据业务等方面的控制。GPRS模块用到的AT指令有以下9种。AT+CMGR用于读取短信,AT+CMGS用于发送短信,AT+CMGF用于设置短消息模式,AT+CNMI用于设置新消息指示, AT+CMGC用于发送一条短信命令,AT+CMGD用于删除SIM卡内存的短信,AT+CMGW用于向SIM卡内存中写入待发的短信,AT+CSCA用于设置短信服务中心地址,AT+CMSS用于从SIM内存中发送短信[2]。
GPRS简易测试:发短信
u8 si900a_sms_test(u8* msisdn)
{
u8 status=0;
char cmd[20];
status=sim900a_check_status();
if(status) return status;
if(sim900a_send_cmd("AT+CMGF=1","OK",200))return 4;//设置文本模式
if(sim900a_send_cmd("AT+CSCS=\"GSM\"","OK",200))return 5;//设置TE字符集为UCS2
sprintf((char*)cmd,"AT+CMGS=\"%s\"",msisdn);//命令格式:AT+CMGS="XXX"
if(sim900a_send_cmd((u8*)cmd,">",200))return 6;//设置短消息文本模式参数
u3_printf("%s","Dear user,This is a test message from atk-sim900a module."); //发送短信内容到GPRS模块
if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)) return 7;//发送结束符
return 0;
}
5结束语
文中智能家居系统采用低功耗的STM32为核心,通过无线模块nRF24L01与各传感器相连,无线模块将接收到各个传感器采集到的信息发送给主控制器,然后通过人机交互界面显示所采集的信息,并由GPRS无线通信模块发送报警信息到用户手机。主控制器与无线模块的传输距离为15米,相邻无线模块之间的传输距离为20米,经过调试和测试,该智能家居系统运行稳定,在执行时反应灵敏,达到了家居智能化的效果,具有控制简单、节能环保、移动性好等优点。
参考文献:
[1] 钟其源, 许锦标. 探讨智能家居的未来[J]. 电子世界, 2016 (3): 67-69.
[2] 蔡红娟, 翟晟, 蔡苗. 基于 STM32 的 GSM 智能家居控制系统设计[J]. 自动化技术与应用, 2013 (8): 37-40.
[3] 张逢雪, 王香婷, 王通生, 等. 基于 STM32 单片机的无线智能家居控制系统[J]. 自动化技术与应用, 2011 (8): 98-101.
[4] 陈致远, 朱叶承, 周卓泉, 等. 一种基于 STM32 的智能家居控制系统[J]. 电子技术应用, 2012, 38(9): 138-140.
[5] 宋霞萍. 基于 STM32 的小型智能家居系统设计[D]. 长沙:中南林业科技大学, 2014.
[6] 陶莉. 基于 RS485 总线的智能家居系统的实现[J]. 硕士学位论文. 上海交通大学, 2008.
[7] 肖宛昂, 苏高民, 陆廷, 等. 一种由 WiFi 智能插座构成的智能家居[J]. 单片机与嵌入式系统应用, 2014, 14(5): 46-48.
[8] 陈倩, 曹龙, 蔡静之. 基于 STM32 的智能家居万能学习型遥控盒子的研究与设计[J]. 电子世界, 2015 (17): 47-49.