基于单片机的多功能视力保护仪设计
2023-12-18祖一康徐妙婧
祖一康, 徐妙婧
(1.黄冈师范学院 机电与智能制造学院, 湖北 黄冈 438000; 2.黄冈师范学院 物理与电信学院, 湖北 黄冈 438000)
0 引 言
根据相关报道,全国青少年总体近视率为53.6%,其中小学生为36%,初中生为71.6%,高中生为81%。由此可见,近视已成为当下青少年比较普遍的眼健康问题。青少年长时间用眼,过近看书、看电视、玩电子产品,光线过强或过弱等不当用眼习惯,会导致视力下降。青少年的视力保护已成为家长和社会普遍关心的问题。
学者们围绕着青少年视力防护展开了研究,文献[1-3]设计的视力防护仪具有距离测量、光线检测、定时功能,可通过蜂鸣器发出报警声音。但蜂鸣器发出的声音比较尖锐,在一定程度上会影响青少年的学习状态,而且家长无法在不打扰孩子学习的情况下通过远程及时了解相关信息。
文献[4]在上述文献设计的功能基础上,采用语音芯片播放声音提醒,可根据光线自动调节台灯亮度,还带有GSM 短信通信功能,可给监护人发送短信提醒,在孩子长时间没有调整坐姿时发短信通知监护人,但是监护人不能看到具体的距离和光线强弱信息。
针对上述问题,文中设计了一种视力保护仪,它除了能实现距离检测、光线检测、参数设定、数值显示、定时等基本功能外,还能实现语音播报提醒、手机远程监督等功能,通过蓝牙将距离、光线、时间传输到手机APP实时显示。当距离小于设定值、光线小于或大于设定值时,除了现场发出语音提醒外,手机APP 中也会出现文字提醒,便于家长在不打扰孩子学习的前提下进行远程监督。所设计的视力保护仪具有结构简单、功能齐全、操作方便等优点,能够很好地实现对青少年的视力保护,具有很强的实用性。
1 总体设计
视力保护仪以STC89C52 单片机为控制器,主要包括距离测量模块、光线检测模块、显示模块、按键模块、语音播报模块、蓝牙模块等。系统总体设计结构框图如图1 所示。
图1 视力保护仪系统总体设计结构框图
1) 距离测量模块:采用HC-SR04 超声波模块测量距离,通过显示模块实时显示,当测量距离小于设定值时,语音播报模块发出“距离太近,请坐直”的语音提醒。
2) 光线检测模块:采用光敏电阻检测光线,并通过ADC0832 转换为数字量,经单片机处理后在显示模块上显示。当光线小于设定值时,语音播报模块发出“光线太暗”的语音提醒;当光线大于设定值时,语音播报模块发出“光线太强”的语音提醒。
3) 按键模块:设置距离、光线的设定值,以及定时时间值。
4) 语音播报模块:根据测量值与设定值比较结果发出相应的语音提醒。
5) 显示模块:实时显示距离、光线以及时间。
6) 蓝牙模块:实现与手机APP 通信,便于家长远程监督。
2 硬件电路设计
2.1 超声波测距电路设计
采用HC-SR04 超声波模块测量距离,该模块测量精度高(精度为3 mm)、稳定性好、盲区小,有4 个引脚,分别为VCC(电源正极)、GND(接地)、Trig(触发信号输入)、Echo(回响信号输出)[5-6]。超声波测距电路图如图2 所示,Trig、Echo 分别与单片机的P3.3 和P3.4 引脚相连接。
2.2 光线检测电路设计
光线检测电路由光敏电阻和模数转换器ADC0832组成,电路连接图如图3 所示。
图3 光线检测电路连接图
光敏电阻的阻值随着光线强弱的变化而变化,光线越强阻值越小;光线越弱阻值越大[7]。光敏电阻与电阻R1构成了串联分压电路,电阻R1的电压随着光线强弱变化而变化,这样电压的变化就能够反映光照强度的变化。
由于电压值是模拟量,单片机不能直接处理,因此采用模数转换器ADC0832 将其转换为数字量,分压电路与ADC0832 的通道0 相连接。ADC0832 为8 位分辨率、双通道的A/D 转换芯片,其最高分辨率可达256 级[8]。其片选引脚CS、时钟引脚CLK 分别与单片机P1.4、P1.5引脚相连;由于数据输出DO 和数据输入DI 不同时有效,因此将它们并联一起,与单片机的P1.6 引脚相连。
2.3 语音播报电路设计
语音播报电路由WT588D 语音芯片和扬声器构成。WT588D 语音芯片具有单片机内核而且可重复擦除烧写,它具有MP3 控制模式、按键控制模式、按键组合控制模式、并口控制模式、一线串口控制模式、三线串口控制模式,以及三线串口控制 I/O 口扩展输出模式等多种控制模式和PWM、DAC 两种输出方式。WT588D 语音芯片内置了SPI-FLASH 存储器,可控制的语音地址位达220 个,每个地址位里能加载和组合的语音为128 段[9]。文中采用三线串口控制模式,该模式由片选CS(P02)、数据DATA(P01)和时钟CLK(P03)三条通信线组成,时序根据标准SPI 通信方式[10]设置。通过该模式可以实现语音芯片命令控制、语音播放。采用PWM 输出,可直接驱动0.5 W/8 Ω 扬声器。WT588D 语音芯片电路连接图如图4 所示,语音播放忙信号输出脚BUSY、片选CS(P02)、数据DATA(P01)、时钟CLK(P03)、复位引脚RESET 分别与单片机的P2.0、P2.2、P2.1、P2.3、P2.4 引脚相连;PWM+、PWM-与扬声器相连。
图4 WT588D 语音芯片电路连接图
2.4 显示电路设计
采用LCD1602 液晶显示器显示距离、光线、时间信息。LCD1602 是一种字符型显示器,可以显示字母、数字、图形符号等[11]。LCD1602 具有16 个引脚,2 行显示,每行可以显示16 个字符,共32 个字符。显示电路连接图如图5 所示,LCD1602 的对比度调整引脚(VO)与电位器相连,数据和指令选择控制引脚(RS)、读写控制引脚(RW)、数据读写控制引脚(E)分别与单片机的P1.0、P1.1、P1.2 相连,数据引脚DB0~DB7 与单片机的P0 接口相连接。
图5 显示电路连接图
2.5 按键电路设计
按键电路由3 个按键和3 个上拉电阻构成,用于设置系统参数,按键电路连接图如图6 所示。S3 键为设置键,按下时进入设置界面,可依此对距离报警值、光线上限或下限报警值、学习时间进行设置,设置完成后按下S3 键退出设置。在设置参数时,S1 键为加,S2 键为减;在学习时,S1 键为开始学习,即按下时开始学习计时,S2 键为学习暂停,即按下时停止学习计时。
图6 按键电路连接图
2.6 蓝牙电路设计
采用HC-05 蓝牙模块实现无线通信,实现单片机与手机之间的通信[12]。蓝牙模块与单片机进行串口连接,如图7 所示,需要注意的是,蓝牙模块的TX 与单片机的RXD(P3.0)、RX 与单片机的TXD(P3.1)交叉相连[13]。
图7 蓝牙电路连接图
3 软件设计
软件设计是在前述硬件设计基础上编写程序,实现所需功能。软件设计包括主程序设计、超声波测距程序设计、光线检测程序设计、显示程序设计、语音播报程序设计、学习时间定时程序设计、按键程序设计和蓝牙程序设计等。主程序设计流程如图8 所示。
图8 主程序设计流程
3.1 超声波测距程序设计
单片机向超声波模块的触发信号引脚Trig 输入大于10 μs 的高电平,模块可自动发出8 个40 kHz 的方波信号[14]。有信号返回时,引脚Echo 输出高电平,高电平持续时间即为超声波从发射到返回的时间,这个时间可以采用单片机内部的定时器获得。当Echo 为高电平时启动定时器,当Echo 为低电平时停止定时器,即可计算出超声波往返时间。超声波测距程序流程如图9 所示,距离公式为:
图9 超声波测距流程
式中:d为测量距离,单位为m;v为声速,单位为m/s;t为超声波从发射到返回的时间,单位为s。
3.2 光线检测程序设计
采用ADC0832 将光敏电阻电压变化转化为数字量。ADC0832 启动A/D 转换前需将片选引脚CS 置为低电平。第一个脉冲下降沿之前,数据信号输入引脚DI保持高电平,启动A/D 转换。第2 和第3 个脉冲是通道选择,文中采用单通道、通道0,因此第2、第3 脉冲DI 值为“1”“0”。第4~第11 共8 个下降沿从高位到低位读数据,第11~第18 共8 个下降沿从低位到高位读数据,数据读取完成后将片选引脚CS 置为高电平。将两次读取的数据进行比较,如果相等则返回值。光线检测程序流程如图10 所示。
图10 光线检测程序流程
3.3 显示程序设计
采用LCD1602 字符型液晶显示器显示相关信息。单片机控制LCD1602 显示字符,只需将待显示字符的ASCII 码写入显示数据存储器,就可将字符在显示器上显示出来。LCD1602 程序主要包括初始化、读状态、写命令、读数据、写数据、显示位置确定等。只需通过对RS、RW、E 这3 个引脚置“1”或清“0”,就可实现对LCD1602 的读写操作。LCD1602 显示程序流程如图11 所示。
图11 显示程序流程
3.4 语音播报程序设计
单片机通过三线串口与WT588D 语音芯片通信,通过三线串口发送语音地址就可以播放存放在该地址中的语音段,语音文件在WT588D 语音芯片中对应的地址如表1 所示,语音播报程序流程如图12 所示。
表1 语音文件地址
图12 语音播报程序流程
3.5 学习时间定时程序设计
采用单片机内部定时器T1 实现学习时间定时,定时器T1 工作在方式1、定时模式下,采用中断方式,设置基本定时时间为50 ms。设变量num 用于记录进入中断次数,变量shi、fen、miao 用于记录时、分、秒。学习时间定时流程如图13 所示。
图13 学习时间定时流程
3.6 按键程序设计
按键程序设计实现学习开始、暂停以及系统参数设置,定义变量view 表示参数设置。在S3(设置按键)没有按下的情况下,当view=0 时,按下S1 开始学习,测量距离、光线强度、学习时间定时,根据测量值与设定值比较发出不同的语音报警;按下S2 暂停学习,系统停止测量。在S3(设置按键)按下的情况下,进入参数设置,view 值加1,根据view 值进入相应的参数设置界面。按键程序设计流程如图14 所示。
图14 按键程序设计流程
3.7 蓝牙程序设计
HC-05 蓝牙模块具有命令响应和自动连接两种工作模式。蓝牙模块工作在命令响应模式时,可通过向模块发送各种AT 指令为蓝牙模块设定控制参数,比如蓝牙名字、密码、波特率等,蓝牙模块参数设置如表2 所示。蓝牙模块处于自动连接时,模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色[15],文中HC-05 蓝牙模块设置为从设备模式。手机端搜索周围蓝牙设备,找到表2 中的蓝牙设备名字,输入密码即可配对成功,实现蓝牙通信。
表2 蓝牙模块参数设置
4 系统测试
采用C51 语言在Keil μVision 4 软件平台中编写程序,编译无误后生成HEX 文件下载到单片机芯片中,程序下载完成后,给实验板通电。
按下S3 键进入参数设置界面,设置距离报警值为0.3 m,光线下限报警值为30%,光线上限报警值为80%,为了便于测试,将学习时间设定为5 min,即00:05:00。设置完成后按下S3 键退出参数设置。
打开手机蓝牙,找到HC-05 蓝牙设备,输入密码:1234,完成配对,进行蓝牙通信。按下S1 按键开始学习,当测量值大于各设定报警值时,LCD 液晶显示器和手机APP 显示测量值,语音模块不发出语音提醒,无报警时的显示界面如图15 所示。
图15 无报警时显示图
当测量距离小于设定值时,语音模块发出“距离太近,请坐直”报警提醒;当光线值小于光线下限值时,语音模块发出“光线太暗”报警提醒;当光线值大于光线上限值时,语音模块发出“光线太强”报警提醒;当学习时间达到设定的学习时间时,语音模块发出“时间到了,休息一会儿”报警提醒。与此同时,手机APP 端也会出现相应的文字提示,界面显示如图16 所示。
图16 有报警时手机APP 端显示
5 结 论
本文以STC89C52 单片机为控制器,设计一种多功能视力保护仪。该视力保护仪具有距离测量、光线强度检测、语音播报、蓝牙通信等功能。对视力保护仪的硬件设计进行了详细的介绍,从超声波测距电路、光线检测电路、语音播报电路、显示电路、按键电路、蓝牙电路等多方面展开设计;对软件设计从多角度进行了详细的介绍。
对视力保护仪进行了测试,测试结果表明:该视力保护仪能够实现上述功能,通过手机APP 也可以实时查看距离、光线强度等信息,并且当测量值与设定值不同时会发出语音播报提醒,手机APP 出现文字提醒,便于家长远程监督。该保护仪结构简单、操作方便、功能全,能够实现视力保护,具有较强的应用价值和广阔的市场前景。