• 基于STM32的简易智能家居设计(嘉立创支持)


    一、项目功能概述

    1、OLED显示温湿度、空气质量,并可以设置报警阈值
    2、设置4个继电器开关,分别控制灯、空调、开关、风扇
    3、设计一个离线语音识别系统,可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上
    4、OLED实时显示4个继电器的状态
    5、设计一个低功耗开关电路,可以语音控制使得系统进入低功耗模式,并且进入低功耗模式后可以再次语音唤醒系统,重新开始正常工作
    语音控制具体描述:
    在这里插入图片描述

    二、项目原理图

    (一)最小系统
    ![![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3eb5e38eb3ef4e819bc6d78a378b8e71.png)
    在这里插入图片描述

    (二)供电
    在这里插入图片描述
    (三)传感器
    温湿度
    显示器
    空气检测模块

    (四)语音模块
    在这里插入图片描述

    (五)继电器模组
    在这里插入图片描述

    (六)按键蜂鸣器
    在这里插入图片描述

    (七)低功耗开关
    在这里插入图片描述

    三、程序设计

    
     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控制
    (六)添加更多语音控制功能

    感谢嘉立创对全程设计的支持。

  • 相关阅读:
    51单片机的基础知识汇总
    猿创征文 | [云原生]为微服务保驾护航之链路跟踪skywalking保姆级搭建教程
    最小生成树学习笔记
    乌云遮住了天空
    gradio显示和隐藏侧边栏
    十个最为戳心测试/开程序员笑话,念茫茫人海,该如何寻觅?
    酷雷曼多种AI数字人形象,打造科技感VR虚拟展厅
    数据结构与算法:二叉树的中序遍历
    六种常用排序方式详解(C++实现)
    Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)详解 | JavaGuide
  • 原文地址:https://blog.csdn.net/qq_51182593/article/details/139634922