基于STM32 单片机的智能视力保护系统设计

2023-08-07 09:20徐兴洁周厚明
科技创新与应用 2023年22期
关键词:测距超声波视力

周 健,徐兴洁,周厚明

(贵州医科大学 生物与工程学院,贵阳 550000)

新冠病毒感染疫情下,各地区学生在家“上网课”已成主流。大范围的“云端”教学,对儿童青少年近视防控工作提出极大的挑战。《综合防控儿童青少年近视实施方案》中提出了阶段性的防控工作对象,分别针对家庭、学校和学生等不同的主体实施近视的防控举措。基于此防控成果和疫情用眼带来的全新挑战,《儿童青少年近视防控光明行动工作方案(2021—2025 年)》发布,促进儿童和青少年视觉健康预防和控制,足以说明国家对于儿童和青少年的高度重视。2022 年“两会”上,视觉健康的话题更是被反复提及,全民视觉健康已上升为国家战略关注的高度,全方位、全流程、全周期地做好眼病防治工作具有十分重要的意义[1]。

在此情况下,急需设计一种可以对视力进行全方位保护的体系,以科学有效的方式使儿童和青少年学习环境得到最大限度的提升。本实用新型保护系统对学习环境进行实时探测,在准时提醒使用者户外运动及适时休息的情况下,对视力状况进行实时监控。最终在可以帮助儿童青少年在保护视力、维护身体健康的前提下,高效地学习,做到劳逸结合[2]。

1 系统总体方案设计

该系统针对全国范围内每天都要阅读和书写的儿童及青少年,采用嵌入式技术、通信技术,设计了一套集提醒与监控功能于一体的视力保护方式,为儿童及青少年提供视力预防及保护。根据智能视力保护系统实现的特定功能及应用场景,构建该系统硬件平台时需考虑如下几个方面:硬件总体占用空间尽量小,功耗较低,运行稳定,操作方便。与传统保护视力产品相比功能更丰富,使用体验感更强。

该系统以STM32 单片机为核心控制单元,设计多功能视力保护器,利用光敏电阻获取光线信号,利用超声波传感器获取人眼与书本之间的距离,同时该系统的内部时钟能够自动计时并最终在TFT LCD 中实时地显示光强、距离、时间和日期,如图1 所示。在其中任一参数未达到设定值的情况下,系统会自动进行未达到项目的语音提示或蜂鸣报警。例如,按标准把用眼距离的设定值设定在33 cm 以上,在检测到用眼距离小于33 cm的情况下,系统会发出“你学得太近了,请把它调正,然后接着学”的语音提示。如果用户在5 min 之内未进行相应调整,则蜂鸣器发出蜂鸣声,再一次提示用户。按照标准配置用眼时长为180 min,其中45 min 内进行中间休息效果最好,每45 min 就会有语音提醒使用者注意休息或进行户外运动。用眼环境光强值在200~400 lux范围内最好,大于阈值时进行语音提示[3]。

图1 系统总体设计框图

2 系统硬件设计

2.1 STM32F407ZGT6 主控模块

根据用户和实际需要,在易用性,I/O 接口个数,系统功耗和主频方面综合考虑后最终选用ST 公司生产的STM32F407ZGT6 为主控芯片。该芯片采用ARM Cortex M4 内核,1 024 KB FLASH,主频高达168 MHz。拥有3 个12 位的模数转换器(ADC),2 个12 位数模转换器(DAC),2 个16 路直接存取(DMA)控制器,17个定时器,1 个内存卡接口(SDIO),3 个集成电路总线(IIC),6 个串口,1 个带日历功能的时钟源(RTC),1 个静态存储器控制器(FSMC)接口等。通过对相关信息的调阅,本芯片可以高效率地完成本设计中所有的功能。

2.2 超声波测距模块

社会在不断发展,人们的需求在不断变化,超声波作为非接触检测技术在设计上更加精密,在应用上更加广泛,其不会受到光线、被测物体色彩等因素的干扰。并且测量非常准确,极其便利,简便易行,运行稳定,传输速度高。所述超声波传感器包括用于发射超声波的发射器,用于探测物体物理物体反射波的接收器,控制电路及电源电路。本设计中使用的HC-SR04 超声波测距模块能够提供2~400 cm 非接触式距离感测,测距精度能够达到3 mm 以上。基本工作原理等如下。

1)利用I/O 口Trig 触发测距并为测距提供至少10 us 高电平信号。

2)该模块对8 个40 kHz 方波进行自动发射并自动检测有无信号返回。

3)有信号返回时,本模块信号接收引脚(Echo)的I/O 口处于高电平,而STM32 内定时器则开始计时,高电平的持续时间即超声波由发射至返回。试验距离=(高电平时间×声速(340 m/s))/2;为提高测量精度,在θ不容忽视的情况下,如图2 所示。

图2 超声波测距原理

综合考虑,选择HC-SR04 为该系统测距模块,其既具有较高性价比又能够最大限度满足系统设计需要。

2.3 光敏模块

该系统采用光敏二极管(光敏电阻)作为光敏传感器,对光的变化非常敏感,其功能类似于检测开关。在没有光照的情况下,会出现一个小饱和反向漏电流或暗电流,这时光敏二极管就会截止。在光照条件下,饱和反向漏电流显著增大并形成了光电流,光电流随着入射光的强度发生变化。当光照射到传感器上形成空间电荷区(PN 结),能在PN 结内形成电子-空穴对,从而提高了少量载流子密度。这些载流子受到反向电压的作用会发生漂移从而导致反向电流的增大。因此,光照强弱可用于改变电路电流。利用这种电流变化,串上电阻便可换算成电压变化来由ADC 读出电压值来判断外界光线强度,然后将其转换并比对设置的标准阈值,大于阈值则触发语音提醒[4]。

2.4 智能语音提示及报警模块

模块主要包括智能语音提示和蜂鸣报警2 个部分。语音提示模块使用ES8388 芯片进行设计,主要包括高性能低功耗高性价比音频编解码器、麦克风放大器、耳机放大器、数字音效及模拟混合与增益功能等。ES8388 控制采用I2S 接口与微控制单元(MCU)传输音频数据,并采用两、三线接口方式配置。本实用新型系统可以对事先产生的WAV 语音提示文件进行有效解析,并在单片机控制下及时提示使用者应该休息或移动。

另外,蜂鸣器为电子讯响器一体化结构,由直流电压提供电源,在计算机、打印机、复印机、报警器和电子玩具等设备中应用十分广泛;并在汽车电子设备、电话机、定时器及其他电子产品中作为发声器件使用。本设计使用了有源蜂鸣器,当语音提示5 min中未进行相应调节时,用户会发出蜂鸣声,再次提醒用户进行调节。

2.5 TFT LCD 显示及调节模块

近年来,TFT LCD 在嵌入式系统上的应用日益广泛。本次设计所使用的电容式TFT LCD,其功能完善、触感良好、不需要校准、透光性强,支持多点触摸,人机交互体验感非常强。为了节省开发成本,2.8 英寸(1 英寸等于2.54 cm)TFTLCD 模块完全可以满足系统设计要求,支持65 K 色显示、320×240 显示分辨率、16 位8080 并口接口,自带触摸功能。用户在选择学习模式后可在屏幕上实时显示超声波测距的真实数值、真实使用时长、真实光照强度及相应阈值和当前日期等信息。同时,在该系统中设置了3 个单独的按键来调整,其中1 个为复位键,1 个为加运算键和1 个为减运算键。用户在45 min 内可按需自由设定学习时长。另外,若用户所选模式为视力检测模式,则在屏幕上显示视力表标准图标进行检测,并在检测结束时将检测结果显示出来。模块连接如图3 所示。

图3 显示模块硬件连接

2.6 外围电路模块

该设计外围电路设计主要有接口连接电路、触发电路和同步电路。接通电源后系统即在通电状态下工作,亦能正常工作,并在低电压时工作。另外,出于对环保的考虑,没有选择电池供电而是选择了5 V 电源,并且利用常见的安卓系统数据线就可以为系统提供电源。

3 系统软件设计

本设计调试所用STM32F407ZGT6 单片机系统,程序设计的基本任务是对操作系统单片机内部硬件资源进行合理利用,对其有关应用程序进行了编程,通过与逻辑运算相结合,对内部单片机内部I/O 及硬件资源进行了重新调配。编程中具体的设计思路为:首先将单片机主要应用程序设计定下来;其次,针对各软、硬件及电路模块基本功能与要求分别设计软、硬件及子程序;最后,各部分软、硬件及子程序被直接植入主应用程序。系统应用程序设计与编写及单片机软件设计都是用简单C 语言来完成的,C 语言应用程序设计中可以用简化编程的方法使之快速、最大限度地为人了解并得到使用者的认可,运行起来也能快速上手。主程序工作流程如图4 所示。

图4 系统软件工作流程

3.1 光照检测子程序设计

该系统利用ADC 模数转换器将光敏电阻传感器从光线环境中反馈的电阻值、对应生成的电压值变换为数字信号输出给单片机STM32,最后通过预置光照检测标准值针对工作状态光线环境进行判断,如果未满足预设范围值,系统发出报警提示[5]。

3.2 超声波测距子程序

系统初始化超声波测距模块,通过STM32 承担与超声波传感器端口相连,并将2 个指定频率信号输出到超声波传感器“控制端”界面,程序将单片机设置的超声波定时器信号送给单片机开始工作,使其从此自动计时单片机及超声波传感器由要求发出至回来的时刻及频率。经检测获得单片机及超声波传感器由请求并返回定时信号,单片机及超声波传感器控制“接收端”界面检测到输出低电平后,由单片机开始立即外部中断请求相应定时模式,而负责此声波测距模块自动计数的超声波定时器自动计数系统运行至此完成。所需的超声波距离值,则由负责定时器进行自动计算,并显示于画面。当声波距离传感器检测值低于自动计数程序设定值时,系统发出报警信号进行提示[6]。

3.3 定时子程序设计

对模块进行编程,使定时器计时到达45 min 时进行报警提示。先初始化定时器,当定时器处于闲置状态时,使定时器开启定时功能,若这个定时器被打断,在其执行对应数量的打断后到达1 s,然后以秒变量增加至60 s,即1 min,这时分钟亦逐次向上增加,直至45 min,即至程序设定值时电路报警。

3.4 视力检测子程序设计

本设计使用了国家标准视力表进行检测,在进入视力检测模式时通过对图标“E”开口方向进行判断以反映视力状况,TFT LCD 显示屏随机产生视力表中的4 个不同开口方向的图标“E”,屏幕右下方显示上下左右4 个按钮,当使用者判断出清晰可见的字母开口方向时,单击对应的屏幕按钮。然后,单片机把得到的键值和程序内视力表数组比较,如果用户回答正确,则自动产生下一图标进行比较,如果用户误判,程序自动对标志位进行记录1 次,首次出现相同行次答错数超过3 次时,回到前一行次继续进行检测,若下一行次再次出现判断错误数超过3 次,系统将该行次视力值记录并显示于屏幕。

3.5 中断子程序设计

单片机本能的运行状态是中断,中断是在整个程序运行过程中,忽然碰到某一个程序有棘手问题要解决,正在执行任务的项目将马上中止任务,首先去处理突发状况项目,处理完毕后回到暂停执行的项目继续执行。其中既有内部中断,也有外部中断。STM32 中断源产生中断信号,提交给向量中断器(NVIC),经过判断处理后将指令传递给CPU 执行。

4 系统仿真与调试

系统软件与硬件全部设计完毕之后以Keil uVision5 为编程环境对编写的程序文件进行HEX 格式的转换,然后在单片机上进行烧录,采用STLINK 仿真器对各模块进行了仿真研究,对系统的运行效率和稳定性进行了观测,并对各模块做了优化和调整,最终观测到了系统的总体运行状态,从而实现了视力保护,实现视力检测等各项指标的监测。

5 系统测试

为了验证系统的功能实现,对系统进行实际测试并在上电后输入系统初始界面单击选择学习方式,学习时间定为10 min,用眼距离定为33 cm,光线范围定为200~400 lux。试验结束时,系统发现对应模块数值超出范围时均有智能语音提醒,未做调整时间超过5 min 时系统会自动蜂鸣报警。点选视力检测模式,当用眼距离、光照不在正常值范围内时,语音提示测试环境不佳。经调整后,正常进入视力检测,屏幕上的测试图标显示的大小及顺序均正常,最终测得的左右眼视力检测值分别为左眼5.1、右眼5.3。

6 结论

本研究通过分析现有儿童青少年视力状况以及视力障碍产生的共同原因,从硬件与软件两方面进行设计。本系统不但可以实现学习环境、用眼距离和学习时间等信息的实时监控,并且实时校正无意识发生的不良用眼习惯,而且还可以实现没有专业人员时使用者可以独立检测其视力变化,并做出及时调整,功能非常丰富,且STM32 系统工作稳定,可以帮助儿童和青少年更好地保护视力,显著降低近视率和视力障碍率,有较大的推广应用价值。缺点是各模块联合检测精度有待提高,同时希望该系统能够实现与用户监护人的联合使用,有望实现视力检测数据的实时传输,同时做到让监护人及青少年儿童共同保护视力。

猜你喜欢
测距超声波视力
上午给眼睛“充电”或可改善视力
类星体的精准测距
保护视力等
好奇:20/20视力到底是什么?
基于Niosll高精度超声波流量计的研究
视力测试
浅谈超声波测距
蝙蝠的超声波
超声波流量计的研究
超声波流量计在兰干渠上的应用