基于arduino的技能导盲棍的设计与实现文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《基于Arduino的智能导盲棍设计与实现》
报告
题目:基于Arduino的智能导盲棍
设计与实现_
姓名:某某某
专业:XXXXX
指导教师:
成绩:
计算机与信息工程学院
20 年月
目录
1.引言 (2)
1.1 项目背景 (2)
1.2 创意描述 (2)
1.3 项目分工......................................... 错误!未定义书签。
2.相关技术介绍 (2)
2.1 Arduino介绍 (2)
2.2 相关套件介绍 (3)
2.3相关项目对比 (3)
3.功能及总体设计 (4)
3.1功能介绍 (4)
3.2总体设计 (4)
4.项目实现 (8)
4.1超声波测距模块 (8)
4.2蓝牙连接模块 (9)
4.3语音提示模块 (10)
4.4照明模块 (11)
4.5电量提示模块 (11)
5.产品展示 (12)
6.总结与展望 (13)
参考文献 (14)
附录一元器件清单 (15)
实训日志................................................. 错误!未定义书签。
教师评语................................................. 错误!未定义书签。
1.引言
1.1 项目背景
盲杖可以在盲人外出时起到避障的作用,方便盲人出行,但是,盲人使用盲杖行走时,无法感知前方一定距离内是否有障碍物,也无法感知左右方是否有障碍物,更无法提示过路行人注意规避。
同时在昏暗的环境中,盲人无法自主的有效规避其他行人车辆,并且他人也无法明确的察觉盲人,所以我们需要给其他人一定的提示,以此来规避盲人。
因此,制作一款智能导盲棍,补足上述缺点是非常有必要的。
本项目的智能导盲棍,设计旨在让盲人正确接收到障碍物的具体信息,并提示盲人避障,让盲人的出行更加便利[1]。
1.2 创意描述
本项目的创新点包括一下两项:
(1)测距:智能导盲杖与普通导盲杖最大的区别就在于测距功能,为充当盲人的眼,为盲人看清各方向是否存在有障碍物。
(2)语音提示:智能导盲棍能让盲人迅速接收障碍物距离,方便盲人出行,让盲人能够在目不能视的情况下较好地感知外界环境。
(3)照明:智能导盲棍上配备灯泡起到提示路过行人规避的作用,使盲人的出行得到更加安全的保障。
(4)电量提示:由于盲人无法观察导盲杖是否处于正常工作状态,为避免电量不足导致导盲杖无法正常工作,添加的电量提示功能,
帮助盲人有效得知当前导盲杖状态。
2.相关技术介绍
2.1 Arduino介绍
Massimo Banzi之前是意大利Ivrea一家高科技设计学校的老师。
他的学生们经常抱怨找不到便宜好用的微控制器。
2005年冬天,Massimo Banzi跟David Cuartielles讨论了这个问题。
David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。
两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计编程语言。
两天以后,David Mellis就写出了程式码。
又过了三天,电路板就完工了。
Massimo Banzi喜欢去一家名叫di Re Arduino的酒吧,该酒吧是以1000年前意大利国王Arduin的名字命名的。
为了纪念这个地方,他将这块电路板命名为Arduino。
随后Banzi、Cuartielles和Mellis把设计图放到了网上。
版权法可以监管开源软件,却很难用在硬件上,为了保持设计的开放源码理念,他们决定采用Creative
Commons(CC)的授权方式公开硬件设计图。
在这样的授权下.任何人都可以生产电路板的复制品,甚至还能重新设计和销售原设计的复制品。
人们不需要支付任何费用,甚至不用取得Arduino团队的许可。
然而,如果重新发布了引用设计,就必须声明原始Arduino团队的贡献。
如果修改了电路板,则最新设计必须使用相同或类似的Creative Commons(CC)的授权方式,以保证新版本的Arduino电路板也会一样是自由和开放的。
唯一被保留的只有Arduino这个名字,它被注册成了商标,在没有官方授权的情况下不能使用它。
Arduino发展至今,有了多种型号及众多衍生控制器推出[2]。
2.2 相关套件介绍
Arduino Uno:“Uno”在意大利语中是“一”的意思,并被用于标记1.0版Arduino 软件(IDE)。
Uno开发板和1.0版Arduino软件(IDE)为Arduino系列的参考版本,现在已经演变为更新版本。
Arduino Uno开发板属于USB系列Arduino开发板中的第一个型号,并作为Arduino平台的参考模型存在;更多有关当前、过去或过时开发板的列表,请参阅[[Main/Boards|开发板的Arduino指数]][3]。
超声波传感器:超声波传感器是将超声波信号转换成其他能量信号(通常是电信号)的传感器。
超声波是振动频率高于20KHz的机械波。
它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。
超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中。
超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。
超声波传感器广泛应用在工业、国防、生物医学等方面[4]。
蓝牙模块:蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。
蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。
一般模块具有半成品的属性,是在芯片的基础上进行过加工,以使后续应用更为简单[5]。
2.3相关项目对比
一般的导盲棍项目只有测距功能与语音提示功能,而我们的导盲棍设计多出了电量耗尽提示功能与照明功能,更加的方便了盲人的使用。
3.功能及总体设计
基于以上创意,需要在导盲棍上添加一些模块,在避障的同时进行语音提示,在特定的情况下可以亮灯、鸣笛提示过路行人的功能。
3.1功能介绍
该产品实现的功能有:
(1)测距功能:使用前、左、右三个超声波测距模块测量障碍物的距离。
(2)电量耗尽提示功能:接通电源后,点击按钮,蜂鸣器会发出提示音,若是没有就表示电量耗尽。
(3)语音提示功能:使用蓝牙模块将信息传输到手机,然后通过手机app
提示盲人前方多远有障碍,与左右方向是否有障碍。
(4)照明功能:在夜间以及其他一系列的昏暗的环境中会点亮导盲杖上
的灯。
3.2总体设计
根据上述功能,将项目对应的四个部分分别进行设计:测距部分、电量提示部分、语音提示部分和照明部分。
3.2.1整体框架图
项目整体框架图如图3-1所示。
uno板通过信号控制超声波传感器检测障碍物距离,并返回给uno板,然后经过判断之后将数据通过蓝牙模块传输给手机app。
uno板读取来自光敏电阻的阻值,在uno板上经过阻值大小的判断,然后来控制小灯泡的开关。
uno板通过读取按钮是否被点击来控制蜂鸣器发声。
图3-1 整体框架图
3.2.2系统流程图
系统流程图如图3-2和图3-3所示。
在uno板上系统首先通过判断按钮状态的开关来决定来决定接下来的过程,如果开启,则蜂鸣器发声,开始读取光敏电阻的阻值,并进行判断然后决定灯泡的开关,同时判断蓝牙是否在连接来决定是否测距并且发送信息到手机。
图3-2 arduino uno开发板流程图
在手机端上系统首先进行连接蓝牙,然后开始一个循环,如果接收到信息则根据信息判断,在手机上发出不同的提示音,然后判断是否结束循环,来决定是否继续接收信息。
图3-3 手机app流程图
3.2.3总电路图
系统总电路图如图3-4所示,通过面包板将超声波传感器、蓝牙模块、光敏电阻、小灯泡、按钮和蜂鸣器接到了uno板上相对应的串口。
在下章项目实现将会分为不同模块具体介绍。
图3-4 uno板总电路图
4.项目实现
该项目主要有五个模块:超声波测距模块、蓝牙连接模块、语音提示模块、照明模块、电量提示模块。
4.1超声波测距模块
功能介绍:Arduino uno开发板给该超声波传感器发送触发信号,这个传感器便能自动发送并检测超声波信号,开发板接收超声波传感器的回响信号便能测得障碍物的距离。
元器件清单:该模块所需的元器件及其数量如表4-1所示。
和GND口分别接在了一起,然后接到了uno板的5V串口和GND串口。
将三个传感器的输入输出口分别接在了数字针脚的2、3、4、5、6、7串口。
图4-1 超声波传感器电路图
相关代码:
digitalWrite(TrigBefore, LOW); //通过超声波传感器对前面测距
delayMicroseconds(2);
digitalWrite(TrigBefore,HIGH);
delayMicroseconds(10); //产生一个10微秒的高脉冲去触发TrigBefore digitalWrite(TrigBefore, LOW);
tempBefore = float(pulseIn(EchoBefore, HIGH));
//获取超声波发送到返回的时间cmBefore = (tempBefore * 17 )/1000; //将时间计算为距离
digitalWrite(TrigRight, LOW); //通过超声波传感器对右边测距delayMicroseconds(2);
digitalWrite(TrigRight,HIGH);
delayMicroseconds(10);
digitalWrite(TrigRight, LOW);
tempRight = float(pulseIn(EchoRight, HIGH));
cmRight = (tempRight * 17 )/1000;
digitalWrite(TrigLeft, LOW); //通过超声波传感器对左边测
距
delayMicroseconds(2);
digitalWrite(TrigLeft,HIGH);
delayMicroseconds(10);
digitalWrite(TrigLeft, LOW);
tempLeft = float(pulseIn(EchoLeft, HIGH));
cmLeft = (tempLeft * 17 )/1000;
4.2蓝牙连接模块
功能介绍:通过蓝牙模块,Arduino uno板能够与其他设备进行蓝牙连接,本产品通过蓝牙模块与手机相连,将数据信息传输到手机app上。
手机端则通过app进行有效的连接与交互。
元器件清单:该模块所需的元器件及其数量如表4-2所示。
板5V与GND相连的接口中,然后通过面包板将TX和RX口分别接入8和9号串口。
图4-2 蓝牙模块电路图
相关代码:
1)Arduino uno板代码
#include <SoftwareSerial.h>
int bluetoothTx = 9;
int bluetoothRx = 8;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); //定义蓝牙的方法2)手机app程序:如图4-3所示。
在程序里定义了一个列表选择框,当
选择框被点击时,会出现已连接也可以配对的蓝牙目标。
当选择完成后,app 便会连接目标,并发送文本以测试与提示连接成功,并开启计时器。
图4- 3手机端蓝牙连接程序
4.3语音提示模块
功能介绍:将超声波测量的距离传输进行判断,对前面的传感器的距离进行0-20cm、20-40cm以及40-60cm之间进行判断,并通过蓝牙传输相应的信息,如果超过60cm则不传输数据。
对左边及右边则进行是否在30cm里中存在障碍物,如果有则通过蓝牙传输相应的信息。
相关代码:
1)Arduino uno板代码
if(cmBefore<=20&&cmBefore>1){ //对前面距离进行判断
bluetooth.write("14");
}
else if(cmBefore<=40&&cmBefore>20){
bluetooth.write("15");
}
else if(cmBefore<=60&&cmBefore>40){
bluetooth.write("16");
}
if(cmRight<=30&&cmRight>1){ //对右边距离进行判断
bluetooth.write("2");
}
if(cmLeft<=30&&cmLeft>1){ //对左边距离进行判断
bluetooth.write("3");
}
2)手机app程序:如图4-4所示。
在程序初始定义一个全局变量来接收来自蓝牙的信息,当蓝牙连接上后计时器便开始持续即使与接收来自uno板的信息,并对接收而来的信息进行判断并播报相应的提示。
图4-4 手机端语音提示程序
4.4照明模块
功能介绍:光敏电阻在不同光线环境下的阻值会变化,Arduino uno开发板会获取到这个电阻值,通过对其的判断,控制小灯泡的开关。
在较为昏暗的环境中会电量灯泡,提示来往的车辆行人注意避让。
在明亮的地方,人的可视距离较高,便可以关掉灯泡。
元器件清单:该模块所需的元器件及其数量如表4-3所示。
5V与GND,来保持光敏电阻的稳定性,再将光敏电阻VCC头接在模拟针脚A5串口,来读取数据。
将小灯泡的正极接到数字针脚13口负极接GND 来控制小灯泡的亮暗。
图4-5 照明模块电路图
相关代码:
Intensity = analogRead(A5); //读取光敏电阻的电阻值
if (Intensity>980) { //判断电阻值是否过大
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
4.5电量提示模块
功能介绍:每次使用时通过对按钮的点击,蜂鸣器会发出声音来提示盲人导盲棍可以工作,如果没有发出声音,则表示电源已经没有电,需要进行更换电源。
元器件清单:该模块所需的元器件及其数量如表4-4所示。
GND,来保持按钮的稳定性,再将按钮VCC头接在数字针脚12串口,来读取数据。
将蜂鸣器的正极接到模拟针脚A0口负极接GND来控制蜂鸣器发声。
图4-6 电量提示模块电路图
相关代码:
button1 = digitalRead (button); //读取当前按钮状态
if (button1 == 1 && button2 == 0) { //判断按钮是否被点击
tone(mouse,340); //蜂鸣器发声
delay(200);
noTone(mouse);
delay(200);
}
button2 = button1 ; //将当前状态转为过去状态
5.产品展示
整体实物图如图5-1和图5-2所示。
从上到下分别是3个超声波传感器,连接传感器与uno板的1号面包板,接在1号面包板上的蓝牙模块。
接着便是uno
板,与在棍子另一边的电源。
下方是2号面包板上面依次接了光敏电阻、小灯泡、按钮和蜂鸣器。
图5-1 整体实物图
6.总结与展望
在本次项目中,我们小组完成了智能导盲杖的制作。
导盲杖能完成一系列的工作,给盲人带来方便,能通过传感器与蓝牙模块让盲人得知障碍物的情况,并通过照明系统能够提示路人注意规避,也可以通过电量提示来获知导盲杖是否正常工作。
在本次项目中还存在一些问题,一开始对器件的了解不够深刻导致研究的方向存在一些偏差,对项目的制作出现了问题,但是经过仔细的讨论与研究后,找到了正确的方向。
而本次实验中由于经费和时间等原因还有很多预想的功能未能实现,例如gps系统的应用,在未来的研究中可以设想在导盲棍上配备gps定位系统,当盲人因为突发情况走失时,盲人的家属就可以通过gps系统找寻盲人,于此还可配备自动发送短信系统,在盲人走出特定路线或长时间停留的时候系统
会自动发送短信给盲人的家属,提示盲人可能出现突发状况,从而避免不可预知的危险。
再未来还可以发展与之配套的盲人智能手机,可以使盲人更方便的使用智能导盲杖。
参考文献
[1]李永华,王思野,高英,《Arduino实战指南: 游戏开发、智能硬件、人机
交互、智能家居与物联网设计30例》,清华大学出版社,2016年10月
[2]Arduino介绍:
[3]Arduino:https://
[4]超声波传感器:超声波传感器
[5]蓝牙模块:蓝牙模块
附录一元器件清单完成该项目所需的元器件及其数量如表6-1所示。