一、项目功能概述
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控制
(六)添加更多语音控制功能
感谢嘉立创对全程设计的支持。
标签:delay,200,智能家居,OLED,ShowCHinese,STM32,嘉立,humi,ms From: https://blog.csdn.net/qq_51182593/article/details/139634922