当前位置: 首页 > news >正文

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 );}}
}

六、实验效果 

七、资料内容

项目分享

相关文章:

  • python基于flask写后端接口、python接收请求、python作为服务端提供接口、python接收json数据或数组
  • JVM学习-JVM运行时参数
  • 24.6.2(动态开点线段树)
  • 股票数据集1-纳斯达克NASDAQ 100简介
  • 【java11】java11新特性之嵌套类
  • 打造无障碍网络体验:Edge 浏览器代理服务器设置指南
  • 【Unity实战篇 】 | Unity实现UGUI颜色渐变,支持透明渐变
  • 星舰第四次发射:历史性的一步
  • 入坑必看的几个嵌入式方向热点问题
  • Memory测试工具-stressapptest详解
  • 国内科技企业和机构发力AI研发,50余篇论文入选顶会ICML2024
  • 计数排序(排序终篇)
  • 人工智能在肿瘤预后预测中的最新研究进展|顶刊精析·24-06-07
  • 单节点离线部署TiDB 6.1用于测试
  • 使用AppJail配置网络并创建tiny jail(未成功)
  • 【node学习】协程
  • 10个最佳ES6特性 ES7与ES8的特性
  • docker python 配置
  • Effective Java 笔记(一)
  • E-HPC支持多队列管理和自动伸缩
  • HTML-表单
  • If…else
  • Java Agent 学习笔记
  • JavaScript服务器推送技术之 WebSocket
  • js面向对象
  • mysql中InnoDB引擎中页的概念
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • spring学习第二天
  • uva 10370 Above Average
  • Vue官网教程学习过程中值得记录的一些事情
  • 记一次和乔布斯合作最难忘的经历
  • 聊聊flink的TableFactory
  • 马上搞懂 GeoJSON
  • 那些年我们用过的显示性能指标
  • 前端面试之CSS3新特性
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 区块链技术特点之去中心化特性
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用putty远程连接linux
  • 延迟脚本的方式
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 优秀架构师必须掌握的架构思维
  • 再次简单明了总结flex布局,一看就懂...
  • 怎么将电脑中的声音录制成WAV格式
  • ionic入门之数据绑定显示-1
  • ​520就是要宠粉,你的心头书我买单
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • (0)Nginx 功能特性
  • (1)(1.9) MSP (version 4.2)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二)换源+apt-get基础配置+搜狗拼音
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (十一)图像的罗伯特梯度锐化
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .Net - 类的介绍