基于STM32单片机的智能书桌设计与实现

发布者:温馨小筑最新更新时间:2022-12-09 来源: zhihu关键字:STM32  单片机 手机看文章 扫描二维码
随时随地手机看文章

研究结果表明,学生的读写姿势不正确率高达70%甚至85%以上[1]。不良的读写姿势、不合适的光照条件会令学生不停地调整眼睛的睫状肌,容易降低睫状肌调节能力,进而导致近视[2]。从长远看,不良的读写姿势还会对学生的脊柱和颈椎形状,乃至整体形貌和健康产生负面影响;另一方面,久坐的办公方式容易导致肌肉骨骼疾患和颈椎、腰椎疾病[3][4]。


桌椅高度和光照情况是决定学生能否形成良好读写习惯的重要因素。传统桌椅高度固定,不能很好适应个性化的身高。所以,为了让不同身高的使用者培养良好的使用习惯,本项目设计了一款能根据使用者情况自动调节桌面高度的智能书桌系统。在此基本功能之外,该智能书桌还具有久坐提醒、坐姿不正提醒、随环境光照自动控制亮度的LED台灯、随环境温度自动控制转速的风扇、带密码锁的抽屉等功能。同时为了提高使用者使用体验,也允许用户对桌面高度、LED台灯、风扇进行手动控制。


1 设计思路

在对设计需求进行分析后,画出系统的原理框图,如图1所示。

为了能够简化系统结构和测试过程,本设计采用模块化的思想。

  • 人体感应模块用于判断当前是否有使用者。

  • 身高测量模块测量使用者身高,从而自动控制、调整书桌桌面高度以便适应使用者,让使用者可以以一个舒适的坐姿使用书桌,从而降低因不良坐姿导致眼部、颈椎、脊椎等健康问题的概率。

  • 坐姿检测模块用于判断使用者坐姿,并将信息反馈给主控芯片处理,避免使用者与桌面太近。

  • 语音播报模块用于坐姿不正提醒、久坐提醒。在自动模式下,主控芯片通过亮度测量模块得到的光照度控制LED灯的亮度;并通过温度传感器控制电扇通断及档位,对温度进行调节。

为了适应不同使用者的习惯,智能书桌系统还提供了手动控制功能,通过键盘模块手动调节桌面高度、亮度、闹钟以及抽屉密码锁。显示屏可以显示当前时间、温度、光照度等信息。


2 方案选择

本设计选择了STM32F407ZET6作为主控芯片,这是因为该芯片最高能以168MHz工作,且直接内置晶振、模数转换器和数模转换器,便于简化设计电路,专注于实现系统的功能。


人体感应模块、身高测量模块、坐姿检测模块功能通过测距实现。

常用的测距传感器有激光测距和超声波测距2种,激光测距使用串行通信(TTL)返回测量距离数据,测量精度最小可达到2mm,有效测量范围约为0.02~100m。


超声波测距测量精度同样2mm,测量范围0.02~4m。可见两种传感器最小精度相同,但是激光测距具有更大的测量范围。


另一方面,激光测距模块尺寸为72mm×40mm×18mm;而超声波测距模块的尺寸为45mm×20mm×15mm,更加小巧,便于安放在智能书桌上。


同时考虑书桌系统实际工作环境为室内,激光可能对人眼有的一定危害,所以选择超声波测距方式。


温度测量模块采用测量精度较高的DS18B20温度传感器。DS18B20温度传感器通过单总线与主控芯片连接,主控芯片对从传感器传来的数据进行处理,得到环境温度值。温度传感器的作用不仅是测量室温、提供给单片机判断是否开启风扇降温,而且还用于超声波测距时对超声波速度进行补偿。


亮度测量模块采用GY-30亮度传感器实现,这是由于GY-30亮度传感器与主控芯片以 IIC总线方式连接,需要的控制线少;另一方面,GY-30能够直接输出环境亮度的数字值,省略了复杂计算环节,无需标定就能获得高精度测量值。


键盘模块和显示模块采用触摸屏集成。为了实现良好的用户使用效果,采用支持多点触控的电容触摸屏,而不选用电阻触摸屏。


语音播报模块采用CN-TTS语音合成模块,可实现中文、英文、数字的语音合成,且支持用户的命令词或提示音的定制需求。CN-TTS控制方式简单,可兼容5V或3.3V单片机,单片机可以通过串口发送GBK编码的形式对其控制。


桌面高度调节模块采用步进电机和传动结构进行调整。步进电机在低速转动状态下扭矩大,带动的负载也更大。相数越多步距角就越小,能更为精确地调节桌面高度。为了能较精确控制桌面的高度,选择步进电机。


该升降桌重量W1=16kg,

升降部分重量W2=11kg,

最大载荷W3=56kg,

升降速度 v=13mm/s,

传动效率η=0.6,

所需最大功率为P=V*(W2+W3)*g/η=14.2W。

为保证正常工作,可选定30W功率电机。


3 方案实施

3.1 主程序流程

图2是主程序流程图。当检测到使用者在书桌旁后,首先检测使用者的身高,然后对书桌高度、风扇转速、台灯亮度进行调节,最后对坐姿进行监测,实现对不正确坐姿的友好提醒。

此外,如图3所示,本系统还设计了中断处理程序,当人体感应模块检测到人离开桌子时,程序会自动跳出主程序,进入待机模式,以实现低功耗要求。

3.2 人体感应、身高测量、坐姿检测

如图4、图5所示,通过3个超声波测距仪可以实现人体感应、身高测量、坐姿检测的功能。

测距仪1位置固定,其测量方向与桌面平行,用于测量模块到使用者胸前位置的水平距离S1,通过判断S1是否小于80cm来确定当前是否有人使用书桌。


测距仪2固定在舵机上,可随舵机转动,其初始测量方向与桌面平行。当判断当前有人使用书桌时,测距仪2从初始位置开始随舵机向上转动,同时测量距离;直到该距离突然增大,表明测距仪2此时发出的超声波已经越过了使用者的头顶,则上一时间点检测到的距离就是测距仪2与使用者头部的距离S2。


测距仪3位置固定,位于桌面下方,用于测量桌面到地面的垂直高度S3。由勾股定理得出,使用者的身高为:

得到使用者身高后,依据表1桌面高与身高对应关系表[5],将书桌桌面高度自动调节至适合人体的位置。

监测坐姿时,测距仪1用于间接测量使用者胸膛位置到书桌边缘的距离L1,测距仪1到书桌边缘的实测距离为60cm,则L1=S1-60。


正确坐姿时,L1应是“一拳”的距离,约为8cm。

当L1<8cm时,系统判定使用者胸膛位置到书桌边缘的距离不规范并进行语音提醒。

测距仪2通过使用者的身高L自动随舵机调节至合适位置并保持不动,用于测量其到使用者头部的距离S1,使用者眼睛到桌面的距离应为“1尺”,约为33cm,可用公式表示为:

当 Le2d<33cm时,系统判定使用者视线距离不规范并进行语音提醒。

3.3 桌面高度、亮度、转速调节

桌面高度调节通过控制电机带动书桌升降实现。为了实现对温度的自动调节,主控芯片通过PID算法调制I/O口输出的PWM波进行控制。单片机通过指定温度和当前温度计算出偏差,将其送入PID控制器,PID控制器经过运算,可计算出使误差最快减为0的PWM占空比,单片机通过设置定时器中断产生相应占空比的PWM脉冲,从而实现对风扇转速的控制,达到指定温度[6]。


同样,亮度调节可通过单片机的I/O口输出PWM信号的方法来实现。为确保人的肉眼看不到PWM脉冲,PWM信号的频率必须高于100Hz[7],即定时器定时时间T<0.01s。LED灯的亮度与PWM信号的占空比成正比[8],通过线性调节PWM高电平时间可以进行调光。为适应人眼舒适度,桌面上的维持平均照度值不能低于300lx[9],当亮度低于这一值时,系统将会自动调光。


4 调试与测试

由于GY-30亮度传感器能够直接输出环境亮度的数字值,无需复杂计算,无需标定就能获得高精度测量值。测试发现,由于温度影响导致超声波测距产生误差,改用带温度补偿公式[10]之后,测量值与实际值更接近:

式中,t为当前温度(单位:℃),v为当前温度下的实际超声波速度(单位:m/s)。

邀请了10位不同身高的同学对系统进行了整体测试。测试表明,智能书桌能按测试者的坐姿高度将桌面调整到合适的高度,且语音模块能正确播报坐姿矫正和久坐提醒。当切换到手动模式时,桌面高度、台灯、电扇等模块都能正确地响应键盘指令。智能书桌系统可以稳定、可靠地完成预设功能。经过测试,本项目所实现的智能书桌参数如表2所示。


5 结束语

本项目基于STM32单片机实现了一个智能书桌。该书桌能按照使用者的身高自动初步调节桌面到合适的高度,能在使用者距离桌面过近时发出语音提示,在久坐时进行提示,此外还能按照环境光、环境温度自动调节台灯和风扇。该智能书桌有助于使用者培养良好的读写习惯。


关键字:STM32  单片机 引用地址:基于STM32单片机的智能书桌设计与实现

上一篇:STM32F103系列头文件(支持位带操作)
下一篇:STM32标准库编程之LED闪烁

推荐阅读最新更新时间:2024-11-12 10:56

【自学51单片机】7--LED点阵学习
1、LED点阵介绍 LED点阵由多个LED小灯构成,以8*8LED点阵介绍,实物图和内部原理图如下。 图7-2左侧8个引脚为内部LED小灯阳极,上侧8个引脚为阴极。 2、点亮LED点阵 2.1 原理 点亮LED点阵与点亮LED小灯原理相似,根据LED点阵电路图分析即可,详细见第三章。 2.2 点亮全部LED点阵程序 利用定时器中断和数码管动态显示原理,就不进行说明,详细见第六章 3、取模软件简单介绍 取模软件可以将LED点阵图形的数据转换为程序中的数据。取模软件中黑色为LED熄灭,值为1,白色为LED点亮,值为0。如下图绘制了一个心形。 下面来说明取模软件参数的选取。 取模方式:根据LED点阵结构原理图
[单片机]
【自学51<font color='red'>单片机</font>】7--LED点阵学习
一文快速理解STM32中的上/下拉电阻
STM32中的GPIO 以STM32中的GPIO为例,如上图是GPIO的结构图。 从上图中标号2处可以看到,上拉和下拉电阻上都有一个开关,通过配置上下拉电阻开关,可以控制引脚的默认电平,这里有三种状态: 开启上拉时,引脚默认电压为高电平 开启下拉时,引脚默认电压为低电平 上拉和下拉不开启时,这种状态我们称为浮空模式 关于STM32的GPIO文章,请移步此处:STM32的GPIO电路原理。STM32上下拉及浮空模式的配置是通过GPIOx_CRL和GPIOx_CRH寄存器控制的,可以通过《STM32F1xx 中文参考手册》查阅。 开启上拉电阻或下拉电阻的作用 STM32内部的上拉其实是一个弱上拉,也就是说通过此上拉电阻输出的电流很
[单片机]
一文快速理解<font color='red'>STM32</font>中的上/下拉电阻
单片机按键切换下一首歌
#include at89x51.h #define uchar unsigned char #define uint unsinged int sbit speaker=P1^5;//蜂鸣器。按键默认的是P3.2脚(外部中断0) uchar t0h,t0l,time,flag; //-------------------------------------- //单片机晶振采用12MHz // 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据 uchar code FREQH ={0x01, //0的时候没有音符
[单片机]
单片机技术在无绳电话中的应用
  引 言   无绳电话CT(Cordless telephone)是连接市内交换网用户端的低功率双工无线电话。一般无绳电话具备普通电话的所有功能,如重拨、暂停、挂断、免提、记忆等。但由于无绳电话手座机之间为无线接续,这又决定了它具有一些普通电话所不具备的特点,如信道转换、身份 识别等。   国外主要发达国家均投入大量人力、物力积极进行无绳电话的开发研制,并迅速投入商用,短短十几年内已由CT-0发展到CT-3;从模拟发展到数字;从室内发展到室外公用;由单区制发展到多区制,且可进行越区交换、漫游通信等。多频道扫描无绳电话(CT-1),国外 发达国家80年代中期就开始商用,并得到迅猛发展。   1 系统框图及原理   CT-1
[单片机]
<font color='red'>单片机</font>技术在无绳电话中的应用
单片机PWM程序及仿真波形图
//******************************** //51单片机PWM波形产生程序 //作者:曾宪阳 //网址:http://hi.baidu.com/zxymcu //******************************** #include #define uchar unsigned char #define uint unsigned int uint a,b,c,f; uchar d,e; sbit P1_0=P1^0; void delay_2us(uchar t)//12M t*2+5us { while(--t);
[单片机]
如何使用STM32实现systick的精确延时
SYSTICK寄存器初始化 void SysTick_Configuration(void) { if (SysTick_Config(SystemCoreClock / 100)) { while (1); } NVIC_SetPriority(SysTick_IRQn, 0x0); } SysTick_Config默认时钟为SysTick_CLKSource_HCLK,所以在这之前使用SysTick_CLKSourceConfig()选择系统时钟不会改变systick的时钟 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks 》 Sys
[单片机]
本人关于IT技术体系的一些理解
根据我自己的想法和理解,IT技术体系并不能单纯地划分为软件和硬件(有些时候,持这种理解的人问的一些很嘲讽性的问题会让人吐血的),硬件我并不是十分精深,模糊中我认为纯粹的硬件应该分为模型和电路系统这两个部分,模具制作应该是属于模型的,PCB板属于两者都有,电路设计是画PCB的基础和前置条件,理应属于电路系统。两部分难度不分上下:模型需要更多的考虑环境和人的因素,电路则更倾向于技术知识。但是根据我看到的一些情况,往往懂技术的人不少,但真正能结合模型去思考电路(也就是根据实际情况,使用者的习惯,质量,外观等因素)的人在大学生中真的不多见。如果在本科阶段就能在技术之上结合模型相关的考虑,那么这个做底层硬件的人算是真的 硬起来 了,在就业
[单片机]
STM32 USART使用DMA设置
1、外设时钟初始化 首先初始化需要用到的外围设备设备的时钟,需要初始化的始终有USART RX DMA使用的DMA1、USART1、USART1使用的GPIO、AFIO(如果USART的管脚需要Remap则需要打开否则不用); /* DMA clock enable (USART RX using dma1) */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* USART clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Enable GPIO cloc
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved