博主福利:100G+电子设计资料合集https://dwz.date/fyQa
1、系统硬件设计
写字姿势的控制,其根源还在于坐姿的控制。本设计是设计一个集检测,控制,语音提醒为一体的矫正器,它通过检测摆放位置与学生胸膛之间的距离,作为水平距离;再加上打开仪器时选择使用者的身高来确定学生身体超出桌面部分的高度,作为垂直距离。通过勾股定理,算出当时学生视线的距离。
本设计开发的是具有语音播报功能的写字姿势自动矫正器。该系统具有可靠性高、实时性好、智能化等特点,系统主要由以下模块组成。供电模块:由稳压移动电源提供5V稳定电压,为整个系统供电;超声传感器模块:由HC-SR04传感器构成,主要是检测水平距离;晶振模块:为单片机提供合适的脉冲。液晶显示器模块:该模块主要作用是向学生展示当前的视线距离,读写的时间。语音模块:主要是用语音发送信息,这样才能保证即时性。
传感器是一种检测装置,由敏感元件,转换元件和变换电路构成,敏感元件是输入,转换元件是输出,变换电路起放大作用。敏感元件感受被检测的物理量,然后把被检测的物理量信号传递给转换元件;转换元件将敏感元件输入的物理量信号转换为电信号;变换电路负责对转换元件输出的电信号进行放大调制;转换元件和变换电路一般还需要辅助电源供电。
本系统是以单片机控制为主的写字姿势自动校正器设计,可以针对不同年龄段的使用人群进行不同的判定,根据测得数据进行分析,在不属于某个合理的范围外,进行提醒。但其实,不同年龄段的使用人群,其主要差距还是在身高上。据相关文献调查,青春期之前,儿童的每年平均增长身高为3-4cm,而步入青春期后,孩子每年的平均增长身高为8-10cm。
又通过相关文献调查,得出不同身高的人在写字的时候,有不同的眼距(这在相关文献里指的是眼睛到座椅表面的高度,而在本设计中,眼距就是写字的时候,使用者的眼睛到桌面写字位置的距离,也叫视线距离),根据这个不同的眼距来判断基于当前使用者身高的正确写字范围。如果即时检测到的这个视线距离不在这个范围内,那么语音模块就会报警提示。
超声模块作为整个矫正系统中的基础模块,设计以及实现难度都较低。而HC-SR04又是一个集成度很高的模块,不用再做什么额外的处理,就可直接使用。
HC-SR04超声模块检测的是使用者胸膛位置到物体摆放位置的水平距离,把这个距离作为直角三角形的一条直角边,再算法中预留另一条直角边,那么这样就可以算出使用者的视线距离。
在设计过程中,语音提示模块由两部分组成。一部分是蜂鸣器,一部分时集成语音模块。蜂鸣器的作用是在使用者的当前视线距离达不到或者超出符合当前身高的正确视线范围时,发出高频率的声响,向使用者报警。
集成语音模块在开始使用时便录取一段语音信息,然后在计时到达相应的计时周期时,将会播放这段语音,提示使用者应当休息。在本设计中,先模拟30s为一个计时周期,在维持正确的写字姿势的时候,每到一个30s,那么,语音模块会提示使用者做相应的休息,来缓解一下视觉疲劳和读写疲劳。
2、系统初始化程序设计
在主程序中,导入头文件,定义管脚,然后进行系统初始化。系统的初始化就是对每一部分的外部设备初始化,这其中也包括定时器的初始化。初始化之后,系统才会检测数据,然后处理,报警提示,做下一步的功能实现。在程序中,声明一个_init的函数,在函数内定义单片机管脚的地址(16进制)和高低电平值(0和1表示)。
3、传感器模块程序设计
在这一部分,先声明一个传感器模块的函数,命名为song,在函数内部,再声明传感器模块的标准延时,标准延时是一种精确延时,比延时函数要准确。一个_nop_就是一个时钟周期。在主函数的实现部分,先对定时器进行初始化,使HC-SR04传感器的输入输出管脚处于关闭状态,然后发送超声波,计算时间,最后算出距离。这个距离是水平距离。通过开始使用时选择的身高范围,计算出合适的视线距离,最后再比较判断。
4、延时和中断程序设计
延时和中断是用来控制是用来控制系统的中断和停止的。延时让程序空运行,让系统进行等待,中断主要实现的是用来测量距离时的计时功能。定时器的中断是通过晶振时钟进行计数的,由于晶振的频率一般来是很稳定的,所以它的脉冲频率也很稳定。从而通过对脉冲进行计数即可得到准确的延时目的。
5、控制模块程序设计
控制模块的程序主要承担数据对比和判断,判断结果的发送和程序计时以及中断的功能。中断部分前面小节已经详细说明,这里不再赘述。数据的对比部分,在这里设定参数,由于按键输入部分,是把身高分成了五类,每个按键都会响应一个值,根据这个值选取了相应的判断依据。视线距离参数设定为20-30cm和30-40cm,计时参数设定为30s。
系统将按键选择的身高范围数据通过人体黄金比例计算出上身高度,减去桌面高与椅高的差,得出身体超出桌面部分的高度,通过传感器检测的水平距离,用勾股定理计算出三角形斜边的距离,这个距离就是使用者视线的距离,然后与视线距离参数作比较。
如果超出相应范围,控制模块便会发送指令,让蜂鸣器和语音模块响应指令。这里需要注意的是,由于计算出的垂直距离在20-30cm这个范围内时,并不会低于20cm,也就是说,在这个范围内计算的视线距离不会小于视线距离参数。而在预想中,当视线距离小于20cm或者大于30cm或者小于30cm或者大于40cm的时候,系统都会做提示。