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

【STM32项目开源】基于STM32的智能语音台灯系统

目录

一、设计背景和意义

1.1设计背景

1.2设计意义

二、实物效果展示

2.1实物图片

2.2实物演示视频

三、硬件功能简介

3.1项目功能详解

3.2元器件清单

四、主框图与软件流程图

五、硬件PCB展示

六、软件程序设计

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”


一、设计背景和意义

1.1设计背景

        随着“智能家居”理念的广泛普及以及物联网、嵌入式系统等前沿技术的发展,传统家居照明产品正经历着由“人工控制”向“智能联动”“自动响应”转变的深刻变革。作为家庭和办公场景中使用频率极高的照明设备,台灯的功能和体验也正在被重新定义。传统台灯产品普遍存在照度不可调、能耗高、操作方式单一、缺乏人性化设计等问题,无法满足当代用户对“舒适、健康、节能、智能”照明体验的多重需求,尤其对于长时间用眼的学生和办公人群来说,缺乏动态调光、护眼提醒等功能更是隐患重重。

1.2设计意义

        该系统通过集成DHT11环境温湿度传感器、光敏电阻、HC-SR04超声波测距模块、AS312人体感应模块以及DS1302时钟模块,能够实时监测用户周围环境状况及使用行为,从而在不同模式下自动判断灯光状态是否需要开启并调节至合适亮度,在实现节能照明的同时,也提升了用眼健康与使用便捷性。此外,系统通过ESP8266 WiFi模块接入机智云平台,使用户能够随时随地通过手机APP控制灯光设备,并远程查看环境数据及历史记录,提升了系统的人机交互体验与实用性。

        从学术研究的角度来看,本课题综合了嵌入式软硬件设计、物联网通信、自动控制、传感器应用等多个知识点,体现了计算机科学与现代智能硬件工程融合的特点,具有较强的技术综合性和工程实现价值。对于培养学生系统开发能力、动手实践能力和工程创新思维具有积极意义。

二、实物效果展示

2.1实物图片

2.2实物演示视频

【开源】基于STM32的智能语音台灯系统

三、硬件功能简介

3.1项目功能详解

1.传感器检测:温湿度、距离、人体信号、光强
2.数据显示:0.96OLED屏幕
3.执行机构:控制LED灯开关和亮度、蜂鸣器
4.接入云平台:通过ESP8266 WIFI联网后,接入机智云平台
5.App远程监控:通过App远程监控传感器数据,控制台灯的亮度、开关
6.阈值数据设定:系统通过按键/APP设定阈值
7.模式切换:可以通过按键或者手机App实现自动/手动/定时模式的切换
8.语音控制:语音助手控制台灯亮度,开关
9.护眼功能:当系统检测到人距离台灯过近(坐姿不标准)蜂鸣器报警

3.2元器件清单

  1. 主控STM32F103C8T6
  2. ESP8266-WIFI模块
  3. 红外热释电人体存在检测模块
  4. 超声波坐姿检测传感器
  5. 蜂鸣器模块
  6. 0.96OLED显示屏幕
  7. 光敏电阻检测
  8. USB灯座+灯片
  9. DS1302时钟模块
  10. 四个按键模块
  11. DHT11温湿度传感器

四、主框图与软件流程图

主框图

流程图

五、硬件PCB展示

六、软件程序设计

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "oled.h"
#include "usart.h"
#include "exti.h"
#include "timer.h"
#include "HC_SR04.h"
#include "kalman.h"
#include "lsens.h"
#include "adc.h"
#include "hongwai.h"
#include "BEEP.h"
#include "usart2.h"
#include "usart3.h"extern u8 Res1, Res3;
extern int timer1;
u16 sonic_dis = 0;
int main(void)
{int key = 0, flag1 = 0, flag2 = 0, flag3 = 0, flag4 = 0, guangmi = 0, flag5 = 0;delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(115200);usart3_Init(9600);LED_Init();BEEP_Init();OLED_Init();KEY_Init();Lsens_Init();hongwai();                    //人体TIM3_Int_Init(9, 71);         //10usEXTIX_Init();hc_sr04_init();               //HC_SR04初始化TIM4_Int_Init(9999, 7199);    //计时TIM2_PWM_Init(899, 0);        //调节亮度BEEP = 0;OLED_ShowCHinese(35, 0, 0);OLED_ShowCHinese(50, 0, 1);OLED_ShowCHinese(65, 0, 2);OLED_ShowCHinese(80, 0, 3);      //标题OLED_ShowCHinese(0, 2, 6);OLED_ShowCHinese(15, 2, 7);OLED_ShowString(30, 2, ":", 16); //模式OLED_ShowCHinese(0, 4, 16);OLED_ShowCHinese(15, 4, 17);OLED_ShowString(30, 4, ":", 16); //状态OLED_ShowCHinese(70, 4, 22);     //无人OLED_ShowCHinese(85, 4, 23);OLED_ShowString(100, 4, ":", 16);//状态OLED_ShowCHinese(0, 6, 24);      //时间OLED_ShowCHinese(15, 6, 25);OLED_ShowString(30, 6, ":", 16);OLED_ShowString(65, 6, "s", 16);while (1){usart2_init(9600);                                      //蓝牙通信sonic_Trig();                                           //超声波sonic_dis = sonic_distance / 10;OLED_ShowNum(75, 6, sonic_distance / 10, 4, 16);OLED_ShowString(110, 6, "cm", 16);if (sonic_distance / 10 > 10){BEEP = 0;}else if (sonic_distance / 10 <= 10){BEEP = 1;}guangmi = Lsens_Get_Val();                              //亮度OLED_ShowNum(110, 4, guangmi, 2, 16);key = KEY_Scan(0);if (key == 1){flag1 += 1;if (flag1 > 3)flag1 = 0;}if (flag1 == 0)                              //智能模式{OLED_ShowCHinese(45, 2, 4);OLED_ShowCHinese(60, 2, 5);OLED_ShowCHinese(75, 2, 6);OLED_ShowCHinese(90, 2, 7);if (renti == 0){OLED_ShowCHinese(40, 4, 18);//有人OLED_ShowCHinese(55, 4, 19);flag2 = 1;}else if (renti == 1){OLED_ShowCHinese(40, 4, 20);//无人OLED_ShowCHinese(55, 4, 21);flag2 = 0;}if (flag2 == 1){if (guangmi > 20 && guangmi <= 40){TIM_SetCompare2(TIM2, 200);}if (guangmi > 40 && guangmi <= 60){TIM_SetCompare2(TIM2, 400);}if (guangmi > 60){TIM_SetCompare2(TIM2, 800);}}else if (flag2 == 0){TIM_SetCompare2(TIM2, 899);//关灯}}if (flag1 == 1){OLED_ShowCHinese(45, 2, 8);OLED_ShowCHinese(60, 2, 9);OLED_ShowCHinese(75, 2, 10);OLED_ShowCHinese(90, 2, 11); //按键模式if (key == 2){flag3 +=1 ;if(flag3>3){flag3=0;}}if (flag3 == 0){TIM_SetCompare2(TIM2, 899);}else if (flag3 == 1){TIM_SetCompare2(TIM2, 800);}else if (flag3 == 2){TIM_SetCompare2(TIM2, 600);}else if (flag3 == 3){TIM_SetCompare2(TIM2, 400);}if (key == 3){flag4 = !flag4; //计时}if (flag4 == 1){TIM_Cmd(TIM4, ENABLE);  //使能TIMxOLED_ShowNum(40, 6, timer1, 3, 16);}if (flag4 == 0){TIM_Cmd(TIM4, DISABLE);  //使能TIMxOLED_ShowNum(40, 6, timer1, 3, 16);}}if (flag1 == 2){OLED_ShowCHinese(45, 2, 12);OLED_ShowCHinese(60, 2, 13);OLED_ShowCHinese(75, 2, 14);OLED_ShowCHinese(90, 2, 15); //远程模式switch (Res1){case 1: TIM_SetCompare2(TIM2, 400);break; //开灯case 2: TIM_SetCompare2(TIM2, 899);break; //关灯case 3: TIM_Cmd(TIM4, ENABLE);OLED_ShowNum(40, 6, timer1, 3, 16);break; //开启计时case 4: TIM_Cmd(TIM4, DISABLE);OLED_ShowNum(40, 6, timer1, 3, 16);break; //关闭计时case 5: TIM_SetCompare2(TIM2, 200);break; //三档灯光case 6: TIM_SetCompare2(TIM2, 400);break; //二档灯光case 7: TIM_SetCompare2(TIM2, 800);break; //一档灯光case 8: TIM_Cmd(TIM4, DISABLE);timer1 = 0;OLED_ShowNum(40, 6, timer1, 3, 16);break; //清零}}if (flag1 == 3){OLED_ShowCHinese(45, 2, 26);OLED_ShowCHinese(60, 2, 27);OLED_ShowCHinese(75, 2, 28);OLED_ShowCHinese(90, 2, 29); //远程模式Uart3_SendCMD2(0x01, guangmi);Uart3_SendCMD2(0x02, sonic_distance / 10);switch (Res3){case 3: TIM_SetCompare2(TIM2, 400);break; //开灯case 4: TIM_SetCompare2(TIM2, 899);break; //关灯case 5: TIM_SetCompare2(TIM2, 200);break; //三档灯光case 6: TIM_SetCompare2(TIM2, 400);break; //二档灯光case 7: TIM_SetCompare2(TIM2, 800);break; //一档灯光case 8: TIM_Cmd(TIM4, ENABLE);OLED_ShowNum(40, 6, timer1, 3, 16);break; //开启计时case 9: TIM_Cmd(TIM4, DISABLE);OLED_ShowNum(40, 6, timer1, 3, 16);break; //关闭计时case 0x10: TIM_Cmd(TIM4, DISABLE);timer1 = 0;//清零OLED_ShowNum(40, 6, timer1, 3, 16);break;}}if (key == 4){timer1 = 0;}}
}

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”

http://www.dtcms.com/a/469905.html

相关文章:

  • 构建和部署Spark、Hadoop与Zeppelin集成环境
  • 网站建设引擎广西住房和城乡建设厅领导班子
  • 把dxf转化成图片喂给vlm实现图纸检查比如尺寸有没有漏标
  • C++基础:(十一)vector深度剖析:底层原理与模拟实现
  • 【自用】request.ts 封装,带 token 过期后自动刷新 token 的功能
  • 成都定制网站建设服合肥公司注册地址
  • 分布式事务在前后端分离场景下的最终一致性实现
  • 农产品电子商务网站建设要求锦州网站建设公司
  • SSH命令建立隧道
  • [GazeTracking] 依赖项管理 | Docker化执行环境
  • uniapp web-view相互通信方法
  • (2)Kafka架构原理与存储机制
  • uniapp学习【项目创建+项目结构解析】
  • 虚拟机所需的硬件功能在目标主机上不受支持或已禁用:*长模式:对于支持64位客户机操作系统而言是必需的。
  • Uniapp微信小程序开发:http请求封装。
  • 个人可以做商城网站吗合肥制作网站价格
  • 网站制作的前期主要是做好什么工作网站的构思
  • java每小时调动一次,生成任务,基于corn表达式动态调动任务执行
  • 网站模板兼容手机端市场推广是做什么的
  • 企业微信防封防投诉拦截系统:从痛点解决到技术实现
  • vue的组件通信
  • 掌握PINN:从理论到实战的神经网络进阶!!
  • wordpress thremeseo推广排名软件
  • 安平县哪里做网站建立公司网站视频
  • PostgreSql ALL 与 ANY 区别
  • 解决 husky > pre-commit hook failed (add --no-verify to bypass)
  • 模拟器抓包
  • (数据结构)线性表(下):链表分类及双向链表的实现
  • 阿里云短信服务配置说明
  • Java+SpringBoot+Dubbo+Nacos快速入门