红外探头导盲系统的论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、前言
社会中有很多的盲人,他们出行时有的带只导盲犬,有的拿着手杖,有的由家人陪着。这样对他们自身有很多限制,虽然市场上有很多导盲产品,比如超声波导盲仪、电子导盲仪,但是这些产品有一定的局限性,不是反应速度慢就是体积庞大,携带不方便。鉴于这种情况,提出了主要由红外探头对障碍物的探测、单片机对系统的自动控制和语音提示的导盲仪的设计。
二、产品介绍
该仪器设计为眼镜和耳机一体化的产品,但不是普通的眼镜和耳机,这种产品使用起来简单方便,而且体积很小,并且智能化很高。该产品里面有红外探测仪,语音提示系统,单片机应用技术系统。当盲人带上它时,红外探头就会向四周空间和地面发出信号,当信号触碰障碍物,检测元件将会将这个信号检测并传给单片机,单片机对这种信号进行处理。如果地面不平或是雨雪天气等有障碍物,红外线反馈回来的信号就会变为一种语音提示或警报,让盲人做出合理的判断。
三、外观设计
1.该产品设计就和普通的眼镜一样,只是眼镜腿上多了一个耳机;
2.在右面的一个镜腿上有一个电源总开关,只要打开电源开关,系统就会自动执行导盲程序;
3.在左面的镜腿上从上往下依次就是广播或音乐娱乐开关、地图语音讲解开关、语音自动拨号开关;
4.眼镜虽然有两个镜片,但这两个镜片是太阳能电池板做的,只要有太阳就会自动充电,并且红外线就是由这两个镜片所发射;
5.眼镜腿就是接收广播信号的天线,只是隐藏在里面了;
6.自动语音拨号功能的硬件就设计耳机里,并且有显示电话薄的电子显示屏,里面贮存了家人的电话号码或是报警的求救电话号码。
四、操作介绍及流程图
该仪器操作很简单,当盲人带上红外探头导盲仪时,只需打开电源开关,
红外探头就会自动发出红外线信号,来检测障碍物。如果没有障碍物或者盲人坐下休息时只需转换开关,就会有同步新闻报道或是自己喜欢的音乐。如果逛街或旅游迷路时,只需转换开关就会连接到GPS云资料库的定位系统里,自动定位,就会有语音提示路线,来供参考选择。如果自己不好判断,就会有另一项功能实现,那就是语音拨号,这时你只需说出是求救家人还是消防队,它就会自动判断最近的求助对象拨出电话号码,来解决这一问题。
图1 红外探头导盲仪流程图
五、红外避障电路图
避障传感器通常是一个红外发射+红外接收组成,这个红外接收管对38KHZ 比较敏感,红外发射管发射这个波段的红外线,当碰到障碍物后,红外波被反射回来,接收管接收到,就判断这个方向上有障碍物。
图2 红外避障电路图六、智能红外探头避障C语言程序
智能红外探头避障C语言程序如下所示[5]:
#include
bit RandomFactor =0;
bit RandomFactorBuf =0;
#include
#define FLeftMotor P0_2=1;P0_3=0
#define BLeftMotor P0_2=0;P0_3=1
#define FRightMotor P0_5=1;P0_4=0
#define BrightMotor P0_5=0;P0_4=1
#define LeftStop P0_2=0;P0_3=0
#define RightStop P0_4=0;P0_5=0
#define CarStop P0_2=0;P0_3=0;P0_4=0;P0_5=0 #define RightSenser P0_0
#define LeftSenser PO_1
void TurnLeft_1()
{
LeftStop ;
FRightMotor;
}
void TurnLeft_Fast() {
BLeftMotor; FRightMotor;
}
viod TurnRight_1() {
RightStop; FLeftMotor;
}
viod TurnRight_Fast() {
BRightMotor; FLeftMotor;
}
void BTurnRight_1() {
LefStop; BRightMotor;
}
viod BTurnLeft_() {
RightStop; BLeftMotor;
}
viod FCar()
{
FLeftMotor;
FRightMotor;
}
viod BCar()
{
BLeftMotor;
BRightMotor;
}
viod Obstacle_Avoid(viod)
{
if (RightSenser && LeftSenser&&PWM) {
PCar();
}
if ((!RightSenser) && LeftSer&&PWM) {
BTurnLeft_1();
}
if (RightSenser &&(! LeftSenser)&&PWM) {
BTurnRight_1();
}
if (!RightSenser || LeftSenser)
{
RandomFactBuf=RandomFactor;
{
if(RandomFactorBuf)
{
BTurnLeft_1();
delay(300)
}
if(!RandomFactorBuf)
{
BTurnRight_1();
delay(300)
}
}
}
if(!PWM)
{
LeftStop ;
RightStop;
}
}
viod Follow(viod)
{
if (RightSenser && LeftSenser&&PWM) {
LeftStop ;
RightStop;
}