STM32项目分享:智能家居语音系统

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB打板焊接图:

五、程序设计 

六、实验效果 

七、包含内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1K94y1H7mk/?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灯的开闭,同时禁止手动模式的APP控制

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_AFIOGPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG/* 初始化定时器3, 中断频率 1000hz */FML_TIME_Init();FML_TIME_Register(Sys_timer_handle, 1);	//系统时间片,1tick = 1msFML_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 );}}
}

六、实验效果 

七、资料内容

项目分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python算法于强化学习库之rlax使用详解

概要 在强化学习领域,开发和测试各种算法需要使用高效的工具和库。rlax 是 Google 开发的一个专注于强化学习的库,旨在提供一组用于构建和测试强化学习算法的基础构件。rlax 基于 JAX,利用 JAX 的自动微分和加速计算功能,使得强化学习算法的实现更加高效和简洁。本文将详细…

CPT204 Advanced OO Programming(2)

W5 Lists_stacks_queues_priority queues  To explore the relationship between interfaces and classes in the Java Collections Framework hierarchy.  To use the common methods defined in the Collectioninterface for operating collections.  To use…

⌈ 传知代码 ⌋ ERA-CoT: 实体关系推理

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Xmind导入纯文本TXT方法

最近有很多同事咨询我如何在xmind直接导入纯文本txt笔记或者思维导图呢&#xff1f; 解决办法如下&#xff1a; 1.先打开xmind随便打开一个思维导图-文件-导出-marldown 2.选中导出的markdown文件。右键-打开方式-苹果系统选择文本编辑&#xff0c;Win系统选择记事本 3.按照图示…

Unity动画录制工具在运行时录制和保存模型骨骼运动的方法录制动画给其他角色模型使用支持JSON、FBX等格式

如果您正在寻找一种在运行时录制和保存模型骨骼运动的方法&#xff0c;那么此插件是满足您需求的完美解决方案。 实时录制角色运动 将录制到的角色动作转为动画文件 将录制好的动作给新的角色模型使用&#xff0c;完美复制 支持导出FBX格式 操作简单&#xff0c;有按钮界面…

SpringCache 缓存 - @Cacheable、@CacheEvict、@CachePut、@Caching、CacheConfig 以及优劣分析

目录 SpringCache 缓存 环境配置 1&#xff09;依赖如下 2&#xff09;配置文件 3&#xff09;设置缓存的 value 序列化为 JSON 格式 4&#xff09;EnableCaching 实战开发 Cacheable CacheEvict CachePut Caching CacheConfig SpringCache 的优势和劣势 读操作…

ADS基础教程19 - 电磁仿真(EM)基本概念和实操

EM介绍 一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍 三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip&#xff08;微带线&#xff09;3.添加Substrate4.Momentum仿真 四、总结 一、引言 本章节开始介绍EM的基本概念、内容以及实现具体…

反向传播算法

在深度学习和神经网络中&#xff0c;反向传播算法是一种至关重要的技术&#xff0c;它使得网络能够通过学习不断调整自身的参数以优化性能。作为训练神经网络的核心机制&#xff0c;反向传播通过计算损失函数对模型参数的梯度&#xff0c;并据此更新网络权重&#xff0c;从而逐…

this关键字,构造函数(构造器)

文章目录 thisthis是什么应用场景 构造器注意事项代码演示 this this是什么 this就是一个变量&#xff0c;可以在方法中&#xff0c;拿到当前对象 应用场景 解决变量名称 冲突问题 构造器 注意事项 必须和类名相同没有返回值只要参数不同&#xff08;个数不同&#xff0…

ISO 26262《道路车辆功能安全》

ISO 26262是关于道路车辆功能安全的国际标准&#xff0c;专门针对总重不超过3.5吨的八座乘用车及其安全相关电子电气系统&#xff08;E/E系统&#xff09;的功能安全而制定。以下是关于ISO 26262的详细解释&#xff1a; 一、背景与目的 ISO 26262是在2011年11月15日正式发布的…

Java基础面试重点-2

21. JVM是如何处理异常&#xff08;大概流程&#xff09;&#xff1f; 如果发生异常&#xff0c;方法会创建一个异常对象&#xff08;包括&#xff1a;异常名称、异常描述以及异常发生时应用程序的状态&#xff09;&#xff0c;并转交给JVM。创建异常对象&#xff0c;并转交给…

UML相关1

汽车租赁系统中的用例图简述(10分) 本系统根据功能可以分为三个用例图&#xff1a; 客户用例图&#xff1a;主要描述客户注册、登录、找回密码、查询车辆信息&#xff08;包括所有车辆信息、已借车辆信息、租赁历史信息&#xff09;、修改个人信息、网上预订车辆、电话预定车…

LabVIEW结构体内部缺陷振动检测

结构体内部缺陷会改变其振动特性&#xff0c;通过振动分析可以检测并定位这些缺陷。本文详细分析内部缺陷对振动的影响&#xff0c;从频谱分析、时域分析和模态分析等多角度探讨基于LabVIEW的检测方法&#xff0c;提供实施步骤和注意事项&#xff0c;帮助工程师有效利用LabVIEW…

Windows下Qt5.14.2连接华为IoTDA平台

一、华为IoTDA简介 华为云物联网平台&#xff08;IoT 设备接入云服务&#xff09;提供海量设备的接入和管理能力&#xff0c;将物理设备联接到云&#xff0c;支撑设备数据采集上云和云端下发命令给设备进行远程控制&#xff0c;配合华为云其他产品&#xff0c;帮助您快速构筑物…

JAVA:在IDEA引入本地jar包的方法并解决打包scope为system时发布无法打包进lib的方案

一.引入本地Jar包的步骤 有时maven依耐的包是本地的jar包&#xff0c;此时需要进行以下步骤设置。 步骤1.在pom.xml中添加插件设置,将system范围包含进来&#xff0c;此设置是为了在打包时&#xff0c;本地jar包自动生成到部署包里。(若无法打进包&#xff0c;请参考下文的方…

面向对象三大特征之:封装

文章目录 什么是封装&#xff1f;封装的设计规范 什么是封装&#xff1f; 就是用类设计对象处理某一个事物的数据时&#xff0c;应该把要处理的数据&#xff0c;以及处理这些书记的方法设计到一个对象中去。 封装的设计规范 合理隐藏&#xff0c;合理暴露 public就是都能访问…

【Python】解决Python报错:ValueError: not enough values to unpack (expected 2, got 1)

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 函数返回值解包2.2 遍历含有不同长度元组的列表 3. 解决方案3.1 检查和调整返回值3.2 安全的解包操作 4. 预防措施4.1 使用异常处理4.2 单元测试 结语 引言 在Python编程中&#xff0c;ValueError 是一个常见的异常类…

服务器配置(初始化)

一&#xff1a;什么是云服务器及用途&#xff1a; 云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件&#xff0c;即可迅速创建或释放任意多台云服务器。 我个人感觉就…

录取查询小程序怎么制作?

招生老师往往需要花费大量的时间和精力去手动整理学生的录取信息&#xff0c;并一一通知学生。那时的录取查询系统&#xff0c;复杂而繁琐&#xff0c;要处理大量的数据&#xff0c;还要确保信息的准确无误和安全。经常为了发布录取结果&#xff0c;不得不加班到深夜&#xff0…

[学习笔记] VFX Silhouette

目录 Part 1 : The interface of Silhouettte &#xff08;Silhouette的界面介绍&#xff09; Part 2: The shape divisions and manual roto&#xff08;形状分区和手动roto工作&#xff09;: Part 3: tracking &#xff1a; Part 4: Mocha Tracking Part 5: Motion Blur(…