本文主要是介绍基于STM32的简易智能家居设计(嘉立创支持),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、项目功能概述
1、OLED显示温湿度、空气质量,并可以设置报警阈值
2、设置4个继电器开关,分别控制灯、空调、开关、风扇
3、设计一个离线语音识别系统,可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上
4、OLED实时显示4个继电器的状态
5、设计一个低功耗开关电路,可以语音控制使得系统进入低功耗模式,并且进入低功耗模式后可以再次语音唤醒系统,重新开始正常工作
语音控制具体描述:
二、项目原理图
(一)最小系统
(二)供电
(三)传感器
(四)语音模块
(五)继电器模组
(六)按键蜂鸣器
(七)低功耗开关
三、程序设计
int main(void){ u16 key;int adc,cnt=0;float volt;delay_init(); NVIC_Configuration(); BEEP_Init();OLED_Init(); OLED_Clear();uart_init(115200);printf("欢迎使用吃夜宵的智能家居系统\r\n");KEY_Init();LED_Init();TIM3_Int_Init(500-1,720-1);DEV_Init();//外设初始化OLED_ShowCHinese(8,0,50);//delay_ms(200);OLED_ShowCHinese(24,0,51);//delay_ms(200);OLED_ShowCHinese(40,0,52);//delay_ms(200);OLED_ShowCHinese(56,0,39);//delay_ms(200);OLED_ShowCHinese(72,0,40);//delay_ms(200); OLED_ShowCHinese(88,0,48);//delay_ms(200); OLED_ShowCHinese(104,0,49);//delay_ms(200); OLED_ShowNum(0,2,201908,6,16);OLED_ShowNum(48,2,384176,6,16);OLED_ShowCHinese(40,4,53);OLED_ShowCHinese(56,4,54);OLED_ShowCHinese(72,4,55);delay_ms(1500); OLED_Clear(); OLED_Dis_Menu();while(1) { if(cnt++ ==1000){cnt = 0;LED0=!LED0;adc = Get_Adc_Average(0,5);volt = adc*3.3/4096;air = pow((3.4880*10*volt)/(5-volt),(1.0/0.3203));printf("air :%d\r\n",air);//获取温湿度DHT11_Read_Data( &temp, &humi);if(last_temp!=temp || last_humi!=humi){OLED_Dis_DHT(temp,humi,air);}}key = Key_GetValue(); //按键扫描if(key)DealKeyVal(key);if(!KEY1_IO()){printf("%d\r\n",GetTime());}if(temp>Max_temp || humi>Max_humi || air>Max_air){if(cnt<500)BEEP=1;else if(cnt<1000)BEEP=0;}else BEEP=0;delay_ms(1);} }
四、扩展功能
(一)根据环境温湿度、空气状况,自动控制智能家居设备
(二)优化界面,添加系统更多设置,报警设置、家居控制模式选择、智能开关机模式
(三)添加定时开关智能家居模式
(四)添加蓝牙或WIFI模块
(五)设计手机APP控制
(六)添加更多语音控制功能
感谢嘉立创对全程设计的支持。
这篇关于基于STM32的简易智能家居设计(嘉立创支持)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!