首页 > 其他分享 >STM32项目分享:智能家居语音系统(升级版)

STM32项目分享:智能家居语音系统(升级版)

时间:2024-06-22 14:29:00浏览次数:26  
标签:温湿度 智能家居 Init psLdHandle STM32 OLED str 升级版 SysParamHandle

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

​​编辑​​编辑

2.PCB板打样焊接图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1wi421S7wK/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能家居语音系统(升级版)。功能如下:

  1. 温湿度采集:系统通过DHT11模块采集温湿度
  2. 烟雾监测:通过MQ-2模块采集环境中烟雾浓度
  3. 光照强度采集:通过BH1750传感器采集环境光照强度
  4. 窗帘控制:通过步进电机转动模拟窗帘控制
  5. 风扇控制:通过继电器和指示灯模拟风扇驱动,并提供接口可以安装风扇模块
  6. 照明控制:通过继电器和指示灯模拟照明驱动,并提供接口可以安装照明模块
  7. 蜂鸣器报警:环境烟雾异常情况下蜂鸣器报警
  8. OLED显示:显示温湿度、光照强度和烟雾浓度
  9. APP功能:使用机智云APP,包括功能有控制照明灯和风扇开关、显示当前温湿度信息。
  10. 自动模式:语音切换为自动模式,系统根据光强大小控制窗帘和LED灯的开闭,通过温湿度控制风扇的开闭
  11. 手动模式:语音切换为手动模式,系统通过语音和APP可以手动更改风扇、窗帘和LED灯的工作状态

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(4针I2C协议)
  • WiFi模块(ESP8266-01s)
  • MQ-2烟雾传感器
  • BH1750光照强度传感器
  • 28BYJ51步进电机
  • 继电器
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

int main ( void )
{ 
	/* 系统时钟树配置 */
	RCC_Configuration();
	/* 中断系统配置 */
	NVIC_Configuration();
	/* 初始化硬件延时, 使用滴答定时器完成 */
	delay_init();
    /* 板级初始化 */
	DEBUG_UART_Config( );
	DEBUG_LOG("Bsp init\n");
	/* 上电延时,等待各个模块运行稳定 */
	delay_ms( 200 );
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能相应接口的时钟,以及RCC_APB2Periph_AFIO
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG
	/* 初始化定时器3, 中断频率 1000hz */
    FML_TIME_Init();
    FML_TIME_Register(Sys_timer_handle, 1);	//系统时间片,1tick = 1ms
    FML_TIME_Start(Sys_timer_handle); //开启定时 
	/* 配置按键引脚 */
	//Key_GPIO_Config(p_SysParamHandle->p_keyhandle);	
	/* LED Fan IO 初始化 */
	LED_Init( );
	BEEP_Init();
	Moto_Init();
	/* dht11 初始化 */
	DHT11_Init();
	/* 语音模块初始化 */
	ld3322_init( );
	RegisterLd3322(p_SysParamHandle->psLdHandle, CmdList, CMD_NUM);	/*!< 注册指令参数表 */
	Switch_GPIO_Config( );
	/* 机智云SDK初始化 */
	Gizwits_Init();
	/* 0.96OLED初始化 */
	OLED_Init();
	BH1750_Init();
	ADC_Sensor_Init();
	/*!< 延时确保初始页面错误 */
	delay_ms(300);
	/* OLED显示初始画面 */
	OLED_InitPage( ); 
    while ( 1 )
	{ 
    /* 传感器数据 */
       	if (p_SysParamHandle->u32SensorTim == 0)
	    {
		p_SysParamHandle->u32SensorTim = 200;
		p_SysParamHandle->u16Lightness = bh_data_read( );	//!< 读取光照强度
		get_mq2_value( &p_SysParamHandle->fMqValue );	//!< 读取烟雾浓度
		DHT11_Read_TempAndHumidity( p_SysParamHandle->psDHT11DataHandle );//!< 读取温湿度
	    }
        /* ld3320语音识别模块 */ 
	    uint16_t index;
	    if (psLdHandle->bl_rev_cmd_flg == CMD_REV_OK)
	    {
	    	psLdHandle->bl_rev_cmd_flg = CMD_REV_NO_OK;
	    	for (index=0; index<psLdHandle->u16_cmd_num; index++)
		    {
			    if (!strcmp(psLdHandle->pCmdTable[index].cmd_str, psLdHandle->pu8_rev_cmd_buf))
			    {
				    psLdHandle->pCmdTable[index].funCallback();
				    DEBUG_LOG("Ld3322 check OK\n");
				    break;
			    }
		    }
		    if (index == psLdHandle->u16_cmd_num)
		    {
			    DEBUG_LOG("Ld3322 Erorr\n");
		    }
		    User_MemSet(psLdHandle->pu8_rev_cmd_buf, 0x0, 30);
	    }
        /* 机智云云端协议处理 - 任务 */
	    gizwitsHandle( p_SysParamHandle->p_DataPoint );
	    /* 机智云数据同步 - 任务 */
	    app_SyncData_Task( p_SysParamHandle );
        /* oled参数更新 - 任务 */
	    char str[16] = {0};
	    if (p_SysParamHandle->u32LcdUpdateTim == 0)
	    {
		    /* 任务时间重装载 */
		    p_SysParamHandle->u32LcdUpdateTim = 1000;
		    sprintf(str, "%d", p_SysParamHandle->psDHT11DataHandle->temp_int);
		    OLED_ShowCnAndAsciiStr(40, 		0,		str, 2);
		    sprintf(str, "%d", p_SysParamHandle->psDHT11DataHandle->humi_int);
		    OLED_ShowCnAndAsciiStr(40, 		2,		str, 2);
		    sprintf(str, "%d", p_SysParamHandle->u16Lightness);
		    OLED_ShowCnAndAsciiStr(80, 		4,		str, 2);
		    sprintf(str, "%.2f", p_SysParamHandle->fMqValue);
		    OLED_ShowCnAndAsciiStr(80, 		6,		str, 2);
		    /* 机智云事件处理 - 线程 */ 
	        app_GizwitsDataEvent_Handle( p_SysParamHandle );
	    }
    }
}

六、实验效果 

七、资料内容

项目分享

标签:温湿度,智能家居,Init,psLdHandle,STM32,OLED,str,升级版,SysParamHandle
From: https://blog.csdn.net/qq_44016222/article/details/139881786

相关文章

  • STM32互补PWM模拟(带有Dead Time)
    目录前言一、时基单元基本概念二、时基单元CNT计数模式三、互补PWM模拟1.中央对其计数模式2.引脚模式选择3.输出结果总结前言本文介绍了互补PWM的概念,并且能够使用通用定时器和高级定时器模拟出互补PWM的波形,并且能够调控输出波形占空比和死区时间(DeadTime)。一......
  • 数据结构:为什么说链表是顺序表的升级版(c语言实现)
    前言:  我们在之前的几篇文章中详细的讲解了顺序表的特点,增删改查操作和动态顺序表的优点,并使用顺序表的底层结构实现了通讯录项目,似乎顺序表是一个非常完美的数据结构,它可以实现按照需求实现增删查改,对内存的控制也较为合理,空间都是在需要时手动开辟的。但是顺序表真的完......
  • stm32 sai 接口调试总结
    一概念STM32的新片子的音频外设叫SAI了,S就是Serial,A就是Audio,I就是Interface,还是挺好记的.究竟新在哪里,就是支持音频各种了,但是实际上用到的,基本上还都是I2S居多。这里给出I2S的stm32配置做一个总结。二参数配置1.接口和时钟配置图: 2.源码解析......
  • 基于STM32单片机的智能垃圾桶垃圾分类语音识别控制系统(实物+所有资料)
        随着社会科学技术的飞速发展,人们的生活质量和速度也在不断提高。大多数传统的家用垃圾桶已经过时且缺乏新颖性,并且缺乏人性化设计。使用起来既不方便也不卫生,并且所有的生活垃圾和废物垃圾都被均匀地装载,没有经过仔细的分类。随之而来的是,清洁工的任务量正以几何速......
  • 【单片机毕业设计选题24019】-基于STM32的安防监测灭火系统
    系统功能:1.水泵喷水灭火功能:当火焰传感器监测到火焰时,蜂鸣器报警,水泵工作实现灭火。2.风扇功能:当烟雾传感器检测到CO或温度传感器检测到温度超过阈值时,蜂鸣器报警,启动风扇进行驱散烟雾或降温。3.防盗功能介绍:采用红外传感器,当有人靠近时就会报警。4.通过蓝牙实现在......
  • 【单片机毕业设计选题24018】-基于STM32和阿里云的农业大棚系统
    系统功能:系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补光,水位过低后自动开启水泵补水。手动模式下可以手动控制加热/除湿/补光/补水。主要功能模块原理图:......
  • STM32三种调试工具CMSIS-DAP、J-Link和ST-Link
    一.概述CMSIS-DAP、J-Link和ST-Link均是嵌入式处理器的开发调试工具。CMSIS-DAP是一种轻量级调试接口,旨在实现开源的开发调试。它的优点是使用方便、通用性好、成本低,还支持固件的在线升级。J-Link是一款由德国公司SEGGERMicrocontroller开发的高性能调试工具。但是价格较......
  • STM32硬件接口I2C应用(基于FT6336)
    目录概述1硬件介绍1.1 ST7796-LCD1.2MCUIO与LCDPIN对应关系1.3 MCUIO与Touch PIN对应关系2FT6336的寄存器2.1FT6336寄存器列表2.2寄存器功能介绍 3STM32Cube控制配置I2C3.1 软硬件版本信息3.2 I2C参数配置3.3 使用STM32Cube产生工程4HAL库函数......
  • STM32C8T6与TB6612
    好久没写博客了,今天水一篇TB6612 引脚介绍下面我对所有引脚的作用,及接线逐一介绍引脚接线1: VM接12V电压2: VCC接5V电压3: GND接地4:   AO1接a电机正极/负极5:   AO2  接a电机负极/正极6:   BO1接b电机正极/负极7:   BO2接b电机负极/正极8:......
  • STM32单片机SPI通信详解
    文章目录1.SPI通信概述2.硬件电路3.移位示意图4.SPI时序基本单元5.SPI时序6.Flash操作注意事项7.SPI外设简介8.SPI框图9.SPI基本结构10. 主模式全双工连续传输11. 非连续传输12. 软件/硬件波形对比13.代码示例1.SPI通信概述SPI(SerialPeriphera......