文档详情

基于单片机的多功能智能盲杖

I***
实名认证
店铺
DOCX
75.94KB
约7页
文档ID:187016986
基于单片机的多功能智能盲杖_第1页
1/7

基于单片机的多功能智能盲杖 摘要:随着我国当前经济实力的增长,视障群体的自立意识也在不断增强,盲人更期盼于能够满足其自身独立出行的方法和工具该盲杖基于STM32F407和STM32F103单片机,利用US-100超声波模块、OV2640摄像头、XFS5152CE语音合成芯片与ALIENTEK红外遥控器等共同实现遥控发送接收、语音、超声波探测、人脸识别等功能该盲杖能够在盲人出行时通过语音播报及时将路况情况反馈给使用者并能够提醒盲人盲杖所在位置,保证盲人行走安全;同时该盲杖能够及时帮助盲人识别周围的人群,通过识别扫描判断是否为盲人所熟悉的人,并将识别和判断结果播报给盲人,避免盲人未知的危险该盲杖旨在保障盲人的出行安全以保证盲人外出自由,带给盲人行走的安全感和愉悦感关键词:盲人智能手杖;单片机;超声波测距;人脸识别1. 引言盲人由于收到视力的限制,外出行走多依靠于盲杖,而传统的导盲杖仅起到探索前方路面的作用经查阅得知,当前已有的智能盲杖多是对于前方障碍物的探测研究,缺乏可以帮助盲人与外界交流的设计,盲人无法对陌生人进行身份判断,盲杖丢失时盲人无法找回盲杖,因此这种导盲拐杖对于盲人的保护不够全面,不能满足盲人日常的需求。

本系统采用STM32F103和STM32F407单片机作为控制器,设计出一种集超声波探测、人脸识别、语音播报、遥控发送接收于一体的多功能导盲手杖,可以对前方的障碍物进行探测、实时锁定盲杖的位置避免盲杖丢失、对所遇到的人进行识别判断并通过语音播报反馈给盲人1. 盲杖总体功能设计概述本文设计的智能盲杖所完成的功能包括超声波测距、人脸识别、红外遥控、语音播报四个模块在盲人外出时,盲杖的超声波测距模块可以检测前方是否有障碍物,并且探测出盲人与障碍物之间的距离,已达到提前发出障碍物信息给盲人的目的,使得盲人可以做出相应的反应,及时避开障碍物;人脸识别模块可以预先录入盲人亲朋好友的人脸信息,在外出遇到他人时,该模块可以通过识别人脸,将识别信息与已录入的信息对比,判断出该人是否为盲人的亲朋好友这项功能可以在一定程度上保证盲人的安全,同时协助盲人更好的与别人交流;红外遥控模块可以在盲杖脱手时,帮助盲人找寻盲杖的位置该模块在按下红外遥控器的按键时,蜂鸣器会发出响声,提示盲人盲杖的位置所在;语音播报模块的功能是将人脸识别后与信息库人物对比的结果以及超声测距中盲人与障碍物之间的距离播报出来,使这两个模块实现的功能通过语音具体反馈给盲人。

2、系统硬件设计我们的产品是在单片机STM32F407和STM32F103上完成的按照其功能我们将我们的盲杖分为了四个模块,超声测距模块、人脸识别模块、红外遥控模块、语音播报模块,其中人脸的录入和识别是在F407上完成的,其它三个模块是在F103上完成的F407将人脸识别的结果通过串口发送给F103,然后F103把接收到的人脸识别结果和超声测距结果通过语音模块播报出来,整体框图如下:图1 盲杖总体结构框图2.1红外遥控模块本模块的功能实现采用了STM32F103开发板,配备了遥控器遥控器属于外部器件,遥控接收头在板子上红外遥控接收头连接在 STM32 的PA8(TIM1_CH1)上遥控器使用的是NEC协议,其特征如下:①8 位地址和 8 位指令长度②地址和命令 2 次传输(确保可靠性)③PWM 脉冲位置调制,以发射红外载波的占空比代表“0”和“1”④载波频率为 38kHz⑤位时间为 1.125ms 或 2.25ms;STM32F103 开发板板载的蜂鸣器是电磁式的有源蜂鸣器,自带了震荡电路, 一通电就会发声,通过三极管扩流后再驱动蜂鸣器我们用到NPN 三极管(S8050)来驱动蜂鸣器,蜂鸣器的驱动信号连接在 STM32F4 的 PF.8 上,当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声。

2.2超声测距模块本模块的功能实现采用了STM32F103开发板和US-100外设,US-100超声波测距模块可实现0~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正(和其它测距模块相比其测距结果更为准确),同时具有GPIO、串口等多种通信方式,内带看门狗,工作稳定可靠在我们盲杖中使用的电压值为3.3V,使用的通信方式是串口通信(将此模块背后的测距模式接口插上跳线帽)US-100占用F103的串口2,即US-100的TX与PA2(TX)相连,RX与F103的PA3(RX)相连US-100的Vcc接开发板的3.3V电源,两个GND管脚连接到开发板上2.3人脸识别模块本模块采用了STM32F407开发板与CMOS图像传感器OV2640共同实现,其中主控芯片为STM32F407,图像采集由OV2640完成OV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器;它支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹等自动控制功能;同时支持图像压缩,即可输出JPEG图像数据。

另外,本模块需要用到存储设备,综合比较,最适合于单片机系统的是SD卡,它不仅容量可以很大,支持SPI/SDIO 驱动,而且有多种体积的尺寸可供选择OV2640通过SCCB通信协议与单片机通信,两个硬件模块直接通过F407主板自带的DCMI数字摄像头接口相连,该接口是一个同步并行接口,能够接收来自摄像头模块的高速数据流(可达54MB/s)开发板自带了标准的SD卡接口,SD卡直接插入该接口,使用F407自带的SDIO接口驱动,4位模式,最高通信速度可达48Mhz(分频器旁路时),最高每秒可传输数据24MB2.4语音播报模块语音播报功能是在F103上实现的,使用的外设是一款集成了XFS5152CE芯片的语音合成模块XFS5152CE语音芯片是一种TTS语音芯片(从文本到声音),F103发送给语音识别模块的所有语音播报命令都需要用“帧”的方式进行封装后输控制标记作为文本进行合成,来对语音播报发音人、音量、语速、语调等进行设置在我们盲杖中,F103和此外设的通讯方式为I2C通讯,语音合成模块的SCL管脚占用F103的PB6,SDA管脚占用F103的PB7,Vcc管脚接到开发板的5.5V的引脚上,GND管脚接到开发板上5V对应的“地”上。

人脸识别模块在F407开发板上进行的,而语音播报模块是通过F103开发板控制播报的,故我们通过串口使两块开发板可以通信,将F103和F407的串口1对应的PA9(TX)、PA10(RX)相连,F103通过串口1即可获取到识别的结果编号,进而控制语音模块播报出来3. 系统软件设计3.1 红外遥控模块红外遥控模块的关键算法如下:先对按键和蜂鸣器、以及红外接收进行初始化KEY_Init按键初始化函数主要是用来初始化按键输入的 IO 口的,实现对PA0、PE2~4 的输入设置之后再调用BEEP_Init函数,该函数的作用就是使能PORTF的时钟,其中还了调用GPIO_Init 函数,用来配置 PF8 为推挽输出再调用Remote_Init函数,该函数用于初始化 IO口,并配置TIM1_CH1为输入捕获(采取的捕获方式为高电平捕获),之后再调用Remote_Scan 函数,该函数用来扫描解码结果,相当于我们的按键扫描,也就是获得红外遥控输入的数据(键值)输入捕获解码的红外数据,通过该函数传送给key然后通过一个if-else语句来实现如果按下遥控器上的电源键(即key的值是162)蜂鸣器发出声音,按下其它任意的键蜂鸣器就被关闭。

3.2 超声测距模块本模块主要是为了帮助盲人检测前方何处有障碍物,以达到提前发出信号给盲人,使得盲人可以做出相应的反应具体工作流程图如下:图2 超声测距模块工作流程超声测距模块的关键算法如下:首先是调用USART2_SendData函数使得开发板STM32F407的串口向模块US-100发送“0x55”来进行激活,下面第一个while语句是来判断USART2->SR 的第6位,是否为1来决定是否可以开始第二个字节的发送,第二个while语句用来等待数据发送完成发送完成后再调用USART2_ReadData函数来读取串口2接收到的数据中的第一个字节,此函数读取完数据就将USART2->SR中的RXNE清零,当串口接收到第二个字节时就会将RXNE置1,故第三条while语句用来等待RXNE变为1,即串口接收到第二个字节之后用USART2_ReadData函数来读取串口2接收到的数据中的第二个字节,最后将其通过计算转化为实际距离值在这个过程中,US-100会根据当前温度对测距结果进行校正3.3人脸识别模块实现人脸识别的基本工作原理:F407从摄像头OV2640采集高数数据流即人脸信息后,将其存入SD卡中,作为识别的比对模板并对其进行编号。

ALIENTEK提供了ATKFREC.lib识别库,其中包括完成识别过程的各个函数,系统在初始化阶段通过atk_frec_initialization函数初始化人脸识别库,然后扫描按键,可以通过atk_frec_add_a_face函数和atk_frec_delete_data函数,添加或者删除SD卡中的人脸模板,若识别按键被按下,则通过识别库中的atk_frec_recognition_face函数,将当前采集到的高速数据流进行预处理等,之后循环与SD卡存储的人脸信息数据对比,若比对成功,则获取识别的结果编号,并通过串口1打印出来人脸识别模块核心部分代码如下:图3 人脸识别关键代码3.4语音模块语音播报模块可以将我们人脸识别结果以及超声测距结果播报出来,以达到提醒盲人的目的,具体的工作流程图如下:图4 语音播报模块工作流程超声测距结果播报的原理:首先是调用USART2_SendData函数使得开发板STM32F407的串口向模块US-100发送“0x55”来进行激活,下面第一个while语句是来判断USART2->SR 的第6位,是否为1来决定是否可以开始第二个字节的发送,第二个while语句用来等待数据发送完成。

发送完成后再调用USART2_ReadData函数来读取串口2接收到的数据中的第一个字节,此函数读取完数据就将USART2->SR中的RXNE清零,当串口接收到第二个字节时就会将RXNE置1,故第三条while语句用来等待RXNE变为1,即串口接收到第二个字节之后用USART2_ReadData函数来读取串口2接收到的数据中的第二个字节,最后将其通过计算转化为实际距离值在这个过程中,US-100会根据当前温度对测距结果进行校正人脸识别结果播报的基本原理:F407开发板通过printf语句将人脸识别编号打印到串口1 上,即发送给了F103开发板,F103通过USART_ReceiveData函数读取串口1数据存储器中的结果,然后通过if语句对编号进行判断,并对speech_text函数播报文本内容做相应的设置,进而播报出来3. 结论经过调试与测试,本设计各模块均可完成预计功能的实现超声测距模块可以在使用者距离障碍物0.3米~3.2米内分六次播报距离,提醒使用者避开障碍物;遥控接收模块可以通过遥控器控制蜂鸣器发出响声或关闭响声,提示使用者盲杖位置所在;人脸识别模块可以成功录入或删除人脸信息,并且可以在正确识别后将识别结果播报。

测试实验验证了盲杖的实用性和可操作性,证明该盲杖可在盲人出行时提供有效的帮助,为盲人的日常生活带来了极大的便利基金项目】:2020年安徽省。

下载提示
相似文档
正为您匹配相似的精品文档