基于STM32F407ZGT6的智能镜子设计

2017-05-24 08:12肖培胡天立曹源祝蓓李璇
科技创新与应用 2017年13期
关键词:温湿度控制器智能家居

肖培+胡天立+曹源+祝蓓+李璇

摘 要:以STM32F407ZGT6为主控制器,利用原子镜的半透效果,设计了一种可实现查看天气、穿衣建议、语音识别、语音播报、音乐播放、闹钟提醒、火灾报警、室内温湿度检测以及自动调光等功能的智能镜子。镜子移植了UCOS-II嵌入式操作系统,同时设置了看门狗,能够保证系统的正常运行;镜子的显示部分则是由一块60cm×45cm的原子镜和两块7寸LCD显示屏组成。

关键词:智能镜子;STM32F407ZGT6;UCOS-II;语音识别;语音合成

当今社会时代发展迅速,而快节奏的生活让大多数人都无法享受属于自己的信息世界。为此设计了一种可以在洗漱过程中获取当天信息的智能镜子,通过镜子我们可以查看当天的天气情况以及对应的穿衣建议,除此之外,该镜子还具有语音识别、语音播报、音乐播放、闹钟提醒、自动调光等功能。同时利用镜子获取信息也为人们提供了一种全新而又便捷获取信息的方法。

1 系统结构及相关功能

图1为系统的总体框图,系统的主控制器为STM32F407ZGT6,系统的显示部分由两块7寸LCD显示屏组成。利用人体红外感应模块可以判断镜子前是否有人,从而控制显示器的亮灭;利用温湿度模块可以获取室内温湿度;把光照强度传感器采集到的数据通过转换公式可以用来控制LED灯组的亮暗;而烟雾传感器用于实现火灾报警的功能。系统的人机交互部分除了LCD显示屏外,还有用来实现对系统进行相关操作的电容按键模块,用来进行语音识别和语音播报的语音识别模块和语音合成模块。最后的WIFI模块则是用连接服务器进行信息交换。

2 系统硬件设计

2.1 STM32F407ZGT6控制器介绍

STM32F407ZGT6采用Cortex_M4内核,具有192KB SRAM、1024KB FLASH、3个12位ADC、2个12位DAC、1个RTC(带日历功能)、以及112个通用IO口等。通过查阅资料,该控制器能够很好的完成系统的各项功能。

2.2 ASR M08-A语音识别模块

ASR M08-A支持5~á8V的外置电压供电,模块通过串口与主控制器相连,同时模块自带功放电路输入,可直接连接8欧姆0.5瓦(8?赘 0.5W)的扬声器。

该模块具有两种检测模式,即普通检测模式和口令检测模式。口令检测模式需要先验证对应口令,才能进行语音识别,因此每响应一个动作需要讲两个关键词,这两个模式的切换主要是通过一句指令来完成,所以我们通过软件可以实现只需要第一次验证口令,之后就进入普通检测模式。

2.3 SYN6658语音合成模块

SYN6658中文语音合成芯片是北京宇音天下科技有限公司于2012年最新推出的一款性/价比更高,效果更自然的一款高端语音合成芯片。SYN6658通过UART接口或SPI接口通讯方式,接收待合成的文本数据,实现文本到语音(或TTS语音)的转换。

2.4 其他模块介绍

除了以上几个主要模块之外,整个系统还由以下几个模块协同工作,从而实现相关功能:

(1)ATK-ESP8266WIFI模塊:该模块是一款高性能的UART-WiFi(串口-无线)模块,模块支持STA/AP/STA+AP三种工作模式。

(2)ATK-7' LCD显示屏:该模块屏幕分辨率为800*480,16位真彩显示,模块自带LCD控制器,拥有多达8MB的显存,能提供8页的显存,并支持任意点颜色读取。

(3)HC-SR501人体红外感应模块:具有不可重复和可重复两种触发方式。

(4)MQ-2烟雾气体传感器模块:通过采集其输出模拟信号可以检测是否发生火灾。

(5)光敏电阻传感器模块:采用灵敏型光敏电阻传感器,具有DO数字开关量输出(0和1)和AO模拟电压输出两种输出模式。

(6)DHT-11温湿度模块:该模块采用单总线通信模式,温度检测范围为0℃-50℃,湿度检测范围为20%-95%(0℃-50℃环境下)。

(7)电容按键模块:该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。

(8)LED灯组:利用PWM来调节LED灯的明暗情况。

3 系统软件设计

3.1 UCOS-II操作系统移植

UCOS-II是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,它的性能能和很多商业操作系统相媲美,它具有高度可移植性,特别适合于微处理器和控制器,为了提供最好的移植性能,UCOSII最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。

从图2可以看出,UCOSII的移植,我们只需要修改:os_cpu.h、os_cpu_a.asm 和os_cpu.c 等三个文件即可,其中:os_cpu.h,进行数据类型的定义,以及处理器相关代码和几个函数原型;os_cpu_a.asm,是移植过程中需要汇编完成的一些函数,主要就是任务切换函数;os_cpu.c,定义一些用户HOOK函数。

3.2 相关初始化函数

主控制器与各个模块进行通信,需要对各个IO口进行配置,通过调用对应初始化函数可以对通信IO口进行配置。以下是主函数相关设置:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级

delay_init(168); //初始化延时函数

uart_init(9600); //初始化串口1波特率为9600

usart3_init(9600); //初始化串口3波特率为9600

LED_Init(); //LED灯组初始化

LCD_Init(); //LCD显示器初始化

Adc_Init(); //ADC初始化

KEY_Init(); //电容按键初始化

My_RTC_Init(); //初始化RTC

TIM3_Int_Init(100-1,8400-1);//10Khz计数频率,计数100次为10ms

RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,());//配置中断1m一次

my_mem_init(SRAMIN); //初始化内部内存池

my_mem_init(SRAMCCM); //初始化CCM内存池

exfuns_init(); //为fatfs相关变量申请内存

f_mount(fs[0],"0:",1); //挂载SD卡

f_mount(fs[1],"1:",1); //挂载FLASH

while(font_init()){}

ucos_load_main_ui(); //加载主界面

OSInit(); //初始化UCOSII

OSTaskCreate(start_task,(void*)0,(OS_STK *)&START_TASK_ST

K[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务

OSStart(); //系统开始运行

在起始任务中,我们创建了以下几个任务:

OS_CPU_SR cpu_sr=0;

OSStatInit(); //初始化统计任务,会延时1m左右

OS_ENTER_CRITICAL();// 进入临界区(无法被中断打断)

OSTaskCreate(main_task,(void*)0,(OS_STK*)&MAIN_TASK_ST

K[MAIN_STK_SIZE-1],MAIN_TASK_PRIO); //创建主任务

OSTaskCreate(wifi_task,(void*)0,(OS_STK*)&WIFI_TASK_STK[WIFI_TASK_SIZE-1],WIFI_TASK_PRIO); //创建WIFI任务

OSTaskCreate(light_task,(void*)0,(OS_STK*)&LIGHT_TASK_ST

K[LIGHT_TASK_SIZE-1],LIGHT_TASK_PRIO); //創建灯光调控任务

OSTaskCreate(iwdog_task,(void*)0,(OS_STK*)&IWDOG_TASK_

STK[IWDOG_STK_SIZE-1],IWDOG_TASK_PRIO);//创建看门狗任务

OSTaskCreate(screen_task,(void*)0,(OS_STK*)&SCREEN_TAS

K_STK[SCREEN_STK_SIZE-1],SCREEN_TASK_PRIO);//创建屏幕亮灭任务

OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)

在主任务中创建了tmr1(1秒触发一次)、tmr2(一秒触发一次)、tmr3(一小时触发一次)三个定时器,分别用来显示时间、采集传感器数据、获取天气信息。

4 实物功能及测试结果

4.1 实物功能介绍

图3一共有三张图片,第一张图片是无人在镜子面前的拍摄图,第二张是有人在镜子面前,同时光线较暗,系统自动调节LED灯组亮度的拍摄图,最后一张是界面效果图。从最后一张图片可以看出该作品具有时间显示、室内室外温湿度显示、天气状况以及穿衣指数显示,界面右上角的图标分别表示备忘、闹钟、联网状态;除了LCD显示的功能外,系统还具有自动调光功能,它会根据室内光线强弱调节LED灯组亮度;语音识别功能,能够识别一些简单的语音口令,例如现在时间、现在天气情况、播放音乐、打开菜单、设置闹钟、关闭自动调光等50条相关语音指令;语音播报功能,例如准点报时,播报天气情况等;人体红外感应功能,当镜子检测到镜子面前一段时间内无人时,会关闭LCD显示屏,该时间可以设置;音乐播放功能,可以播放用户存储在SD卡中的音乐,播放音乐时,不具备语音识别功能,此时只能通过电容按键进行操作。

4.2 实物测试结果

在测试中,我们利用笔记本电脑搭建服务器,开启对应热点,系统通过热点连接该测试服务器,通过服务器上的Python脚本可以获取到对应的天气信息;经过各项测试,该作品也能够完美的实现上述各项功能。同时为了保证系统的稳定性,我们在室内温度为20摄氏度左右的环境下进行了24h的“拷机”测试,测试结果表明,整套系统能够长时间的稳定运行。

5 结束语

通过查阅各项资料,此作品还是具有很大的应用以及开发前景,因此可以进行下一步的改进。首先是系统的主控制器可以进行升级,我们可以选用更高级的基于ARM的微型电脑主板,搭载Linux系统;接下来镜子的显示器可以改为大屏液晶显示器,同时配以红外触屏;最后则是语音识别以及语音播报功能可以调用讯飞或者百度的语音识别以及语音合成接口,从而能够让智能镜子更智能。

参考文献

[1]曹振民,陈年生,马强,等.基于ESP8266的无线控制电路设计[J].工业控制计算机,2017(1):68-69.

[2]莫琦,赵俊峰,黄耿洪.基于嵌入式的多功能家庭管理助手[J].数字技术与应用,2015(12):66+68.

[3]邓中祚.智能家居控制系统设计与实现[D].哈尔滨:哈尔滨工业大学,2015.

[4]王怡,鄂旭.基于物联网无线传感的智能家居研究[J].计算机技术与发展,2015(2):234-237.

[5]肖宛昂,苏高民,陆廷,等.一种由WiFi智能插座构成的智能家居[J].单片机与嵌入式系统应用,2014(5):46-48.

[6]杨威,高文华.基于Android的智能家居终端设计与研究[J].计算机技术与发展,2013(07):245-248.

[7]申斌,张桂青,汪明,等.基于物联网的智能家居设计与实现[J].自动化与仪表,2013(2):6-10.

[8]杨堤.基于物联网的智能家居控制系统设计与实现[J].电子世界,2012(21):16-17.

[9]郭稳涛,何怡刚.智能家居远程监控系统的研究与设计[J].计算机测量与控制,2011(9):2109-2112.

[10]童晓渝,房秉毅,张云勇.物联网智能家居发展分析[J].移动通信,2010(9):16-20.

作者简介:肖培(1996-),男,汉族,湖南邵阳,在读本科生,研究方向:嵌入式开发。

猜你喜欢
温湿度控制器智能家居
南京溧水电子3款控制器产品
智能家居行业仍无“独角兽”
蛋鸡育雏育成舍环境控制技术
智能家居产业现状和发展趋势
水泥生料立磨压差变参数二型模糊控制器设计
智能家居 走向星辰大海
基于NFV的分布式SDN控制器节能机制
档案库房温湿度记录统计及调控
智能家居未来感初体验
变电站高压配电智能温湿度控制装置的研发与应用