基于AI的私家车位阻车器_第1页
基于AI的私家车位阻车器_第2页
基于AI的私家车位阻车器_第3页
基于AI的私家车位阻车器_第4页
基于AI的私家车位阻车器_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

摘要当前国内外由于人口日益增多导致汽车的使用也与日俱增,公共场所的停车面临空前的压力与此同时相应的人员使用也随之增加,随之科技的发展将AI技术应用到阻车器上可大大减少人力物力的使用。本文主要研究基于人工智能视觉技术的私家车位阻车器是一种创新的解决方案,能够有效解决私家车位的管理问题,提高车辆的通行能力,同时还能保障私人财产的安全。相比传统的管理方式,该系统能够更加智能、快速地实现车辆的管理和安全控制,减轻工作人员的工作压力,提高管理效率,给车主带来更好的停车体验。此外,基于人工智能视觉技术的停车管理系统还有许多其他的应用场景,例如在城市道路上的停车管理、商业中心、公共停车场等,都可以采用该系统进行车辆管理和安全控制,提高管理效率和安全性,为车主提供更好的停车服务体验。关键词:传感器;单片机;蓝牙ABSTRACTAtpresent,theresearchonAIvisiontechnologyhasmadegreatprogressbothathomeandabroad.Becausethedevelopmentabroadisrelativelyearly,theresearchonAIVisionTechnologyisalsoearlierthanours,soabroadforAIvisiontechnologyhasamorepowerfuldevelopmentcapacity,butthedevelopmentofAItechnologyalsocontinuedtomakeconsiderableprogress.Inthispaper,wemainlystudythecar-blockingdeviceofprivateparkingspacebasedonArtificialIntelligenceVisionTechnology,whichisaninnovativesolutiontoeffectivelysolvetheproblemofprivateparkingspacemanagementandimprovethetrafficcapacityofvehicles,italsoguaranteesthesafetyofprivateproperty.Comparedwiththetraditionalmanagementmode,thesystemcanrealizethevehiclemanagementandsafetycontrolmoreintelligentandfaster,reducetheworkpressureofthestaff,improvethemanagementefficiency,andbringbetterparkingexperiencetotheowner.Inaddition,parkingmanagementsystemsbasedonAIvisiontechnologyhavemanyotherapplicationscenarios,suchasparkingmanagementonurbanroads,commercialcenters,publicparking,etc.,thesystemcanbeusedforvehiclemanagementandsafetycontrol,improvemanagementefficiencyandsafety,toprovidebetterparkingserviceexperienceforcarowners.Keywords:Sensors,MCUandBluetooth目录TOC\o"1-3"\h\u第一章绪论-1-第一章绪论1.1研究目的及意义智能化技术已经广泛应用于各个领域,包括服务行业。人们对于服务的需求越来越高,也要求服务行业采用更加高效、智能化的管理系统。在私家车停车场这个领域,智能化管理系统的应用可以大大提高停车场的管理效率和车辆通行能力,减少人为管理的成本和错误率,为车主提供更加便捷、高效、安全的停车服务。通过引入人工智能视觉技术,例如车牌识别等,可以实现对车辆的自动识别和控制,不仅提高了管理效率,也为停车场管理带来更高的精度和准确性。因此,推进私家车停车场的智能化管理系统,是服务行业智能化发展的一个重要方向。1.2国内外研究现状是的,近年来AI视觉技术在国内外都取得了很大的进步,尤其是在智能停车场管理、车牌识别等领域应用越来越广泛。AI视觉技术通过对图像、视频的识别、分析和处理,实现对物体、场景、人脸等的自动识别、跟踪、分类等功能,具有很强的智能化和自动化能力。在智能停车场管理中,AI视觉技术可以通过识别车牌号码、车辆类型、入场时间等信息,实现车辆自动进出、停车位管理、停车费用计费等功能,大大提高了停车场的管理效率和用户体验。国内的AI视觉技术发展也在逐步跟进国外先进技术,尤其在5G、云计算、大数据等方面的应用,为AI视觉技术的发展提供了更强大的支撑。未来随着技术的不断创新和应用场景的不断拓展,AI视觉技术有望在更多领域展现其强大的应用价值REF_Ref10752\r\h[2]。2020年,MooreAlison在《Howtobuy:carparking:Removethebarrierstoyourperfectvehicle》文章中讲到美国通过AI视觉标志AI视觉技术在停车场管理领域的应用是当前的研究热点之一,不仅可以提高停车场的管理效率,还可以提高停车场的安全性和用户体验。基于AI视觉的私家车位阻车器系统可以根据车辆识别卡或车牌号码,自动识别车辆的身份信息,并且根据预设的规则,自动控制车位的开关,从而实现私家车位的拦阻功能REF_Ref10654\r\h[1]。该系统可以实现自动化的车位管理,减少人工干预,提高停车场的管理效率,降低管理成本,提高用户满意度。同时,该系统还可以通过记录车辆的停车时间和停车位号,提供车位使用情况的统计和查询功能,帮助停车场管理者更好地管理停车场资源REF_Ref10841\r\h[3]。1.3主要研究内容这套基于AI视觉的私家车位阻车器系统设计听起来很有趣。通过使用单片机作为基本开发语言,它可以设计出一个专门用于管理私家车位阻车的软件,同时使用数据库作为后台存储车辆信息,通过客户服务器网络模式结构来管理车辆进出停车场REF_Ref10916\r\h[4]。通过及时获取车辆的运行信息和车牌号码,系统可以自动管理车辆进出停车场,并根据车辆识别号码数据库导出系统自动发现车辆信息,实现自动阻车、车辆通行及完整的车辆安全系统报警。这套系统的应用可以提高私家车位的管理效率和安全性。第二章系统的总体结构2.1设计方案这套系统的基本原理是通过AI视觉技术实现对车辆的识别和管理,主要包括以下几个方面:车辆识别:系统使用摄像头捕捉车辆图像,通过AI视觉算法进行车牌识别或车辆识别号码识别,确定车辆的身份。车辆管理:系统根据车辆的身份信息,判断其是否有权限进入停车场,如果有权限,则自动抬起道闸,允许车辆进入;如果没有权限,则自动阻止车辆通行,并报警提示。数据库管理:系统采用数据库作为后台,将识别到的车辆信息存储到数据库中,便于日后查询和管理。安全报警:系统可以通过声音、光线、图像等多种方式进行报警,确保停车场的安全性和稳定性。这套系统的优点是自动化程度高,可以大大减少人工管理和操作成本,提高停车场管理的效率和准确性。同时,通过AI技术的应用,可以提高识别的准确性和速度,实现更智能、更高效的车辆管理。2.2功能需求分析2.2.1技术路线(1)硬件部分需要单片机、传感器、舵机、蓝牙远程APP模块;

(2)画原理图用AD;

(3)用户信息显示查看;

2.2.2预期结果通过对系统的布设和完善,最终完成的基于基于AI视觉的私家车位阻车器预期有如下成果:上位机:1.发送下位机记录车辆指令;2.发送下位机指令使下位机进入阻车模式;3.对下位机阻车器进行手机端控制;4.接收下位机参数,并显示;5.设定阈值;下位机:1.接收上位机命令,记录允许驶入的私家车;2.接收上位机命令,开启阻车模式,检测车辆驶出,自动开启阻车器;3.阻车模式:(1)识别驶入车辆与记录的车辆信息进行对比确认是否是已录入的车辆;(2)若不是已录入的车辆,声光警告,提醒车辆驶离;(3)若是已录入的车辆,自动关闭阻车器,允许车辆驶入;(4)在自家车辆驶入过程中,检测后方距离,若过小,进行蜂鸣器提示用户,并发送上位机警告信息;4.手动模式:接收上位机命令,开启/关闭阻车器;2.3总体方案设计理论知识准备阶段:在这个阶段,需要深入了解课题所涉及到的概念、理论、技术等方面的知识,以便在后续的设计和实现中得到应用。确定系统各个模块:在这个阶段,需要确定系统的各个功能模块,并理清各个模块之间的关系。这有助于确定系统的整体架构和设计方案。规划课题:在这个阶段,需要根据系统的各个模块和功能需求,确定系统组成结构和大体框架,并提出原理框图。这有助于对系统设计的整体把握和规划。完成硬件电路设计:在这个阶段,需要使用软件工具完成系统的硬件电路设计,并绘制出各部分电路图。这有助于在后续实现过程中,对电路连接和元器件的选型等问题进行规划。完成软件设计:在这个阶段,需要根据系统的控制过程,设计软件程序,绘制出主流程图,以便在后续实现过程中,对程序代码的编写和调试提供指导。模拟仿真:在这个阶段,需要利用软件仿真工具,对系统的各个功能进行模拟仿真,以检查系统是否能够按照要求实现控制功能。这有助于在实际实现过程中,避免由于软硬件不兼容或其他因素引起的问题。整理论文:在这个阶段,需要整理出一份完整的论文,将设计和实现过程中所涉及到的方方面面进行详细的阐述和解释,以便让读者了解到整个课题的研究过程和研究成果。2.4单片机型号选择KendryteK210是一种集成了机器视觉和机器听觉能力的SoC芯片,采用了台积电(TSMC)超低功耗的28纳米先进制程技术,拥有双核64位处理器,具备较好的功耗性能、稳定性和可靠性。该芯片力求零门槛开发,可在最短时效部署于用户的产品中,为产品赋予人工智能。K210定位于AI和IoT市场的SoC,同时也是一种非常方便的MCU。Kendryte中文含义为勘智,取自勘物探智。该芯片主要应用领域为物联网领域,在物联网领域进行开发,因此为勘物;该芯片主要提供的是人工智能解决方案,在人工智能领域探索,因此为探智。K210具备机器视觉能力和机器听觉能力,具有更好的低功耗视觉处理速度和准确率。此外,K210还具备卷积人工神经网络硬件加速器KPU,可高性能进行卷积人工神经网络运算。它采用TSMC28纳米先进制程技术,温度范围为-40°C到125°C,稳定可靠。K210支持固件加密,并具有独特的可编程IO阵列,使产品设计更加灵活。K210采用低电压设计,在相同处理能力的系统中具有更低的功耗。它支持3.3V/1.8V双电压,无需电平转换,节约成本。图2-1单片机最小系统原理图第三章系统的硬件部分设计3.1系统总体设计该系统利用AI视觉技术实现对车辆的自动管理,解决了人工阻车管理的弊端,提高了停车场的管理效率和安全性。系统通过摄像头获取车辆运行信息和车牌号,经过图像处理和车牌识别技术识别出车辆身份或车辆识别号码,并自动进行阻车或通行管理。同时,系统将车辆信息存储在数据库中,方便后续管理和查询。系统还具备完整的车辆安全系统报警功能,确保停车场的安全和稳定运行。该系统采用单片机作为基本开发语言,具有开发成本低、易于维护和升级等优点,具有广泛的应用前景。图3-1主系统原理图3.2系统的主要功能模块设计3.2.12.4寸LCD显示屏模块设计2.4寸LCD显示屏是一种小尺寸液晶显示屏,通常用于移动设备、嵌入式系统和便携式电子产品等领域。它的尺寸为2.4英寸,即对角线长度约为6.1厘米。这种显示屏可以通过液晶显示技术来呈现图像和文本内容。2.4寸LCD显示屏通常具有240x320像素的分辨率,这意味着它可以呈现240行、320列的像素矩阵,总共76800个像素点。这样的分辨率虽然不是非常高,但对于小尺寸的显示屏来说已经足够。同时,由于显示屏尺寸较小,像素密度相对较高,可以呈现清晰、锐利的图像和文本。2.4寸LCD显示屏通常采用TFT技术,即薄膜晶体管技术,这是一种高质量的液晶显示技术。TFT技术可以使液晶分子的旋转速度更快、更稳定,从而可以实现更快的刷新率和更高的对比度。此外,TFT技术还可以通过后期加工使显示屏更加均匀、稳定。2.4寸LCD显示屏通常具有LED背光,这可以使显示屏呈现更加鲜明、亮丽的颜色,并且能够在低光环境下提供良好的可视性。LED背光还具有低功耗、长寿命的优点,这对于移动设备和便携式电子产品来说尤为重要。2.4寸LCD显示屏通常具有广视角特性,即可以在不同角度下提供相同的色彩和亮度。这意味着即使从侧面或上下角度观看显示屏,图像和文本仍然可以清晰可见。这对于移动设备和便携式电子产品来说非常重要,因为用户通常需要在不同的角度下使用这些设备。2.4寸LCD显示屏还具有快速响应时间的优点,通常在10毫秒以下,这可以使动态图像和视频更加流畅。同时,2.4寸LCD显示屏还可以支持触摸屏功能,这使得用户可以通过触摸屏幕来与设备进行交互,从而实现更加自然和直观的操作。图3-22.4寸LCD显示屏模块原理图3.2.2蓝牙模组模块设计蓝牙模块是一种用于在不同设备之间建立无线通信的技术。它可以实现不同设备之间的数据传输、音频传输和控制等功能。在现代的智能设备中,蓝牙模块已经成为一种基本的通信方式,如手机、平板电脑、音响、智能手表等,都集成了蓝牙模块,可以与其他设备进行无线通信。蓝牙模块一般由无线电芯片和相应的软件组成。在硬件方面,蓝牙模块通常采用集成了蓝牙协议栈的单芯片解决方案,如CSR、TI、Nordic、ST等。这些芯片都支持标准的蓝牙4.0或以上版本,具有低功耗、高速传输、可靠性高等特点。在软件方面,蓝牙模块通常提供了标准的AT指令集或者API接口,可以方便地与其他设备进行通信和控制。蓝牙模块具有以下优点:低功耗:蓝牙模块的低功耗设计,可以使设备长时间工作,不需要频繁更换电池,同时还能够满足对电池寿命的要求。高速传输:蓝牙模块采用了先进的传输技术,能够在短时间内传输大量数据,保证数据传输的效率和准确性。安全性高:蓝牙模块支持强大的加密和认证技术,确保通信过程的安全性,防止数据泄露和攻击。易于集成:蓝牙模块的硬件和软件设计都十分成熟,可以方便地集成到各种设备中,提高设备的通信能力和互联性。适应性强:蓝牙模块支持不同的设备类型和不同的应用场景,可以满足多样化的需求,例如智能家居、健康监测、车联网等。总之,蓝牙模块作为一种成熟的无线通信技术,已经广泛应用于各种智能设备中,成为实现设备互联和数据传输的重要手段。未来,随着物联网技术的不断发展,蓝牙模块的应用前景将更加广阔。图3-3蓝牙模组原理图3.2.3舵机模块设计舵机是一种常见的电子元件,用于控制物体在特定角度位置上的运动。其主要构成部分包括外壳、板、驱动马达、减速器和位置检测元件。当接收到控制信号后,电路板上的IC会驱动马达旋转,通过减速器将动力传至摆臂,位置检测元件可以检测转动的角度。舵机中的马达采用空心杯马达设计,以减小重量和功耗,同时可以根据不同需求进行防水和防尘设计,并选择塑胶或金属齿轮以适应不同负载。如图3-4舵机原理图。图3-4舵机原理图第四章系统的软件设计4.1软件的主要流程首先进行系统初始化,系统初始化完成后,单片机进行设定的程序采集,传感器开始进行数据的采集,采集的数据会在我们的显示屏上进行显示。采集的数据达到设定程序要求时,舵机会进行转动。与上位机之间可以通过蓝牙进行通信。图4-1主系统流程图4.2LCD显示屏软件设计首先进行系统初始化,系统初始化完成后,单片机进行设定的程序采集,传感器开始进行数据的采集,采集的数据会在我们的显示屏上进行显示。图4-2LCD显示屏软件设计4.3蓝牙模块软件设计首先进行系统初始化,系统初始化完成后,单片机进行设定的程序采集,传感器开始进行数据的采集,采集的数据会在我们的显示屏上进行显示。采集的数据达到设定程序要求时,舵机会进行转动。与上位机之间可以通过蓝牙进行通信。图4-3蓝牙模块软件设计4.4舵机模块软件设计首先进行系统初始化,系统初始化完成后,单片机进行设定的程序采集,传感器开始进行数据的采集,采集的数据会在我们的显示屏上进行显示。采集的数据达到设定程序要求时,舵机会进行转动。图4-4舵机模块软件设计第五章系统测试5.1系统实物图图5-1系统实物图实物分为合金板,蓝牙模块,180°舵机,显示器导线若干,摄像头,屏幕以及按键。其中按键功能分为学习按键,复位按键以及系统按键。开始时先识别环境以及需要录入的合法车不同角度的前脸及车位各十张,识别完后需要录入周边环境不同角度五张。录入完后开启系统按键,开启时是自动模式可以监测车辆距离并且车辆距离警报已经非法车辆警报开启。若出现合法车辆舵机放下,若出现非法车辆舵机不开启并且蜂鸣机长响,若车辆距离过近则触发距离警报5.2测试步骤图图5-2模拟步骤图图中为车辆的前后脸识别,分别各拍十组照片之后在对周围环境进行拍照识别让识别装置充分识别图片信息。开启识别按钮后会自动识别自己车辆和违法车辆,若是合法车辆则闸机开启,非法车辆闸机关闭并且发出警报图5-3测试步骤图此项为开启蓝牙装置首先给设备供电,供电以后设备开始进行启动,根据设备上的按键,要先进行对车辆的学习,完成以后可以进行检测,当检测识别到私家车辆以后,舵机将会进行转动,阻车器就会进行落下,检测到非法车辆的时候,也就是不是私家车的时候,阻车器并不会落下,同时传感器也会进行测距报警。上位机也可以进行一个显示,阈值的设定等。第六章总结与展望本文把AI视觉技术,蓝牙技术,视频监控技术及软件技术等有机的结合在一起,形成了一套完善的控制系统,成功的把AI视觉技术推广并且在今后的社会应用中保持主导地位。本文取得的重大成果有:1.进行了深度的研究和调查。通过对学习资料的学习和贯通,对AI视觉技术中考虑的几个问题有了更为明确的认知,对人工智能技术的控制系统有了更为全面,深刻的认识。2.对AI私家车位阻车器进行了考察,对AI智能监控设施有了更好的认知,为今后的阻车系统打下了更为坚实的基础3.按照生产过程具体需要,编制了可编程控制的报警系统。车辆监控系统需要单独的设备,单独的工艺步骤,和全流程的操作自动化。4.在此基础上,提出了一种基于AI视觉的控制系统,通过拍照识别,对车辆进行更好的管理。流程图,实现了流程的控制;其他都由显示器进行实时监控。在设计基于AI视觉的私家车位阻车器系统时,已经做了许多工作,并获得了一定的成功但是在系统中还存在着一些不足和进一步完善的地方,下一项工作可从以下几个方面入手1.在机器故障时,主计算机仍能工作确保业主能继续使用阻车器2.现场的多种场景变换,对AI识别的影响较大,必须能使系统的抗干扰性进一步完善。参考文献冯凌颖.基于车牌识别的园区道闸车辆管理系统软件设计[P].浙江大学2021.董海涛;肖铭辰;伍兴;林义忠.基于低分辨率传感器的高性能道闸控制算法研究[C].微电机.2021.王寒益.基于ZigBee技术的智能停车场管理系统研究[C].集美大学.2022.孙昕怡.AI视觉检测项目范围管理的研究[M].北京邮电大学,2020.乔旭;赵伟;张炜;赵建.面向交通行业的AI视觉应用研究[P].江苏科技信息,2021.刘爽.智能车辆出入控制系统研究[M].东北石油大学,2021.张春光.公交停车场智能场站的设计[P].吉林大学,2019.潘志友;叶芃;薛春雷.基于人脸识别技术的道闸控制系统研究[M].自动化技术与应用.2020,.王成军;严晨.机器视觉技术在分拣系统中的应用研究综述[J].制造技术与机床.2019刘建斌.基于RFID技术的嵌入式停车场系统的设计与实现[M]. 湘潭大学.2019.MooreAlison.Howtobuy:carparking:Removethebarrierstoyourperfectvehicle..[M].2021TomRye;StephenIson.OvercomingbarrierstotheimplementationofcarparkingchargesatUKworkplaces.2019. JosephWLstiburek.WhereDoVaporBarriersGoinParkingGarages?.2021Anonymous.Networks:MeruNetworks'RFBarrier',pioneeringfirstinsecuringwirelessperimeter;IntroducesNewApproachtoDefendingEnterprisesAgainst'ParkingLotAttacks'[P].2021WeiSHEN;JiaoLI.DesignandImplementationofParkingMonitoringSystemofBikeSharingIntheElectronicBarrier.2020刘志勇.基于UML的酒店视觉AI解决方案软件建模[J].现代计算机,2022,28(22):99-102+108.陈元威,王雁平,黄琼桃,陈泽娜,黄龙子.基于AI的机械视觉控制系统设计[J].仪表技术,2022(06):37-38+57.DOI:10.19432/ki.issn1006-2394.2022.06.009.杨李奇,李昱龙,骆阳,代函可,章红.基于AI视觉的交通标志识别与车辆控制[J].电子技术与软件工程,2022(20):157-161.顾方,胡良勇,黄坚,刘鹏.基于机器视觉AI智能识别的计量器具信息检索系统研究与应用[J].中国计量,2022(10):47-48.DOI:10.16569/11-3720/t.2022.10.009.智能视觉应用快车道端边云协同的AI视觉产业研究报告[C]//.艾瑞咨询系列研究报告(2022年第9期).[出版者不详],2022:48-89.高赟,王津,吴昊,杨旭涛.基于AIStudio平台的《数字图像与计算机视觉》课程改革[J].电子元器件与信息技术,2022,6(08):244-247.DOI:10.19772/ki.2096-4455.2022.8.059.周能兵,齐世龙,刘栋.基于计算机视觉识别的AI技术在工地安全管理的应用[J].建筑安全,2022,37(08):74-77.附录电路图源代码classBEEP_3V3:def__init__(self,ctr_beep,ctr_init_level):self.ctr_beep=ctr_beepself.ctr_init_level=ctr_init_leveldefON(self):self.ctr_beep.value(self.ctr_init_level)defOFF(self):self.ctr_beep.value((1-self.ctr_init_level))defInit(self):self.OFF()defRUN(self,beep_state):self.ctr_beep.value(beep_state)classHC_SR04:def__init__(self,uart):self.uart=uartdefInit(self):self.uart.init(9600,timeout=1000,read_buf_len=10240)#重新设置串口波特率defRece_Data_Handle(self):distance_f_cm_err=0.0distance_f_cm_min=3.0distance_f_cm_max=55.0temp=[0.0,0.0,0.0,0.0,0.0,0.0]distance_f_cm_temp=distance_f_cm_errself.uart.write(b'\xA0')forrece_delay_countinrange(len(temp)):distance_f_cm_temp=0.0rece_data=self.uart.read()ifnotrece_dataisNone:#if(notrece_data[0]isNone)and(notrece_data[1]isNone)and(notrece_data[2]isNone):iflen(rece_data)==3:print('[0]:',rece_data[0])print('[1]:',rece_data[1])print('[2]:',rece_data[2])distance_f_cm_temp=(rece_data[0]*255*255+rece_data[1]*255+rece_data[2])/10000if0<distance_f_cm_temp<distance_f_cm_min:distance_f_cm_temp=distance_f_cm_minelifdistance_f_cm_temp>distance_f_cm_max:distance_f_cm_temp=distance_f_cm_maxelse:passtemp[rece_delay_count]=distance_f_cm_tempforcount_temp_1inrange(len(temp)):ifdistance_f_cm_errintemp:temp.remove(distance_f_cm_err)iflen(temp)==0:returndistance_f_cm_erreliflen(temp)==1:returntemp[0]else:forcount_temp_2inrange(len(temp)):ifdistance_f_cm_minintemp:temp.remove(distance_f_cm_min)iflen(temp)==0:returndistance_f_cm_mineliflen(temp)==1:returntemp[0]else:forcount_temp_3inrange(len(temp)):ifdistance_f_cm_maxintemp:temp.remove(distance_f_cm_max)iflen(temp)==0:returndistance_f_cm_maxeliflen(temp)==1:returntemp[0]eliflen(temp)==2:returnsum(temp)/2else:return(sum(temp)-max(temp)-min(temp))/(len(temp)-2)classLED_X:def__init__(self,ctr_led,ctr_init_level):#端口,点亮电平self.ctr_led=ctr_ledself.ctr_init_level=ctr_init_leveldefON(self):self.ctr_led.value(self.ctr_init_level)defOFF(self):self.ctr_led.value((1-self.ctr_init_level))defInit(self):self.OFF()defRUN(self,led_state):self.ctr_led.value(led_state)importKPUaskpuimportsensorimportlcdfromMaiximportGPIOfromfpioa_managerimportfmimporttimeimportgcfrommicropythonimportconst#导入constfromboardimportboard_infofrommachineimportTimer,PWM#ServofrommachineimportUARTimportHC_SR04_Drive#测距importSG90_180_Drive#阻车器importBEEP_3V3_Drive#蜂鸣器使用了模块,低电平触发importLED_Drive#LED#########################################My-config##############################################SYS_Status='END'#系统状态:状态可设置Operation_State=0#识别结果:0-环境,1-车前脸(合法),2-车后脸(合法),3,车前脸(非法),4,车后脸(非法)#自动/手动Manual_Mode=0#手动模式:0:自动模式1:手动模式--开阻车器2:手动模式--关闭阻车器可设置Squeezer_State=0#阻车器状态Warning_State=[0,0]#警告状态--Warning_State[0]车辆:0正常,1非法Warning_State[1]距离:0正常,1过近#测量Distance_1_f_cm=50.0Distance_1_f_cm_THR=30#阈值可设置###############################################################################################################################################config#################################################class_num=3#类数量sample_num=25#样本数量THRESHOLD=12.5#阈值class_names=['Surroundings','Car-front','Car-back']#类名称:环境、车前脸、车后脸board_cube=0Identify_Results={'Identify_Situation':"",'Identify_Index':''}#识别结果cap_num=0#抓取训练数量train_status=0#训练状态last_cap_time=0#上次训练抓取时间last_btn_status=1#上次按键状态#############################################################################################################################################HC_SR041################################################fm.register(board_info.PIN_DIS_RXD_MCU_TX_1,fm.fpioa.UART1_TX,force=True)fm.register(board_info.PIN_DIS_TXD_MCU_RX_1,fm.fpioa.UART1_RX,force=True)uart_1=UART(UART.UART1,9600,read_buf_len=10240)HC_SR04_1=HC_SR04_Drive.HC_SR04(uart_1)HC_SR04_1.Init()#Distance_1_f_cm=0.0#Distance_1_f_cm_THR=30.0#阈值#Distance_1_f_cm=HC_SR04_1.Rece_Data_Handle()############################################################################################################################################SG-90180#################################################tim1=Timer(Timer.TIMER1,Timer.CHANNEL0,mode=Timer.MODE_PWM)Ctr_Sg90_180_1=PWM(tim1,freq=50,duty=0,pin=board_info.PIN_Ctr_SG90_180)Sg90_180_1=SG90_180_Drive.SG90_180(Ctr_Sg90_180_1)Sg90_180_1.Init()#initSG-90180#Sg90_180_1.Open(0)#不予开启(关闭舵机)#Sg90_180_1.Open(-90)#予以开启(开舵机-90)##############################################################################################################################################BEEP###################################################fm.register(board_info.PIN_Ctr_BEEP,fm.fpioa.GPIO0)#注册IO-Ctr_BEEPCtr_BEEP=GPIO(GPIO.GPIO0,GPIO.OUT)BEEP=BEEP_3V3_Drive.BEEP_3V3(Ctr_BEEP,0)#构建对象:BEEP,使用了模块,低电平触发(必须3V3供电,否则有问题)BEEP.Init()#初始化:BEEP#time.sleep_ms(1000)#BEEP.OFF()#蜂鸣器关闭#BEEP.ON()#蜂鸣器开启##############################################################################################################################################LED###################################################fm.register(board_info.PIN_Ctr_LED,fm.fpioa.GPIO1)#注册IO-Ctr_LEDCtr_LED_01=GPIO(GPIO.GPIO1,GPIO.OUT)LED_01=LED_Drive.LED_X(Ctr_LED_01,0)#构建对象:LED_01,低电平点亮LED_01.Init()#初始化:LED_01#time.sleep_ms(1000)#LED_01.OFF()#LED关闭#LED_01.ON()#LED开启##############################################################################################################################################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_statusglobalManual_Modeiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY_SYS.value()==0:#确认按键被按下ifSYS_Status=='END':SYS_Status='RUN'else:SYS_Status='END'Manual_Mode=0KEY_SYS.irq(exit_KEY_SYS_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(SYS_Status,Manual_Mode,Operation_State,Distance_1_f_cm_THR,Distance_1_f_cm)defOperation(sys_status,manual_mode,operation_state,thr_distance,m_distance):globalSg90_180_1,BEEP,LED_01#资源globalSqueezer_State#阻车器状态globalWarning_State#警告状态--Warning_State[0]车辆:0正常,1非法Warning_State[1]距离:0正常,1过近Warning_State[0]=0#警告状态--车辆:0正常,1非法Warning_State[1]=0#警告状态--距离:0正常,1过近squeezer_flag=1#阻车器Flag:初始默认开启阻车器ifsys_status=='RUN':#RUNifmanual_mode==0:#自动模式ifoperation_state==1:#(允许驶入)squeezer_flag=0#关闭阻车器elifoperation_state==2:#(不允许驶入)Warning_State[0]=1#警告状态--车辆:0正常,1非法else:#环境/其他passelifmanual_mode==1:#手动模式:开passelifmanual_mode==2:#手动模式:关squeezer_flag=0#关闭阻车器else:pass#判断距离非法:ifm_distance<thr_distance:Warning_State[1]=1#警告状态--距离:0正常,1非法else:passelse:#ENDpass#警告判断:蜂鸣器、灯光beep_flag=0#蜂鸣器Flag:初始默认关闭led_flag=0#灯珠Flag:初始默认关闭ifWarning_State[0]==1:#非法车辆(蜂鸣器、灯光)beep_flag=1#开启:蜂鸣器led_flag=1#开启:ledelse:passifWarning_State[1]==1:#非法距离(蜂鸣器示警)beep_flag=1#开启:蜂鸣器else:pass#执行执行:蜂鸣器、灯光、阻车器#蜂鸣器ifbeep_flag==1:#开启蜂鸣器BEEP.ON()#蜂鸣器开启else:BEEP.OFF()#蜂鸣器关闭#灯光ifled_flag==1:#开启ledLED_01.ON()#led开启else:LED_01.OFF()#led关闭#阻车器ifsqueezer_flag==1:#开启阻车器Squeezer_State=1#阻车器状态Sg90_180_1.Open(-90)#予以开启(开舵机-90)else:#关闭阻车器Squeezer_State=0Sg90_180_1.Open(0)#不予开启(关闭舵机)###############################################################################################################################################HC-05#################################################fm.register(board_info.PIN_HRXD_MCU_TX,fm.fpioa.UART2_TX,force=True)#注册到内部IOfm.register(board_info.PIN_HTXD_MCU_RX,fm.fpioa.UART2_RX,force=True)#注册到内部IOHC_05=UART(UART.UART2,9600,8,1,0,timeout=1000,read_buf_len=4096)#inituartSend_Data='-'Rece_Data='-'#######################################################################################################################################Send_Data_Handle############################################defSend_Data_Handle():#发送globalSend_DataglobalSYS_Status,Manual_Mode,Operation_StateglobalDistance_1_f_cm_THR,Distance_1_f_cmglobalSqueezer_State,Warning_StateSend_Data="+SS%sMM%1dAS%1dTHR%02dDT%04.1fS%1dW%d%d-"%(SYS_Status,Manual_Mode,Operation_State,Distance_1_f_cm_THR,Distance_1_f_cm,Squeezer_State,Warning_State[0],Warning_State[1])HC_05.write(Send_Data)##############################################################################################################################################Tim-0################################################TIM_0_THRESHOLD_MS=1000#定时器回调函数周期1000msdeffun_tim0(tim0):globaltrain_statusiftrain_status!=0:#若:训练完成Send_Data_Handle()#定时器1初始化,周期10mstim0=Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_0_THRESHOLD_MS,callback=fun_tim0)#######################################################################################################################################Rece_Data_Handle############################################defRece_Data_Handle():globalRece_DataglobalSYS_StatusglobalManual_ModeglobalDistance_1_f_cm_THRtmp=HC_05.read()ifnottmpisNone:print(tmp)Rece_Data=tmp.decode()print(Rece_Data)ifRece_Data[0]=='+'andRece_Data[-1]=='-':ifRece_Data[1]=='S'andRece_Data[2]=='S':if(Rece_Data[3:-1]=='RUN')or(Rece_Data[3:-1]=='END'):SYS_Status=Rece_Data[3:-1]ifSYS_Status=='END':Manual_Mode=0else:passelifRece_Data[1]=='M'andRece_Data[2]=='M':mm_tmp=0mm_tmp=int(Rece_Data[3])ifSYS_Status=="RUN":if0<=mm_tmp<=2:Manual_Mode=mm_tmp#赋值else:passelse:passelifRece_Data[1]=='T'andRece_Data[2]=='H'andRece_Data[3]=='R':thr_tmp=0thr_tmp=int(Rece_Data[4:-1])ifSYS_Status=="END":if1<=thr_tmp<=50:Distance_1_f_cm_THR=thr_tmp#赋值else:passelse:passelse:passRece_Data=Noneelse:Rece_Data=Nonetmp=None#####################################################################################################设置摄像头sensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)sensor.set_windowing((224,224))#ifboard_cube==1:#sensor.set_vflip(True)#sensor.set_hmirror(True)#lcd.init(type=2)#lcd.rotation(2)#else:#lcd.init()#初始化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:Identify_Results['Identify_Situation']=''Identify_Results['Identify_Index']=''img=sensor.snapshot()#采集图片ifboard_cube:img=img.rotation_corr(z_rotation=90)img.pix_to_ai()#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=clas

温馨提示

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

评论

0/150

提交评论