技术的智慧盲杖系统设计_第1页
技术的智慧盲杖系统设计_第2页
技术的智慧盲杖系统设计_第3页
技术的智慧盲杖系统设计_第4页
技术的智慧盲杖系统设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AI技术的智慧盲杖系统设计摘要现在,使用视觉AI在各种领域提供有效解决方案的机构很多,它包括消费电子设备控制、能源管理、高效家庭和商业建筑自动化以及工业工厂管理等领域。智能能源网络因其可以灵活的融入日常生活而受到广泛的关注。作为下一代绿色家居系统它易于结合各种家用电器、智能传感器和无线通信技术。许多项目和研究已经开发出无处不在的家庭网络模型。与传统的家庭网络相比,正在进行无处不在的家庭网络收集用户活动意识以及家庭环境中的物理传感信息,以支持更智能和更幸福的家庭服务。它对于控制生活中的消费者家庭网络服务至关重要。我想到了做一个智能导盲棒.我使用MSP430来完成操作。MSP430是一个基于易于使用的硬件和软件的开源电子平台。MSP430板能够从按钮和各种类型的传感器中读取输入。HC-SR04超声波传感器使用SONAR来确定物体的距离,就像蝙蝠一样。手杖还有一个蜂鸣器,它发出蜂鸣声并提醒用户注意障碍物。视觉障碍者在生活和工作中都需要旁人大量的照顾和他们本身其他感知器官的配合,导盲杖能够帮助他们更轻松的去生活和工作。关键词:AI视觉;智能控制;超声波测距;远程分享;

目录第1章绪论 绪论研究目的及意义据世界卫生组织统计数据,截止到2019年,我国约有盲人1731万,视力障碍人士约6727.4万,中国盲人约占全世界18%,是全世界盲人最多的国家,平均每年在中国约有45万人失明,如果按照目前的趋势持续下去,预计未来两年中国盲人数量将是原来的四倍。也就是说,每一百个人中就有一位是盲人。因此,为了给盲人提供足够的安全,以及更加便捷的在路上行走,盲人智能手杖项目应运而生。我们‎设计的智能盲杖,以单片机为主,超声波探测器、语音警报系统、GPS定位系统等功能为辅,最大程度上使盲人出行更加便利、安全,提高手杖性价比,让绝大多数盲人可以负担起。调查显示,大部分的盲人只能借助普通的盲杖出门活动,而且活动的范围仅限于自己熟悉的场所。当盲人出行遇到障碍时,盲人无法及时探测前方路障,无法精准了解前方路障距离;当盲人独自外出时,很容易出现受伤,走失等危险状况。因此可以得出,市面上现有盲杖内部设计无法解决盲人出行中存在的各类问题,不足以让盲人便捷出行。视觉障碍者在生活和工作中都需要旁人大量的照顾和他们本身其他感知器官的配合,有没有什么办法能够帮助他们更轻松的去生活和工作呢。我想到了做一个智能导盲杖.我使用MSP430来完成操作。MSP430是一个基于易于使用的硬件和软件的开源电子平台。MSP430板能够从按钮和各种类型的传感器读取输入。HC-SR04超声波传感器使用SONAR来确定物体的距离,就像蝙蝠一样。手杖还有一个蜂鸣器,它发出蜂鸣声并提醒用户注意障碍物。它还包含一个紧急按钮,可以通过分享该人的位置与亲人分享警报信息。国内外研究现状2019年吴智慧在《基于宜居生活的智能家具与智能家居》一书中提到在国内通过销售渠道可购买的盲人智能拐杖种类较少,CONNOLLY康诺利老人智能拐杖可作为一个参考其价格在100~200元之间,同时主打八大功能,分别是:LED照明手电筒,可调节远近灯光:可以多档调节的高低尺寸,满足不同身高盲人的需求;防滑脚帮助稳固,防滑减震;报警和闪灯警示,在紧急情况下可向警察和家人发送帮助请求;FM收音机,可收听广播;插卡MP3,能下载音乐;电池充电后拥有较长的待机时间,两个小时蓄电后就可以使用12个小时。2019年学者边黎,于娜,邱子哀三人在《智能化医用家具设计探究》一文中写国内目前有一些以5G技术为支撑的智能盲杖设计展现出独有的优势,但还没有推入市场。以浙江大学团队研究的“基于5G技术的“重明’智能盲杖设计”这一产品为例,它主要希望通过5G智能技术解决视障人群的出行问题。通过盲杖硬件本身与智能手机的软件相互结合,更好地向盲人提供道路信息,让人能够及时避开障碍物,安全出行。2018年XiaowuLiu在《Energy-efficientadaptiveslice-basedsecuredataaggregationschemeinWSN》一文中写出通过对国外盲人智能拐杖市场进行调研,选取以下两个具有代表性的产品进行解析。智能拐杖UltraCane是2010年后获得广泛关注的盲用智能拐杖产品。UltraCane是最早使用“窄波束技术的电子移动辅助设备.使盲人不仅可以安全地避开障碍物,并且能够探测盲人的前进道路及周围环境,从而有效地保护盲人的头部及胸部。2019年UltraCane学者在《Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications》文章中说明通过从两个传感器中发出的超声波来检测2~4m内的街道设施和其他障碍物,同时包括胸部及头部高度前方1.5m以内的范围,然后再通过手柄上的两个振动按钮向用户提供触觉反馈。盲人可以将拇指放在按钮上,两个按钮指示障碍物的方向,振动的频率告知盲人障碍物的距离情况。这种类型的反馈能够刺激盲人大脑中的空间“思维导图”使盲人能够获取周围环境和布局的相关信息,避开障碍物安全行走。WeWalk智能拐杖作为近年来盲人智能拐杖市场的大热产品被大量报道,其官网上的售价为599美元(折合人民币约为3872元)它的主要功能有辨识提示道路前方障碍物、识别道路交通信号以及蓝牙操作手机等。障碍物检测功能指的WeWalk在传统手杖敲击得到地面反馈的基础上增加了超声波传感器检测地面障碍物的功能。WeWalk智能拐杖还可以检测到胸部上方的障碍物,如果前方有障碍物,就会通过不同方向的震动提醒盲人注意左右方向。盲人可以通过蓝牙将WeWalk智能拐杖与手机智能进行互联,通过WeWalk的触摸板模拟手机屏幕进行遥控操作,可以让手机被放在口袋里的同时使用手机的所有功能,如电话功能这些都是需要我借鉴的宝贵经验。但是由于盲人不能很好的使用手机蓝牙所以我不打算采用蓝牙技术。我要制作出自主识别障碍物然后语音播报的智能导盲杖。主要研究内容本设计是一种基于AI技术的智能盲杖采用K210单片机作为核心系统,超声波测距器来测量障碍物与盲人之间的距离,并结合语音报警系统来告知盲人前方是否有障碍物以及障碍物距离,让盲人安全、便捷地行走。导盲杖具备可识别物体生物,前方障碍距离,语音播报,前方多少距离,有什么障碍物,告知下一步行动的功能。定向发射某种形式的能量波并以接收障碍物反射回波的方式来定位,与雷达控测飞机,声呐探测潜艇的原理相同,最终将环境障碍信息以某种视觉方式提供给盲人。随着科学技术的快速发展,超声波将在传感器中的应用越来越广。但就目前技术水平来说,人们可以具体利用的传感技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波传感器作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间。

系统的总体结构2.1设计方案文献研究法。通过查阅文献来获得研究资料,对系统设计中所涉及到的相关内容进行研究,初步构想系统要实现的功能及其运用的技术并搜集相关资料,作为系统设计的素材。功能分析法。功能分析法是社会科学用来分析社会现象的一种方法,是社会调查常用的分析方法之一。本系统通过功能分析法,对软件的各项功能进行具体分析,从而明确开发目标。定性分析法。通过对文献的研究,运用归纳和演绎、分析与综合以及抽象与概括等方法,深入了解软件和硬件开发的相关技术,从而熟悉系统中各个功能模块之间的关系,掌握系统的工作原理及其本质,确定开发流程。经验总结法。希望通过已有的每一块功能的结合进行总结,设计出一套优良的系统,并规范的编写程序。2.2功能需求分析2.2.1技术路线(1)硬件部分需要单片机模块、传感器模块、液晶显示模块、语音播报模块;(2)超声波探测仪原理是基于单片机发出的脉冲信号进行放大后转换为能量传入到接收器中处理,这时我们便可以计算出人与障碍物距离。单片机系统判断,计算时间,最后将判断后数据通过LCD显示出来。语音报警系统接收信号,进行语音播报。这个过程主要是由单片机、超声波发射和反弹,语音播报来完成。超声波发射只是发射听不见的声音,在空气中以特定的速度(v)传播,在触碰到检测物体后又反弹,从而测得被测物体的距离。(3)利用C语言和MYSQL完成系统设计;(4)设计结构框图.2.2.2预期结果1.系统实时显示摄像头采集到的画面;2.系统可学习物体信息;3.系统可识别物体生物;4.系统可识别前方障碍距离;5.系统识别到前方障碍物时,语音播报,有什么障碍物,告知下一步行动。2.3总体方案设计第一:理论知识准备阶段,理解设计课题,认真研究课题所涉及到的内容,能够较好的掌握有关题目的知识;第二:确定系统各个模块,理清各个模块之间的关系,收集相关得到软硬件资料;第三:规划课题,确定系统组成结构,勾画出大体系统框架并在结构框架的基础上提出原理框图;第四:利用软件完成硬件电路部分设计并画出各部分电路图,将系统部件通过接口电路集合在一起,并画出电路图;第五:根据系统控制过程完成软件设计部分,绘制出主流程图;第六:进行模拟仿真,检查系统是否能够按照要求实现控制功能,整理论文。2.4单片机型号选择主控制芯‏片‏‎‎选择K‏2‎10‎‏单片‏机‏‎‎。K2‏1‎0是嘉‏楠‏‎‎(Ca‏n‎na‎‏an‏)科技的‏一‎款集‎‏成机‏器‏‎‎视觉与‏机‎器听‎‏觉能‏力‏‎‎的系统‏级‎芯片‎‏(‏R‏‎‎SIC‏-‎V‎‏CP‏U‏‎‎)。使‏用‎台积‎‏电(‏‎‎TSM‏C‎)超低‏功‏‎‎耗的‏2‎8纳米‏先‏‎‎进制程‏,‎具有‎‏双核‏‏‎‎64‏位‎处理‎‏器,‏拥‏‎‎有较好‏的‎功耗‎‏性能‏,‏‎‎稳定性‏与‎可靠‎‏性。‏该‏‎‎方案力‏求‎零门‎‏槛开‏发‏‎‎,可在‏最‎短时‎‏效部‏署‏‎‎于用户‏的‎产品‎‏中,‏赋‏‎‎予产品‏人‎工智‎‏能(‏A‏‎‎I)。‏‎可以‎‏说是‏集‏‎‎性能强‏劲‎与高‎‏性价‏比‏‎‎于一身‏。‎K2‎‏10‏号称最‏强‎单片‎‏机,‏其‏‎‎最突出‏的‎特点‎‏是可‏以‏‎‎达到1‏T‎OP‎‏S算‏力‏‎‎,这是‏树‎莓派‎‏4无‏法‏‎‎比拟的‏,‎所以‎‏目前‏用‏‎‎它来做‏视‎觉方‎‏面的‏项‏‎‎目是最‏佳‎的选‎‏择。‏O‏‎‎pen‏M‎V提‎‏供了‏机‏‎‎器视觉‏功‎能最‎‏核心‏和‏‎‎最复杂‏的‎部分‎‏(包‏括‏‎‎硬件和‏核‎心算‎‏法)‏,‏‎‎使用者‏们‎可以‎‏把自‏己‏‎‎的精力‏放‎在自‎‏己的‏想‏‎‎法和产‏品‎设计‎‏上,‏实‏‎‎现自己‏的‎各种创意。原理图如下。图2-1K210单片机最小系统原理图系统的硬件部分设计3.1系统的总体设计采用K210单片机作为核心系统,超声波测距器来测量障碍物与盲人之间的距离,并结合语音报警系统来告知盲人前方是否有障碍物,让盲人安全、便捷地行走。单片机发出的脉冲信号进行放大后转换为能量传入到接收器中处理,这时我们便可以计算出人与障碍物距离。单片机系统判断,是什么障碍物,最后将判断后的数据通过LCD显示出来,从而语音报警系统接收信号,进行语音播报。这个过程主要是由单片机、超声波发射和反弹,语音播报完成。超声波发射只是发射听不见的声音,在空气中以特定的速度(v)传播,在触碰到检测物体后又反弹,从而测得被测物体的距离。原理图如下。图3-1系统总体原理图

3.2系统的主要模块设计3.2.1LCD显示屏模块设计12864LCD液晶显示模块是一款4位/8位并行、2线或3线接口方式,内部含有国际一级、二级简体中文字库的图形点阵液晶模块。显示分辨率为128*64,内置8198个16*16点汉字,和128个16*8点ASCII字符集。该型号液晶模块具有接口方式简单,指令操作便捷的特点,可构成全中文人机交互图形界面。可显示8*4行16*16点阵的行字,也可完成图形显示。LCD12864分为带中文字库和不带中文字库两种,有并行传输和串行传输两种方式通常并行速度快。从电源地开始引脚依次为:电源地、电源正。其原理图如下所示。图3-2LCD显示屏模块原理图图3-3LCD显示屏模块实物图3.2.2TF内存卡模块设计TF卡即是T-Flash全名(TransFLash,2004年更名为MicroSDCard)的缩写得出,这是Motorola与SanDisk共同推出的最新一代的记忆卡规格,它采用了最新的封装技术,并配合SanDisk最新NANDMLC技术及控制器技术。大小(11mmx15mmx1mm),约等于半张SIM卡,Trans-FlashCard为SDCard产品成员的一员,附有SD转接器,可兼容任何SD读卡器,TF卡可经SD卡转换器后,当SD卡使用。T-Flash卡是市面上最小的闪存卡,适用于多项多媒体应用.Trans-flash产品采用SD架构设计而成,SD协会于2004年年底正式将其更名为MicroSD,已成为SD产品中的一员。原理图如下。图3-4TF内存卡模块原理图图3-5TF内存卡模块实物图3.2.3GC0328摄像头模块设计GC0328摄像头具有200万像素(1632x1232像素),其体积小、工作电压低,提供单片UXGA摄像和影像处理器的所有功能。通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率10位采样数据。该产品UXGA图像最高达到15帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。原理图如下。图3-6GC0328摄像头模块原理图图3-7GC0328摄像头模块实物图3.2.4距离监测模块设计距离监测主要是通过HC-SR04超声波测距传感器实现的。HC-SR04超声波距离传感器的核心是两个超声波传感器。一个用作发射器,将电信号转换为40KHz超声波脉冲。接收器监听发送的脉冲。如果接收到它们,它将产生一个输出脉冲,其宽度可用于确定脉冲传播的距离。该传感器体积小巧,易于在任何机器人项目中使用,并提供2厘米至400厘米(约1英寸至13英尺)之间的出色非接触距离检测,精度为3mm。由于它的工作电压为5伏,因此可以直接连接到Arduino或任何其他5V逻辑微控制器。原理图如下。图3-8距离监测模块原理图图3-9距离监测模块实物图3.2.5SNY6288语音模块设计SYN6288中文语音合成芯片是北京宇音天下科技有限公司于2010年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。SYN6288通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。单片机串口接收数据,根据不同的数据,通过串口的形式发送给SYN6288,从而控制SYN6288语音播报。原理图如下。图3-10SNY6288语音模块原理图 图3-11SNY6288语音模块实物图

系统的软件设计4.1软件的主要流程采用K210单片机技术处理对摄像头模块、AI感应模块和超声波采集到的参数用LCD屏幕显示,语音播报模块来提醒前方有障碍物。单片机发出的脉冲信号进行放大后转换为能量传入到接收器中处理,这时我们便可以计算出人与障碍物距离。单片机系统判断,计算时间,最后将判断后数据通过LCD显示出来,从而语音报警系统接收信号,进行语音播报。这个过程主要是由单片机、超声波发射和反弹,语音播报来完成。超声波发射只是发射听不见的声音,在空气中以特定的速度传播,在触碰到检测物体后又反弹,从而测得被测物体的距离。流程图如下。图4-1系统总体流程图

4.2LCD显示屏模块设计当单片机初始化完成后,系统开始正常工作。LCD显示屏会收到来自单片机的摄像头实时画面。工作流程图如下。图4-2LCD显示屏模块工作流程图

4.3TF内存卡模块软件设计当单片机初始化完成后,系统开始工作。摄像头开始对画面进行采集随后发送给单片机,单片机经训练后可识别分辨不同路况,进行工作时超声波测距对前方障碍物测距随后摄像机拍照,随后TF内存卡开始对录像和照片进行储存,以便日后查看。工作流程图如下。图4-3TF内存卡模块工作流程图

4.4GC0328摄像头模块软件设计当单片机初始化完成后,系统开始工作。摄像头将实时拍摄并发送画面给单片机,单片机经过事先的学习,可对摄像头拍摄出的画面进行识别和分辨,随后进行相应处理。工作流程图如下。图4-4GC0328摄像头工作流程图

4.5超声波测距模块软件设计当系统初始化完成后,开始正常工作。摄像头对前方路况进行实时拍摄,单片机在经过学习后课识别前方路段是否有障碍物,若识别到有障碍物,超声波测距模块根据距离阈值判断是否需要改变行进路线,随后发送给单片机,单片机使语音模块工作。流程图如下。图4-5超声波测距模块流程图

4.6语音播报模块软件设计当系统初始化完成后,开始正常工作。摄像头拍摄的画面将发送给单片机,随后单片机经训练后可分辨识别画面,若识别出画面为有障碍物,将发出语音警告。工作流程图如下。图4-6语音播报模块流程图

系统测试5.1系统实物图图5-1系统实物图

5.2测试原理图5-2按下中间按键分别对环境、汽车、行人、桌子进行学习,每次学习按键按五次等待系统学习完毕,开始测试。图5-3学习完后按第三个按键系统开始运行当系统识别到小汽车并且到达距离阈值时时播报前方有车请绕行。当系统识别到人并且到达距离阈值时时播报前方有人请绕行。当系统识别到桌子并且到达距离阈值时时播报前方有桌子请绕行。图5-4按下面的按键可对距离阈值进行更改更改阈值时不能在系统工作状态,结束系统工作状态后可更改阈值。

第6章总结和展望6.1总结在整个设计过程中,硬件方面主要设计了K210单片机的最小系统、超声波测距传感器接口电路、LCD屏幕及显示、摄像机拍摄电路、TF储存卡电路、语音播报电路。软件方面借助各个渠道的资料,主要设计训练学习程序、显示程序、传感器运行程序、拍摄识别程序、语音播报程序。系统的调试主要是通过一块K210开发板,再借助于Keil以及自己搭建的电路实现的。分部调试时偶尔会出现一些问题但解决方案都有迹可循。此AI技术智慧盲杖设计能够实现检测后不需要人为干预,自动进行操作。节省了大量人力资源,方便盲人的生活。6.2展望为了画出自己满意的电路图,图表等,我仔细学习了绘图技术。在设计电路初期,由于没有设计经验,觉得无从下手,空有很多设计思想,却不知道应该选哪个,经过导师的指导,我的设计渐渐有了头绪,通过查阅资料,逐渐确立系统方案。毕业设计对于每个大学生来说是一门必修课程,在大学这一个求学阶段只有一次。完成了电路设计这一部分的工作内容,我觉得自己将曾经学习过的知识再次学习了一遍,对于各个元器件的设计规则,又有了进一步的熟悉。在这个的过程中,每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。以往没有注意到的问题,都在这一次的毕业设计中得以体现,这培养了我的细心,耐心和专心。指导老师给予的指导、同学的帮助让我受益良多,无论是理论工作上的计算,还是实际的操作,老师都给我们做了详细的分析,让我在设计各个量时更能理论结合实际,更合理的进行安排设计。但此次设计的AI技术的智慧盲杖系统也存在不足的地方,以后有待改进。

参考文献[1]吴智慧.基于宜居生活的智能家具与智能家居[J].轻工标准与质梁量,2019(05):21-22.[2]张广军.机器视觉[M].北京:科学出版社,2018.[3]边黎,于娜,邱子哀.智能化医用家具设计探究[J]艺术科技,2019,32(05):21-22.[4]赵鹏.机器视觉理论及应用[M]北京:电子工业出版社,2017.[5]吴双双,关惠元,申黎明.人体工程学在医用等待椅中的应用[J].技术与创新管理,2019(1):48-52.[6]孙晓云.接口与通信技术原理与应用[J].中国电力出版社,2018.[7]王慧,苗艳凤.产品设计中的情感化设计趋势研究[J].美术教育研究,2020(14):112-113.[8]孙晓云.接口与通信技术原理与应用[J].中国电力出版社,2018.[9]黄照翠,张荃,陈晖,等.智慧校园视频服务体系应用研究[J].中国教育信息化,2020.[10]李耀武.基于单片机的电子LED闪字屏的电路设计[J].西部皮革.2018.[11]宋琦,莫淇,黄柳婷,张卉盈,郭文麒.基于RFID模块的智慧酒店管理系统设计与研究[J].时代汽车,2020(17):114-115.[12]关世友,刘晓辉.基于物联网六域模型的智慧酒店系统设计及应用[J].物联网技术,2022,12(03):95-99.DOI:10.16667/j.issn.2095-1302.2022.03.028.[13]刘广卫,基于485无主从通讯的酒店客房智能控制系统.山东省,山东比特智能科技股份有限公司,2019-11-26.[14]林元乖.物联网技术在智慧酒店建设中的应用研究[J].物联网技术,2018,8(10):68-69+73.DOI:10.16667/j.issn.2095-1302.2018.10.022.[15]梁锋,陈俊彦,黄龙,程锡瑞,玉富友.基于智能云路由的智慧酒店系统设计[J].工业和信息化教育,2018(04):77-82.[16]KewangZhang,QizhaoWu,XinLi.Relayparticipated-new-typebuildingcncrgymanagcmentsystcm:Ancncrgy-efficientroutingschemeforwirelesssensornetwork-basedbuildingenergymanagementsystems.2018,13(1):169-185.[17]PengweiHua,XiaowuLiu,JiguoYu,NaDang,XiaoweiZhang.Energy-efficientadaptiveslice-basedsecuredataaggregationschemeinWSN[J].ProcediaComputerScience,2018,129.[18]KORTUMK,MOLLERM,HIRNEIBC,etal.Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications[J].DerOphthalmologeZeitschriftDerDeutschenOphthalmologischenGescllschaft,2019.[19]RaafiB.DesignandDevelopmentofFuzzy-PIDControllerforFour-wheeledMobileRoboticStability:AC'aseStudyontheUphillRoad[J].PTEKJournalofEngineering,2020,6(2):6.[20]ZhouY,DongW,FYuan,etal.ResearchofOnlineWaterQualityMonitoringSystemBasedonZigbeeNetwork[J].AdvancesinInformatioSciences&ServiceSciences,2019,4(5):255-261.

附录电路图源代码importKPUaskpuimportsensorimportlcdfromMaiximportGPIOfromfpioa_managerimportfmimporttimeimportgcfrommicropythonimportconst#导入constfromboardimportboard_infofrommachineimportUARTfrommachineimportTimerimportSYN6288_With_Busy_Drive#带读忙的SYN6288驱动importRELAY_DriveimportHC_SR04_Drive'''逻辑提要:识别到障碍:'Car''car'语音:设定距离内有车,请绕行'Desk''desk'语音:设定距离内有桌子,请绕行'Person''person'语音:设定距离内有人,请绕行'Surroundings''unknow'语音:设定距离内有不明障碍物,请绕行'''###########################################config#################################################class_num=4#类数量sample_num=20#样本数量THRESHOLD=11#阈值class_names=['Surroundings','Car','Desk','Person']#类名称:环境、车、桌子、人Identify_Results={'Identify_Situation':"",'Identify_Index':''}#识别结果SYS_Status='END'#系统状态:状态cap_num=0#抓取训练数量train_status=0#训练状态last_cap_time=0#上次训练抓取时间last_btn_status=1#上次按键状态#########################################################################################################################################RELAY(语音控制)################################################控制语音模块--常开接线(继电器不工作状态是开路)fm.register(board_info.PIN_S_Relay_01,fm.fpioa.GPIO0)#注册IO-Ctr_RELAY_01Ctr_RELAY_01=GPIO(GPIO.GPIO0,GPIO.OUT)Relay_01=RELAY_Drive.RELAY(Ctr_RELAY_01,1)#构建对象:Relay_01Relay_01.Init()#初始化:Relay_01#Relay_01.ON()#继电器打开#Relay_01.OFF()#继电器打开##########################################################################################################################################SYN6288(withbusy)##########################################fm.register(15,fm.fpioa.GPIO1)#映射IO-S_BUSY#PIN_S_BUSYS_BUSY=GPIO(GPIO.GPIO1,GPIO.PULL_UP)#注册IO-S_BUSYfm.register(6,fm.fpioa.UART1_TX,force=True)#映射串口引脚MCU-TXfm.register(7,fm.fpioa.UART1_RX,force=True)#映射串口引脚MCU-RXuart_1=UART(UART.UART1,9600,read_buf_len=10240)VOICE=SYN6288_With_Busy_Drive.SYN6288(uart_1,S_BUSY)#构建对象,默认忙时为高电平VOICE.Init()#播放语音#Relay_01.ON()#VOICE.Send_Data_Handle('car')#指令:'car''desk''person''unknow'#读忙#VOICE.Read_Busy()#合成/语音--返回"IS_BUSY"否则"NO_BUSY"##############################################################################################################################################HC_SR04#################################################fm.register(board_info.PIN_DIS_RXD_MCU_TX,fm.fpioa.UART2_TX,force=True)fm.register(board_info.PIN_DIS_TXD_MCU_RX,fm.fpioa.UART2_RX,force=True)uart_2=UART(UART.UART2,9600,read_buf_len=10240)HC_SR04_1=HC_SR04_Drive.HC_SR04(uart_2)HC_SR04_1.Init()Distance_f_cm=0.0Distance_f_cm_THR=30.0#阈值#Distance_f_cm=HC_SR04.Rece_Data_Handle()##############################################################################################################################################KEY######################################################KEY_BOOTfm.register(board_info.PIN_KEY_BOOT,fm.fpioa.GPIOHS0)KEY_BOOT=GPIO(GPIO.GPIOHS0,GPIO.PULL_UP)#KEY_SYSfm.register(board_info.PIN_KEY_SYS,fm.fpioa.GPIOHS1)#注册IO-KEY_SYSKEY_SYS=GPIO(GPIO.GPIOHS1,GPIO.IN,GPIO.PULL_UP)#构建KEY_SYS对象defexit_KEY_SYS_fun(KEY_SYS):#KEY_SYS中断回调函数globalSYS_Status,train_statusiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY_SYS.value()==0:#确认按键被按下ifSYS_Status=='END':SYS_Status='RUN'else:SYS_Status='END'time.sleep_ms(200)#消除抖动KEY_SYS.irq(exit_KEY_SYS_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#KEY1--未使用#KEY2+fm.register(board_info.PIN_KEY2_IN,fm.fpioa.GPIOHS3)#注册IO-KEY2KEY2=GPIO(GPIO.GPIOHS3,GPIO.IN,GPIO.PULL_UP)#构建KEY2对象defexit_KEY2_fun(KEY2):#KEY2中断回调函数globalSYS_Status,train_status,Distance_f_cm_THRiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY2.value()==0:#确认按键被按下ifSYS_Status=='END':#若:系统状态ENDifDistance_f_cm_THR<45:Distance_f_cm_THR=Distance_f_cm_THR+1KEY2.irq(exit_KEY2_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#KEY3-fm.register(board_info.PIN_KEY3_IN,fm.fpioa.GPIOHS6)#注册IO-KEY3KEY3=GPIO(GPIO.GPIOHS6,GPIO.IN,GPIO.PULL_UP)#构建KEY3对象defexit_KEY3_fun(KEY3):#KEY3中断回调函数globalSYS_Status,train_status,Distance_f_cm_THRiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY3.value()==0:#确认按键被按下ifSYS_Status=='END':#若:系统状态ENDifDistance_f_cm_THR>5:Distance_f_cm_THR=Distance_f_cm_THR-1KEY3.irq(exit_KEY3_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#########################################################################################################################################文字显示######################################################defdraw_string(img,x,y,text,color,scale,bg=None):ifbg:img.draw_rectangle(x-2,y-2,len(text)*8*scale+4,16*scale,fill=True,color=bg)img=img.draw_string(x,y,text,color=color,scale=scale)returnimg#########################################################################################################################################异常/正常######################################################Operation_State=0Barrier_State=0defOperation(operation_state):globalSYS_StatusglobalDistance_f_cmglobalDistance_f_cm_THRglobalOperation_State,Last_Operation_StateglobalBarrier_StateifSYS_Status=='RUN':Relay_01.ON()#开启语音模块if3.0<Distance_f_cm<Distance_f_cm_THR:Barrier_State=1#有障碍物ifOperation_State==1:#类1--'Car'if"NO_BUSY"==VOICE.Read_Busy():VOICE.Send_Data_Handle('car')#指令:'car''desk''person''unknow'else:passelifOperation_State==2:#类2--'Desk'if"NO_BUSY"==VOICE.Read_Busy():VOICE.Send_Data_Handle('desk')#指令:'car''desk''person''unknow'else:passelifOperation_State==3:#类3--'Person'if"NO_BUSY"==VOICE.Read_Busy():VOICE.Send_Data_Handle('person')#指令:'car''desk''person''unknow'else:passelifOperation_State==0:#环境--surroundingsif"NO_BUSY"==VOICE.Read_Busy():VOICE.Send_Data_Handle('unknow')#指令:'car''desk''person''unknow'else:passelse:if"NO_BUSY"==VOICE.Read_Busy():VOICE.Send_Data_Handle('unknow')#指令:'car''desk''person''unknow'else:passelse:Barrier_State=0#无障碍物else:Barrier_State=0#无障碍物Relay_01.OFF()#系统END--关闭语音#####################################################################################################设置摄像头sensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)sensor.set_windowing((224,224))#初始化LCDlcd.init()#设置摄像头水平与垂直镜像sensor.set_vflip(True)sensor.set_hmirror(True)#再次运行删除模型try:delmodelexceptException:passtry:delclassifierexceptException:passgc.collect()model=kpu.load("/sd/sipeed_learn_model.smodel")#加载模型#model=kpu.load(0x300000)classifier=kpu.classifier(model,class_num,sample_num)#模型初始化while1:img=sensor.snapshot()#采集图片#captureimgiftrain_status==0:#如果训练状态:0(未训练)ifKEY_BOOT.value()==0:#如果按键值为:0(按下)time.sleep_ms(30)#延时30msifKEY_BOOT.value()==0and(last_btn_status==1)and(time.ticks_ms()-last_cap_time>500):#如果按键按下&&上次按键状态==1&&时差大于500last_btn_status=0#上次按键状态=1last_cap_time=time.ticks_ms()#更新上次抓取时间ifcap_num<class_num:#如果抓取数量<类数量index=classifier.add_class_img(img)#添加类图片,并获取当前添加图片的indexcap_num+=1#cap_num自增1print("addclassimg:",index)#打印当前添加的类elifcap_num<class_num+sample_num:#如果:类数量<抓取数量<类数量+样例数量index=classifier.add_sample_img(img)#添加样例并获取当前添加样例的indexcap_num+=1#cap_num自增1print("addsampleimg:",index)#打印当前添加的样例else:#如果:按键弹起img=draw_string(img,2,200,"releasebootkeyplease",color=lcd.RED,scale=1,bg=lcd.WHITE)#请松开按键else:#如果未按下按键time.sleep_ms(30)#延时30msifKEY_BOOT.value()==1and(last_btn_status==0):#如果按键按下&&上次按键状态==0last_btn_status=1#上次按键状态=1ifcap_num<class_num:#如果抓取数量<类数量img=draw_string(img,0,200,"pressbootkeytocap"+class_names[cap_num],color=lcd.RED,scale=1,bg=lcd.WHITE)#显示请按键抓取类xelifcap_num<class_num+sample_num:#如果类数量<抓取数量<类数量+样例数量img=draw_string(img,0,200,"bootkeytocapsample{}".format(cap_num-class_num),color=lcd.RED,scale=1,bg=lcd.WHITE)#显示请按键抓取样例x#trainandpredictiftrain_status==0:#如果训练状态:0(未训练)ifcap_num>=class_num+sample_num:#如果类数量+样例数量<抓取数量print("starttrain")#print开始训练img=draw_string(img,30,100,"training...",color=lcd.RED,scale=2,bg=lcd.WHITE)#显示training...lcd.display(img)#显示classifier.train()#训练print("trainend")train_status=1#训练状态=1else:#如果训练状态:1Distance_f_cm=HC_SR04_1.Rece_Data_Handle()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论