零基础学会制作 基于STM32/51单片机的多功能学习桌设计/智能书桌/智能学习桌/学习桌

项目介绍

设计一基于单片机的多功能学习桌系统,该系统以单片机为核心,能够有效监控用户的书写习惯、学习时长以及当前学习环境的光照强度。其硬件部分由测距模块、光照模块、显示模块、语音模块等组成。通过测距模块检测人与多功能桌之间的距离;通过光照模块检测周围灯光,提供良好的照明;显示模块通过OLCD显示屏显示书桌的基本信息;报警通过语音模块发出声音提醒使用者纠正坐姿。

功能介绍

1)测量用户与书桌之间的距离并显示;
2)若检测距离小于用户设定值,进行报警提醒;
3)可检测当前学习环境的光照强度并显示;
4)若检测光强超出阈值则报警并调节;
5)语音报警提示;
基于STM32单片机的多功能学习桌设计旨在创建一个智能化、互动性强、用户友好的学习环境。通过集成超声波测距模块、光照检测模块、OLED显示模块、语音模块和步进电机模块,该设计能够提供高度自动化和个性化的学习体验。该设计具有智能高度调整、环境光线适应、信息显示与互动、语音交互功能。用户可以根据身高手动按键调整桌面高度,以达到最舒适的学习姿势,根据当前环境光线自动调节桌灯亮度,保护用户视力,通过OLED显示模块显示当前时间、学习提示信息,并接收用户指令进行互动,利用超声波测距模块进行坐姿检测并通过语音模块提示用户。STM32单片机作为系统的核心控制单元,负责处理各模块的数据交互和执行相应的控制算法。超声波测距模块用于测量用户到桌面的距离,以便自动调整桌面高度,以及定位桌面上物品的位置。

所用模块

基于STM32单片机的多功能学习桌设计旨在创建一个智能化、互动性强、用户友好的学习环境。通过集成超声波测距模块、光照检测模块、OLED显示模块、语音模块和步进电机模块,该设计能够提供高度自动化和个性化的学习体验。

系统原理图

在这里插入图片描述

实物图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码

#include “sys.h”
#include “stdio.h”
#include “string.h”
#include “stdlib.h”
#include “math.h”
#include “delay.h”
#include “gpio.h”
#include “key.h”
#include “oled.h”
#include “usart.h”
#include “dht11.h”
#include “adc.h”
#include “hc-sr04.h”
#include “motor_bujin.h”
#include “motor_bujin1.h”
#include “timer.h”
/**********************************
变量定义
**********************************/
char display_buf[32]; //显示缓存区
uint8_t key_num = 0; //按键扫描标志位
uint8_t flag_display = 0; //显示界面标志位
_Bool flag_mode = 0; //当前模式标志位
uint32_t time_num = 0; //10ms计时
uint32_t light_value = 0; //光照值
uint8_t light_max = 70; //光照最大值
uint8_t light_min = 30; //光照最小值
u16 temp_value = 0; //温度最大值
u16 temp_max = 40; //温度最大值
u16 temp_min = 10; //温度最小值
u16 humi_value = 0; //湿度最大值
u16 humi_max = 70; //湿度最大值
u16 humi_min = 30; //湿度最小值
uint32_t distance_value =0; //距离值
uint8_t distance_max = 30; //距离最大值
uint8_t distance_min = 20; //距离最小值
uint32_t time_all = 0; //定时时长
int16_t time_set_h = 0; //定时(时)
int16_t time_set_m = 0; //定时(分)
int16_t time_set_s = 0; //定时(秒)
_Bool flag_time_end = 0; //定时时间到达标志位
_Bool flag_zuozi = 0; //坐姿标志位
uint32_t flag_dj = 0; //电机角度
uint32_t flag_dj1 = 0; //电机角度
_Bool flag_zz = 0; //电机正转标志位
_Bool flag_fz = 0; //电机反转标志位
_Bool flag_zz1 = 0; //电机正转标志位
_Bool flag_fz1 = 0; //电机反转标志位
extern uint32_t pwm_value; //pwm值
extern _Bool flag_timer_begin ; //计时开始标志位
extern _Bool flag_1s ; //定时1s完成标志位
extern uint8_t usart1_buf[256]; //串口1接收数组

/**********************************
函数声明
**********************************/
void Key_function(void); //按键函数
void Monitor_function(void); //监测函数
void Display_function(void); //显示函数
void Manage_function(void); //处理函数

/****
******* 主函数
*****/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组
Delay_Init(); //延时初始化
Gpio_Init(); //IO初始化
Key_Init(); //按键初始化
Oled_Init(); //OLED初始化
Oled_Clear_All(); //清屏
Usart1_Init(9600); //串口1初始化
TIM2_Init(9,7199); //定时器初始化
Motor_Bujin_Init(); //步进电机初始化
DHT11_Init(); //温湿度初始化
Adc_Init(); //ADC初始化
HC_SR04_Init(); //HC_SR04初始化

while(1)
{
	Key_function();										//按键函数
	Monitor_function();								//监测函数
	Display_function();								//显示函数
	Manage_function();								//处理函数

	time_num++;												//计时变量+1
	Delay_ms(10);
	if(time_num %10 == 0)
		LED_SYS = ~LED_SYS;
	if(time_num >= 5000)
	{
		time_num = 0;
	}
}

}

/****

资料下载链接

「实物制作资料.rar」,来自夸克网盘分享。
夸克网盘无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
/9ac5346gXR😕
链接:https://pan.quark.cn/s/d2ad8fd8cd73
提取码:d1hQ

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值