




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论1.1研究目的及意义单片机已被成熟应用于许多工业控制和家电的设计领域中,利用单片机最小系统板结合外部拓展模块,设计并实现对最小系统板与外部模块间的通信控制成为研究课题的难点与重点。本次的毕业设计课题主要从提高二维码识别速率进行研究,对比已有的传统的二维码识别系统发现传统识别系统识别速度较慢,对识别效率有较大影响为了改善这一情况。通过增加硬件资源的方法来提高识别二维码的速率,具体做法是在传统的硬件模块设备中增加SD卡模块增加外部存储空间,用于存储GBK字库和存储识别出的二维码信息,这样就可以减少文件系统检测字库的时间和系统内存的占有率,从而识别速度。同时借助于串口调试助对该系统进行了性能测试,经过测试系统识别速度上具有高性能和可靠性实现了设计目标,同时二维码的多种应用途径也使得本次研究课题更有意义。条形码识别技术是实现信息和数据自动读取和收集的重要方法和手段。在最近的几十年中,条形码识别技术已经在世界范围内迅速发展,并已形成了计算机,光学,机电和通信技术。高新技术学科产业已广泛应用于商业,工业,交通,邮电,物资管理,仓储等行业。条形码识别技术可以提高物流仓储和商业零售的效率并降低成本。传统的物流管理效率低下,主要依靠人工处理,无法提供实时,快速,准确的物流和仓储信息。使用条形码技术,物流仓储系统和信息技术可以大大提高工作效率,大大减少货物的库存周期,提高货物的周转率。本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。实现的功能如系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。1.2国内外研究现状在科学技术快速发展的带领下,人们的追求也随之发生了明显的改变,开始把追求的目标放在了生活方式上,为此,就出现了识别技术。其中使用最广泛的是二维码技术,然而,在二维码中,有很多方面都表现出了明显的问题,比如识别速度和纠错能力等方面。所以,有必要把二维码识别技术做为研究话题,对其高识别的速度进行深入的分析。在本次研究中,把美国KEILSoftware公司出品的嵌入式软件MDK5.1.4做为研究的核心,并且把其做为开发的环境,以C语言做为依据,进而完成了功能性的编程,其中包括软件模块和硬件模块,比如FATFS模块和MALLOC模块属于软件模块,而摄像头模块、LCD模块和LD模块等就在硬件的范围之内。把二者有效的融合在一起,进而建立了STM32的QR二维码识别系统。2017年杨永红,高磊,余航,徐欣辰三人在《DeepWeb接口的自动识别技术研究》一文中提出中国属于世界上的一个人口大国,也是消费大国,在世界市场上占优的比例比较大,然而在很多方面却远远落后于其它国家,比如接受能力和认知水平等等。二维码技术打开中国的大门是在一九九零年,人们也认识到了二维码技术所具有的重要作用的同时,也看到了其对社会发展所具有的促进作用。[1]2017年胡广胜,王菁,单清群,张春伟三人在《图像自动识别技术在轨道车辆检测中的应用》一文中写道我国对二维码技术进行研究的起始时间比较晚,但是它们一直把其作为研究的主要对象,至今为止,中国有关技术部门使用的二维条码有很多种,比如QRCode和DataMatrix等等,进而对其做出了翻译和进一步的研究,进而设计出了属于自己的二维码标准:汉信码和网格紧密码等自主知识产权二维码标准。中国形成了自主创新的科学发展观,对二维码技术的标准做出了自主创新,摆脱了国家对二维码技术的束缚,进而减少了对二维码技术识别所需要的成本需求。[2]2020年RaafiB.在《DesignandDevelopmentofFuzzy-PIDControllerforFour-wheeledMobileRoboticStability:AC'aseStudyontheUphillRoad》论文中指出通过研究发现,把硬件资源业应用到了QR二维码系统中,有助于二维码识别速度的提高。同时在STM32开发板业得到了应用。开发系统表现出高效率和低耗能的独特特点,这一设计为各种硬件平台下的QR二维码的发展奠定了坚实的基础。[3]2018年CeratiG,ElmerP,LantzS,etal.学者在《TraditionalTrackingwithKalmanFilteronParallelArchitecturesJournalofPhysics:ConferenceSeries》一文中提出站在二维码设备的研发应用方面,很多先进国家在工业设备制造方面已经研发出了二维码的符号生成及识别的设备,比如英国和日本等等,并且被广泛的应用到了所有的二维码的系统中。[4]与此同时,还有一些国家已经把二维码技术应用到了很多部门中,比如军事部门和公安部门等等,进而有助于对各种证件的管理。比如韩国,在所有的公交站牌上都出示了二维码,其中提供了有关公交车的各种信息,像首班车和时间等的同时,还包括沿线地区的导购和旅游生活方面的信息,为了方便不同国家的出行者,其中还使用了日语和英语等等,这样就为世界旅游业的快速发展提供了有利的条件:在日本,人们使用手机扫瞄二维码,就可以看到有关食物的信息,购买完事之后,就可以通过扫描二维码完成支付:在法国,举行了QRCode展览,把所有的QRCode作品全部展览出来,通过扫描:概括起来,二维码在其它国家得到了广泛的使用。1.3主要研究内容第一章绪论,主要讲解研究目的、研究意义,国内外研究现状以及章节安排。第二章系统总体设计,讲解了设计方案、功能需求以及单片机型号的选择。第三章系统硬件设计,介绍了系统的各个部分的硬件设计以及原理图。第四章系统软件设计,介绍了系统的总体流程和各模块的软件设计及流程。第五章系统测试,讲解了系统完后的实物功能演示以及测试;第2章系统总体结构2.1设计方案本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。实现的功能如系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。实现该功能需要以下关键技术和步骤:硬件配置:系统使用STM32单片机作为主控芯片,并搭配合适的二维码/条形码扫描模块。通过串口或其他适配方式将扫描到的数据传输给STM32单片机。数据处理:STM32单片机接收到扫描到的二维码/条形码数据后,使用相应的解码算法对数据进行解码和识别。可以利用开源库或自行开发的算法来实现二维码/条形码的解析和识别过程。分拣动作:根据识别到的二维码/条形码信息,STM32单片机控制执行器(如舵机、电磁阀等)进行相应的分拣动作。根据预设的规则,执行器会将物品放置在对应的分拣位置。计数功能:系统使用计数器或变量来记录每个物品的数量。每次识别到二维码/条形码并完成相应的分拣动作后,相应物品的计数器会增加,实现对物品数量的实时计数。用户界面:系统可以配备液晶显示屏或其他人机界面,用于显示识别结果、计数信息和操作状态等。用户可以通过界面进行相关设置和操作,如查看计数结果、清零计数器等。通过上述设计,基于STM32的二维码/条形码识别分拣计数系统能够实现快速、准确的物品分拣和计数功能。它可以应用于仓储、物流、生产线等领域,提高工作效率和精确度,减少人工错误和成本。2.2功能需求分析该设计的功能需求分析主要包括以下几个方面:识别两种条形码:系统需要能够准确识别两种不同类型的条形码,即二维码和条形码。这样可以满足不同场景和应用中的需求,提高系统的适用性和灵活性。原理解释:系统实现识别两种条形码的原理是基于摄像头对条形码的图像进行采集,并通过图像处理算法进行解码。对于二维码,系统会解析其中的信息并进行显示;对于条形码,系统会将其转化为对应的数字或字符信息。在具体实现上,系统利用摄像头采集条形码的图像,然后对图像进行预处理,包括图像增强、边缘检测等操作,以获取清晰的条形码图像。接下来,系统采用条形码解码算法,如ZBar算法或ZXing算法,对图像中的条形码进行解码,并获取条形码的内容。最后,系统将解码得到的条形码信息进行显示或进一步处理。通过这样的原理和实现方式,系统能够准确识别二维码和条形码,并提供相应的功能,如显示识别结果、存储、对比、计数等操作。这样用户可以方便地利用系统进行条形码数据的管理和处理,提高工作效率和准确性。需要注意的是,具体的算法选择和实现细节可能会根据系统的具体要求和硬件平台的限制而有所不同。因此,在设计过程中需要综合考虑系统性能、资源消耗和实际应用场景,选择合适的算法和优化策略。2.2.1技术路线1.硬件部分需要STM32F103C8T6单片机核心板、二维码/条形码摄像头模块、1.44寸TFT彩屏、舵机驱动电路、蜂鸣器提醒电路、按键电路;2.采用KEIL5软件平台和C编程语言完成下位机软件设计;3.系统调试;4.设计结构框图。2.2.2预期结果1.学会独立完成系统的分析,设计;2.设计的结果具有实用性、科学性。3.建立“单片机整体模块”,“二维码结构图”,“LED电路设计”三部分结构。4.硬件制作完成后进行软件调试。5.设计电路图。6.完成设计,进行实验。7.撰写毕业论文。2.3器件选择2.3.1单片机器件选取当涉及到选择单片机时,有很多不同的型号和品牌可供选择。ArduinoUno:ArduinoUno是一种基于ATmega328P单片机的开发板,由Arduino开发团队设计和生产。它是一种易于使用的开发平台,适用于初学者和中级开发人员。ArduinoUno具有丰富的库函数和开发环境,使得编程和快速原型设计变得简单。然而,与STM32F103C8T6相比,ArduinoUno的处理能力较弱,存储容量较小,并且拥有更少的外设接口。ESP32:ESP32是一种由EspressifSystems开发的低功耗Wi-Fi和蓝牙芯片。它具有双核处理器,提供更高的性能和更多的内存容量。ESP32还集成了丰富的外设接口,如多个串口、SPI、I2C等,以及Wi-Fi和蓝牙无线通信功能。相比之下,ESP32在无线通信方面有明显的优势,适用于需要网络连接的应用场景。然而,与STM32F103C8T6相比,ESP32的功耗可能会较高,且可能需要额外的外部组件来实现与其他设备的连接。在选择单片机时,应该根据具体项目需求和系统要求进行评估。考虑到处理能力、存储容量、外设接口、功耗需求以及开发生态系统的支持等因素,综合权衡选择最适合的单片机为STM32。处理能力强大:STM32F103C8T6采用ARMCortex-M3内核,具有较高的处理能力和运算速度。这使得它能够处理复杂的二维码识别算法和快速的数据处理操作。丰富的外设接口:STM32F103C8T6拥有丰富的外设接口,包括多个串口、SPI、I2C、定时器等。这些接口能够方便地连接摄像头、彩屏TFT、按键等硬件模块,实现二维码识别和数据处理所需的各种功能。大容量存储器:STM32F103C8T6内置了64KB的闪存和20KB的RAM,这为存储二维码字库和识别结果提供了足够的空间。同时,它还支持外部存储器扩展,例如您提到的SD卡模块,可以更灵活地管理存储空间。低功耗设计:STM32F103C8T6采用低功耗设计,在处理高性能任务的同时能够保持较低的功耗水平,延长系统的电池寿命或实现长期供电。成熟的开发生态系统:STM32F103C8T6在市场上得到广泛应用,拥有丰富的开发资源和支持,包括开发工具链、编程语言(如C语言)、开发文档和示例代码等。这为开发人员提供了便利和支持,加快了系统开发和调试的速度。综上所述,选择STM32F103C8T6作为核心控制器是基于其强大的处理能力、丰富的外设接口、大容量存储器、低功耗设计以及成熟的开发生态系统等优点。它能够满足您的需求,实现快速的二维码识别和数据处理功能,并提高工作效率。2.3.2显示器件选取LCD显示器:LCD是一种广泛应用的显示技术,它使用液晶材料和背光源来显示图像。与TFT液晶显示器相比,LCD显示器具有较低的成本和较低的功耗。然而,LCD显示器的对比度和色彩表现相对较弱,角度依赖性较高,而且响应速度较慢。因此,在要求较高的图像质量和快速响应的应用场景下,LCD显示器可能不是最佳选择。OLED显示器:OLED显示器是一种新兴的显示技术,它使用有机发光二极管来发出光亮。相比于LCD和TFT液晶显示器,OLED显示器具有更高的对比度、更丰富的色彩和更快的响应时间。它还具有较低的功耗和较薄的尺寸,适用于要求轻薄设计的应用场景。然而,OLED显示器的制造成本较高,并且存在潜在的像素老化和寿命限制的问题。该设计选择了TFT(Thin-FilmTransistor)液晶显示器作为显示器件。TFT液晶显示器是一种高性能、高质量的液晶显示技术,广泛应用于各种电子设备中。TFT液晶显示器采用了薄膜晶体管技术,每个像素点都有一个独立的晶体管控制,能够精确控制每个像素的亮度和颜色。这使得TFT显示器能够显示出细腻、清晰的图像和文字,具有较高的分辨率和色彩表现能力。该设计选择TFT液晶显示器作为显示器件的主要原因是其在图像质量、视觉效果和响应速度方面的优势。TFT液晶显示器能够呈现出丰富的色彩和高对比度的图像,使得显示内容更加生动逼真。同时,TFT液晶显示器具有较快的刷新速率和响应时间,可以实现平滑的动画效果和流畅的用户界面。此外,TFT液晶显示器还具有较大的可视角度范围,即使从不同角度观察,图像仍然清晰可见。它还具有较低的功耗,适合在嵌入式系统中使用,并具备较长的使用寿命。通过选择TFT液晶显示器作为显示器件,该设计能够提供高质量的图像和良好的用户体验,使得用户可以清晰地看到系统的状态信息、数据结果和其他相关内容,从而实现设计目标和功能需求。综上所述,TFT液晶显示器在图像质量、视觉效果、响应速度和可靠性方面具有优势。它提供了较高的分辨率、色彩表现能力和可视角度范围,适用于大多数应用场景。LCD显示器适用于成本敏感的应用,而OLED显示器适用于追求更高对比度和色彩表现的应用,并且注重轻薄设计。根据具体的设计需求和预算限制,可以选择最合适的显示器件来满足设计要求。图2-1TFT显示屏图2.3.3通信器件选取当涉及到通信器件的选择时,常见的选项包括蓝牙、串口通信和Wi-Fi。下面对这三种通信方式进行简要介绍并进行比较,最终选取了Wi-Fi作为设计中的通信器件。蓝牙(Bluetooth):蓝牙是一种短距离无线通信技术,适用于近距离设备之间的数据传输。蓝牙通信具有低功耗、低成本和易于连接的特点,适合于小范围内的数据传输和设备互联。然而,蓝牙的传输速率相对较低,适用于数据量较小的应用,并且在大范围通信和高速传输方面受到限制。串口通信(SerialCommunication):串口通信是一种通过串行接口进行数据传输的通信方式。它使用简单、成本低廉,并且在各种嵌入式系统中得到广泛应用。串口通信可以实现点对点的数据传输,适用于短距离和较简单的通信需求。然而,串口通信的传输速率有限,通信距离受限,不适合大规模数据传输和远程通信。Wi-Fi(WirelessFidelity):Wi-Fi是一种无线局域网通信技术,提供了高速、稳定的无线数据传输能力。Wi-Fi通信具有较高的传输速率、较长的通信距离和广泛的覆盖范围,适用于大规模数据传输和远程通信需求。Wi-Fi设备广泛,易于连接和配置,并且具有与互联网互通的能力,适用于各种应用场景。综上所述,根据设计需求选择Wi-Fi作为通信器件具有以下优势:高速的数据传输能力、远程通信的能力、广泛的应用支持和互联网连接的能力。Wi-Fi适用于需要大规模数据传输、远程访问和与互联网连接的应用,如物联网、远程监控和智能家居等。当设计中需要实现大量数据传输、跨越较远距离的通信和与其他网络设备进行互联时,选择Wi-Fi作为通信器件是一个可行且合适的选择。2.3.4二维码读取器件选取在设计二维码读取器件时,有多种选择,下面将对三种常见的器件进行比较,并最终选取MG65作为该设计中的二维码读取器件。摄像头模块:摄像头模块可以通过图像识别算法实现二维码的读取。它具有成本低、易于集成和灵活性强的优点。然而,摄像头模块需要对整个图像进行处理,相对来说计算量较大,读取速度可能较慢。扫描模块:扫描模块通常采用激光或红外线扫描技术来读取二维码。它具有读取速度快、精度高和适应不同光照条件的特点。但扫描模块的成本较高,需要额外的光源支持,并且需要一定的扫描角度和距离来获得良好的读取效果。集成芯片:集成芯片是一种专用的二维码解码芯片,它通过内置的解码算法和电路,能够快速准确地读取二维码。集成芯片通常具有较小的尺寸、低功耗和高可靠性,并且可以与其他系统集成。其中,MG65是一种常见的二维码解码芯片,具有高度集成的特点,能够提供快速而稳定的二维码读取能力。综上所述,根据设计需求选择MG65作为二维码读取器件具有以下优势:高度集成、快速准确的二维码读取能力、较小的尺寸和低功耗。MG65能够满足快速读取二维码的需求,并且具有较好的可靠性和稳定性。在设计中需要高效、稳定的二维码读取功能时,选择MG65作为二维码读取器件是一个可行且合适的选择。第3章系统的硬件部分设计3.1系统总体设计本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。实现的功能如系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。图3-1总体原理图3.2系统的主要功能模块设计3.2.1TFT触摸彩屏1.44寸模块设计TFT(ThinFilmTransistor)即薄膜场效应晶体管,属于有源矩阵液晶显示器中的一种。TFT-LCD液晶显示屏是薄膜晶体管型液晶显示屏,也就是“真彩”(TFT)。TFT液晶为每个像素都设有一个半导体开关,每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更真。TFT液晶显示屏的特点是亮度好、对比度高、层次感强、颜色鲜艳,但也存在着比较耗电和成本较高的不足。TFT液晶技术加快了手机彩屏的发展。彩屏手机中基本上都支持65536色,还有26万.130万显示,有的甚至支持1600万色显示,这时TFT的高对比度,色彩丰富的优势就非常重要了。本模块是一款通用的TFTLCD模块,采用全新LCD模块,质量超好。该模块有如下特点:(1)128×128的分辨率,显示清晰(2)1.44寸彩屏。(3)驱动IC:ST7735。(4)色彩深度:16位(65K色)图3-2TFT触摸彩屏1.44寸模块原理图3.2.2条码识读模块设计MG65条码识读模块,一款性能优良的扫描引擎,不仅能够轻松读取各类一维条码,而且可以高速读取二维条码,对线性条形码具有非常高的扫描速率,针对纸质条码及显示屏上的条码,也都能轻松扫描;GM65条码识读模块是在图像智能识别算法及在此基础上开发出先进的条码解码算法,可以非常容易且准确地识读条码符号,极大的简化了条码识读产品的开发难度。GM65是建立在符合最苛刻的扫描要求,提供在完全黑暗的环境,以及过大的温度范围内相一致的扫描性能。GM65扫描设备模块功耗低,工作电流小于150mA,一体化设计,体积小;支持TTL232和USB(中文免驱)接口;支持所有通用一维条码及常用二维码,可直接识别手机屏幕。图3-3二维码扫描模块原理图3.2.3分拣模块设计硬件设计中的分拣功能模块是用于将不同的物品根据其识别的条形码进行分拣,将它们放置在相应的位置。以下是对该分拣功能模块的详细说明:物品数量和种类:在系统中,假设有两种不同的物品需要进行分拣,分别为物品A和物品B。分拣位置:系统设计了两个分拣位置,分别用于放置识别为物品A和物品B的物品。假设分拣位置1用于物品A,分拣位置2用于物品B。实现方法:为了实现分拣功能,系统采用了舵机作为执行器。通过控制舵机的转动角度,可以将物品放置到指定的分拣位置。具体实现步骤如下:a.当识别到物品A的条形码时,系统会控制舵机转动到分拣位置1,将物品A放置在该位置上。b.当识别到物品B的条形码时,系统会控制舵机转动到分拣位置2,将物品B放置在该位置上。系统可以通过控制舵机的角度来精确控制物品的放置位置,确保物品被正确地分拣到指定的位置上。这样,用户可以根据识别到的条形码信息,对不同种类的物品进行分拣和管理。需要注意的是,具体的舵机控制方式和角度设置可能需要根据实际情况进行调整和优化。同时,分拣位置的设计和布置也应根据物品的特性和分拣需求来确定,以确保分拣的准确性和效率。通过这样的硬件设计,系统可以实现对物品A和物品B的分拣功能,提高工作效率和准确性。用户可以根据实际需求,进一步扩展和优化分拣功能模块,以适应更多种类的物品和分拣场景。舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前,在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。舵机是遥控航空、航天模型控制动作,改变方向的重要组成,不同类型的遥控模型所需的舵机种类也随之不同。如何审慎地选择经济且合乎需求的舵机,也是一门不可轻忽的学问。舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机的控制信号实际上是一个脉冲宽度调制信号(PWM信号),该信号可由FP-GA器件、模拟电路或单片机产生。舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。其工作原理是由接收机发出讯号给舵机,经由电路板上的IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。一般的伺服马达是将细铜线缠绕在三极转子上,当电流流经线圈时便会产生磁场,与转子外围的磁铁产生排斥作用,进而产生转动的作用力。依据物理学原理,物体的转动惯量与质量成正比,因此要转动质量愈大的物体,所需的作用力也愈大。舵机为求转速快、耗电小,于是将细铜线缠绕成极薄的中空圆柱体,形成一个重量极轻的无极中空转子,并将磁铁置於圆柱体内,这就是空心杯马达。一、传感器参数(1)尺寸:23mmX12.2mmX29mm(2)重量:9克(3)扭矩:1.5kg/cm(4)工作电压:4.2-6V(5)温度范围:0℃--55℃(6)运行速度:0.3秒/60度(7)死带宽:10微秒二、接口说明(1)暗灰:GND(2)红色:VCC4.8-7.2V(3)橙黄线:脉冲输入图3-4舵机模块原理图3.2.4蜂鸣器报警电路(高电平有效)设计有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。本系统所采用的报警模块为5V有源蜂鸣器模块,电路中采用三极管9012来驱动,只要单片机控制引脚为高电平,蜂鸣器就会鸣叫报警,反之则不鸣叫,可以通过控制单片机引脚方波输出形式控制蜂鸣器的鸣叫方式。电阻为限流电阻,保护作用。图3-4蜂鸣器模块原理图3.2.5上位机设计该设计涉及一个上位机二维码App,用于方便观察物品的分拣,并具备数据存储和舵机控制的功能。下面是对该设计的描述:打开App并连接WiFi:用户打开App后,通过连接WiFi网络与系统进行通信。二维码设置:在App界面中,用户将看到两个圆圈,分别代表A码和B码。用户可以使用App中的扫描功能,扫描一个二维码并设置为A码,再扫描另一个二维码并设置为B码。这样,A码和B码的数据将被存储起来。分拣功能:当用户扫描A码时,舵机会向右转,同时App界面中右边的圆圈会亮起。当用户扫描B码时,舵机会向左转,同时App界面中左边的圆圈会亮起。通过这种方式,实现了物品的分拣功能。数据存储:扫描得到的A码和B码数据将被保存到系统的FLASH存储器中,以保证即使在断电情况下数据也不会丢失。这样,每次启动系统时,之前存储的A码和B码数据将被恢复。操作功能:App提供了一些操作功能,包括查看A码、查看B码、设为A码、设为B码、清空A码和清空B码等选项。用户可以使用这些选项对A码和B码数据进行处理和操作,例如查看具体内容、重新设置A码或B码,以及清空已存储的A码或B码数据。总的来说,该设计的上位机二维码App具备了方便观察物品分拣的功能。它能够通过摄像头识别二维码或条形码,并将具体内容显示在彩屏TFT上。用户可以使用App进行数据存储、对比、查看和计数处理,同时通过驱动舵机实现物品的分拣。系统还具有数据保存到FLASH中,即使断电也能保留数据的功能。通过该设计,不同的物品可以被识别并放置在不同的位置,实现了简单的分拣功能。
第4章系统的软件设计4.1软件主流程图本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。实现的功能如系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。图4-1总体软件设计流程图4.2蜂鸣器模块的软件设计本系统能够通 过摄像 头识别 二维码 /条形 码具体 内容进 行彩屏 TFT 显示, 通过按 键可以 对两组 二维码 /条形 码数据 进行存 储、对 比、查 看、计 数处理 。识别 成功蜂 鸣器响 一声提醒工作人员。图4-2蜂鸣器软件设计流程图4.3分拣模块的软件设计本系统能够通 过摄像 头识别 二维码 /条形 码具体 内容进 行彩屏 TFT 显示, 通过按 键可以 对两组 二维码 /条形 码数据 进行存 储、对 比、查 看、计 数处理 。驱动 舵机进 行分拣 计数。 并且数 据保存 到FL ASH 中具有 掉电不 丢失数 据的功 能,分 拣功能 :不同 的商品 识别出 来放在 不同的位置。图4-3分拣模块软件设计流程图
第5章系统测试5.1系统实物图本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。实现的功能如系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。图5-1总体实物图5.2原理测试本系统由STM32F103C8T6单片机核心板、二维码/条形码摄像头模块、1.44寸TFT彩屏、舵机驱动电路、蜂鸣器提醒电路、按键电路组成。本系统能够通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能。系统识别二维码/条形码数据,进行相应显示,通过按键可以对A/B组条形码数据进行处理,其中包括“查看A码”、“查看B码”、“设为A码”、“设为B码”、“清空A码”、“清空B码”。其中,设为A/B码是将当前识别的内容设置为A/B码。当A/B码设置后。如果二维码/条形码摄像头模块再次扫描到的具体数据是A/B码。则A/B码对应计数加1,同时驱动舵机左/右进行动作,达到不同二维码/条形码物品进行分拣的功能。二维码/条形码摄像头自动感应扫描,如果光线条件不变自动进入低功耗,感应条件变化自动启动识别,可以有效防止反复识别同一个码(和生活中使用相同)。系统开机自检:将系统启动,摄像头模块开始工作。系统显示启动画面并进行初始化。二维码/条形码识别:将一组已知的二维码/条形码放置在摄像头前方,系统自动进行扫描和识别。检查系统是否能准确识别二维码/条形码,并在彩屏TFT上显示识别到的具体内容。存储和处理数据:按下相应的按键,将当前识别到的二维码/条形码数据存储到A组或B组。通过按键进行查看A码或B码的操作,确保存储和查看功能正常。计数和分拣:使用另一组已知的二维码/条形码,再次进行识别。确认系统能够正确识别A码或B码,并对相应的计数器进行加1操作。观察系统是否能驱动舵机进行分拣动作,将物品放置在不同的位置。清空数据:测试清空A码或B码的功能。确认按下清空A码或B码的按键后,相应的计数器被清零,舵机不再进行分拣动作。数据保存和掉电不丢失功能:关闭系统电源,再次启动系统。检查系统是否能恢复之前保存的数据,确保数据保存到FLASH中具有掉电不丢失数据的功能。性能稳定性测试:反复进行二维码/条形码的识别、存储、查看、计数、分拣等操作,观察系统在连续工作中的稳定性和性能。通过以上测试,可以验证系统的功能和性能是否符合设计要求。测试结果应确保系统能够准确识别二维码/条形码,实现彩屏TFT显示、数据存储、计数和分拣等功能,并且具备掉电不丢失数据的特性。同时,测试还应验证系统的稳定性和可靠性,以确保其在实际应用中的可用性和效果。图5-2B码扫描测试图图5-2A码扫描测试图
第6章总结与展望6.1总结本次设计基于STM32的二维码条形码识别分拣系统,实现了通过摄像头识别二维码/条形码,彩屏TFT显示识别结果,按键存储、对比、查看、计数处理数据,驱动舵机进行分拣计数等功能。同时,系统具备数据保存到FLASH中掉电不丢失的特性。通过测试和实验验证,本设计能够高效准确地识别二维码/条形码,并实现相应的数据处理和分拣动作。系统的性能稳定,能够在连续工作中保持准确和可靠的运行。系统软件的调试过程并不是一帆风顺,在调试过程中出現了一些错误。但在老师的辅导下,我总算发现了问题,并纠正了设计中的错误和不科学的地区。设计方案中的问题和解决方法主要包含下面一些层面。1.在功率模块模拟仿真过程中,发现调试输出值一直达不上设计规定。查验基本原理错误后,发现电路板焊接时出现了一些技术问题,于是重新焊接。2.应用仿真软件,发现错误代码。然后调整,发现在启用程序流程时,单片机没有正常复位,在程序流程中添加复位程序流程后才获得准确的結果。3.在模拟仿真时,一直提醒存有逻辑错误。尽管不危害效果的输出,但在具体印刷制版过程中确实会危害电源电路。之后通过调研发现,数据信息发送错误代码表明时,未能分辨忙碌情况。之后在制定中添加忙碌情况分辨后,系统软件工作中一切正常,数据信息口也沒有提醒逻辑错误。6.2展望设计是一种基于STM32F103C8T6单片机技术的二维码条形码识别分拣计数系统设计。通过摄像头识别二维码/条形码具体内容进行彩屏TFT显示,通过按键可以对两组二维码/条形码数据进行存储、对比、查看、计数处理。驱动舵机进行分拣计数。并且数据保存到FLASH中具有掉电不丢失数据的功能,分拣功能:不同的商品识别出来放在不同的位置。尽管模拟仿真说明全部设计彻底可以达到二维码条形码识别分拣计数系统设计的规定,可是全部系统软件还具有一些问题和优化的地区,必须在之后的探讨中进行健全。尽管本设计已经实现了二维码/条形码识别和分拣的基本功能,但仍有一些改进和扩展的方向可以探索:算法优化:进一步优化二维码/条形码识别算法,提高识别速度和准确性,以适应更复杂和高密度的码型。扩展应用:将系统应用于更多领域,如物流管理、仓库自动化等,通过与其他设备和系统的集成,实现更全面的自动化分拣方案。界面优化:改进上位机界面和用户交互体验,使操作更简便直观,提高用户的使用便利性。引入更多传感器:考虑引入其他传感器,如重量传感器、温湿度传感器等,以获取更多的环境和物品信息,进一步优化分拣过程。数据分析与管理:开发数据分析和管理模块,对识别和分拣数据进行统计、分析和记录,提供更全面的数据支持和决策依据。总体而言,本设计为基于STM32的二维码条形码识别分拣系统奠定了基础,具备了一定的可行性和实用性。通过进一步的优化和拓展,可以使系统在实际应用中发挥更大的作用,并满足更多领域的需求。
参考文献[1]方程.人脸识别技术研究[J]信息技术与信息化.2019(11):53-55.[2]杨永红,高磊,余航,徐欣辰.DeepWeb接口的自动识别技术研究[J].计算机工程与应用,2017(7):109-114.[3]胡广胜,王菁,单清群,张春伟.图像自动识别技术在轨道车辆检测中的应用[J].电子技术与软件工程,2017(3):88-89[4]张朝鑫基于条形码的图书管理系统设计[J].科技风,2018(9):37-37.[5]胡炼,罗锡文,曾山,等.基于机器视觉的株间机械除草装置的作物识别与定位方法[J].农业工程学报.2019,(10).DOI:10.3969/j.issn.1002-6819.2018.10.002.[6]吴勇.机电一体化技术在煤矿行业的应用研究[J]现代制造2019(36):129-129.[7]李寒,王库,曹倩,等.基于机器视觉的番茄多目标提取与匹配[J].农业工程学报.2019,(5).DOI:10.3969/j.issn.1002-6819.2018.05.028.[8]闫敏杰,夏宁,万忠,等.物联网在现代农业中的应用[J].中国农学通报.2019,(8).[9]李百惠,杨庚.混合高斯模型的自适应前景提取,中国图象图形学报,2018:1620-1627.[10]姚世凤,冯春贵,贺园园,等.物联网在农业领域的应用[J].农机化研究.2019,(7).DOI:10.3969/j.issn.1003-188X.2019.07.047.[11]CeratiG,ElmerP,LantzS,etal.TraditionalTrackingwithKalmanFilteronParallelArchitecturesJournalofPhysics:ConferenceSeries,2018.[12]PengweiHua,XiaowuLiu,JiguoYu,NaDang,XiaoweiZhang.Energy-efficientadaptiveslice-basedsecuredataaggregationschemeinWSN[J].ProcediaComputerScience,2018,129.[13]KORTUMK,MOLLERM,HIRNEIBC,etal.Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications[J].DerOphthalmologeZeitschriftDerDeutschenOphthalmologischenGescllschaft,2019.[14]RaafiB.DesignandDevelopmentofFuzzy-PIDControllerforFour-wheeledMobileRoboticStability:AC'aseStudyontheUphillRoad[J].PTEKJournalofEngineering,2020,6(2):6.[15]ZhouY,DongW,FYuan,etal.ResearchofOnlineWaterQualityMonitoringSystemBasedonZigbeeNetwork[J].AdvancesinInformatioSciences&ServiceSciences,2019,4(5):255-261.[16]张乐,张宝宁,杨红,刘禧冬,陈玉成.基于STM32的超市指纹识别储物柜系统设计[J].物联网技术,2022,12(09):10-12.[17]赵永红,黄颂,柳佳,桂邦豪.基于STM32单片机的非接触式体温测量与身份识别系统[J].桂林航天工业学院学报,2022,27(03):322-327.[18]丁一峰,李永铖,尹宏钊,客鑫林,彭根德.基于STM32的智能身份识别与红外防疫测温系统[J].现代信息科技,2022,6(10):57-60.[19]荣海林,姜万里,孙广博,左佳旖.基于STM32的用电器分析识别装置[J].电子技术与软件工程,2022,(05):113-117.[20]刘东阳,岳雪亭.基于STM32的智能购物车设计[J].工业控制计算机,2021,34(07):160-161+165.[21]丁多斌,冯向萍,丁燕,孙元明.基于STM32四轴无人机自主巡线设计[J].电子设计工程,2021,29(02):142-145.[22]蒋坤,江世明,李建祥,凌匡.快递分拣机器人的研究[J].数码世界,2020,(05):42.[23]王勇.基于STM32的一维条形码识读技术研究[D].天津大学,2016.
附录电路图源代码#include"my_include.h"#defineF_SIZE12#defineMyLCD_Show(m,n,p)LCD_ShowString(LCD_GetPos_X(F_SIZE,m),LCD_GetPos_Y(16,n),p,F_SIZE,false)#defineMyLCD_ShowChar(m,n,p)LCD_ShowChar(LCD_GetPos_X(F_SIZE,m),LCD_GetPos_Y(16,n),p,F_SIZE,false)u16disXplace=0,disYplace=3;//显示位置变量u16i;u8curMode=0;//当前模式分结算模式和扫码模式#defineADDR_FLASH_WRITE_A(FLASH_BASE_ADDR+STM32_FLASH_SIZE*1024-STM_SECTOR_SIZE*1)//A数据存储flash地址#defineADDR_FLASH_WRITE_B(FLASH_BASE_ADDR+STM32_FLASH_SIZE*1024-STM_SECTOR_SIZE*2)//B数据存储flash地址#defineTAB_SIZE_NUM128unsignedcharsaveCodeTab_A[TAB_SIZE_NUM];//存储A码unsignedcharsaveCodeTab_B[TAB_SIZE_NUM];//存储B码#defineAcountsaveCodeTab_A[TAB_SIZE_NUM-1]//A识别技术变量#defineBcountsaveCodeTab_B[TAB_SIZE_NUM-1]//B识别技术变量unsignedcharmidCurCode[TAB_SIZE_NUM];//暂存识别到的码chardis0[64];voidscanKeyAnddealKey(void);u8setMode=0;//讲当前设置模式charstringTab[][12]={"无","设为A码<<","设为B码<<","查看A码<<","查看B码<<","清空A码<<","清空B码<<"};//设置菜单#defineCTRL_DJDIR_A80//舵机指向A方向#defineCTRL_DJDIR_B-80//舵机指向B方向unsignedcharopenDjDelay=0;//打开舵机时间unsignedcharopenDjFlag=0;//打开舵机标志voidOnGetQrBarCode(const_qrbar_msg_obj*qrbarMsgRec)//处理接收到的数据{char*strPtr;u8disXplace,disYplace;//显示位置变量LCD_Fill(0,64,128,128,Color16_BLACK);//清空指定区域FRONT_COLOR=Color16_WHITE;//显示颜色MyLCD_Show(0,3,"识别内容:");//显示disXplace=0,disYplace=3;//显示位置变量for(i=0;i<qrbarMsgRec->length;i++)//传递接收到的数据{if(i%21==0)//超过显示行换行即另起一行{disXplace=0;disYplace++;}if(qrbarMsgRec->payload[i]!=0x0d&&qrbarMsgRec->payload[i]!=0x0a)//回车换行不进行显示{MyLCD_ShowChar(disXplace++,disYplace,qrbarMsgRec->payload[i]);//显示具体字符midCurCode[i]=qrbarMsgRec->payload[i];//保存当前码数据}midCurCode[i+1]='\0';//保存当前码数据}if(strstr((constchar*)saveCodeTab_A,(constchar*)midCurCode)!=NULL)//接收到字符串{Acount++;openDjDelay=20;//打开舵机时间openDjFlag=1;//打开舵机标志My_STMFlash_SaveUseSector(saveCodeTab_A);//将数据保存到flash掉电不丢失}if((strstr((constchar*)saveCodeTab_B,(constchar*)midCurCode))!=NULL)//接收到字符串{Bcount++;openDjDelay=20;//打开舵机时间openDjFlag=2;//打开舵机标志My_STMFlash_SaveUseSector(saveCodeTab_B);//将数据保存到flash掉电不丢失}setMode=0;//清空设置项My_LEDBlink(PA4,BEEP_ON,2,50,100);//蜂鸣器动作}intmain(void){USARTx_Init(USART1,9600);//串口初始化USARTx_Init(USART2,9600);//初始化My_LED_Init();My_KEY_Init();My_SG90_Init(0,TIM3,TIM_CH_1);//舵机初始化delay_ms(10);My_SG90_SetAngle(0,30);//控制转动方向delay_ms(100);My_SG90_SetAngle(0,0);//控制转动方向My_STMFlash_SectorSaveInit(ADDR_FLASH_WRITE_A,saveCodeTab_A,sizeof(saveCodeTab_A));//初始化flashMy_STMFlash_SectorSaveInit(ADDR_FLASH_WRITE_B,saveCodeTab_B,sizeof(saveCodeTab_B));//初始化flashLCD_Init();//tft初始化LCD_Clear(Color16_BLACK);//清全屏BACK_COLOR=Color16_BLACK;FRONT_COLOR=Color16_LIGHTGRAY;MyLCD_Show(0,1,"InitSystem..");//显示My_QRBAR_Init();LCD_Clear(Color16_BLACK);//清全屏FRONT_COLOR=Color16_RED;//显示颜色MyLCD_Show(0,0,"二维码/条形码");//显示FRONT_COLOR=Color16_YELLOW;//显示颜色sprintf(dis0,"计数:A:%02dB:%02d",Acount,Bcount);MyLCD_Show(0,1,dis0);//显示MyLCD_Show(0,2,"操作:");//显示FRONT_COLOR=Color16_WHITE;//显示颜色MyLCD_Show(0,3,"识别内容:");//显示FRONT_COLOR=Color16_RED;delay_ms(500);My_LEDBlink(PA4,BEEP_ON,2,50,100);//上电硬件动作下while(1){scanKeyAnddealKey();//按键扫描及处理if(myReadFlag_tick)//更新显示{myReadFlag_tick=false;//清空标志FRONT_COLOR=Color16_RED;//显示颜色MyLCD_Show(6,2,stringTab[setMode]);//显示FRONT_COLOR=Color16_YELLOW;//显示颜色sprintf(dis0,"计数:A:%02dB:%02d",Acount,Bcount);//打印MyLCD_Show(0,1,dis0);//显示if(openDjDelay>0)//打开延时{openDjDelay--;//倒计时if(openDjFlag==1)My_SG90_SetAngle(0,CTRL_DJDIR_A);//控制转动方向elseif(openDjFlag==2)My_SG90_SetAngle(0,CTRL_DJDIR_B);//控制转动方向}else{openDjFlag=0;//清空标志My_SG90_SetAngle(0,0);//控制转动方向}}if(mySendFlag_tick)//更新显示{mySendFlag_tick=false;//清空标志}My_QrBarCode_Process();//处理串口数据,次函数会在接收到数据后调用OnGetQrBarCodeMy_LEDBlinkProcess();//蜂鸣器处理}}voidscanKeyAnddealKey(void)//按键扫描及处理{My_KeyScan();if(KeyIsRelease(KEY_1))//按键按下{setMode++;//设置模式if(setMode>=7){setMode=0;//循环设置类型FRONT_COLOR=Color16_WHITE;//显示颜色MyLCD_Show(0,3,"识别内容:");//显示LCD_Fill(0,64,128,128,Color16_BLACK);//清空指定区域}My_LEDBlink(PA4,BEEP_ON,1,100,100);//蜂鸣器动作}elseif(KeyIsPress(KEY_2))//按键按下{switch(setMode){case0://无操作FRONT_COLOR=Color16_WHITE;//显示颜色MyLCD_Show(0,3,"识别内容:");//显示LCD_Fill(0,64,128,128,Color16_BLACK);//清空指定区域break;case1://设为A码i=0;while(midCurCode[i]!='\0'&&i<TAB_SIZE_NUM){saveCodeTab_A[i]=midCurCode[i];i++;//}saveCodeTab_A[i]='\0';My_LEDBlink(PA4,BEEP_ON,3,50,200);//蜂鸣器动作break;case2://设为B码i=0;while(midCurCode[i]!='\0'&&i<TAB_SIZE_NUM){saveCodeTab_B[i]=midCurCode[i];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫项目合同协议书
- 装修侵权和解协议书
- 车位打包购买协议书
- 食品供应免责协议书
- 长期外聘讲师协议书
- 餐厅管理委托协议书
- 音响安装合同协议书
- 部门车位分配协议书
- 超市供货转让协议书
- 除尘设备技术协议书
- 2024年四川西华师范大学招聘辅导员笔试真题
- 2025年武汉铁路局集团招聘(180人)笔试参考题库附带答案详解
- 2025届云南省曲靖市高三第二次教学质量检测生物试卷(有答案)
- 农产品供应链应急保障措施
- 2024年中国农业银行安徽蚌埠支行春季校招笔试题带答案
- 2025年2月21日四川省公务员面试真题及答案解析(行政执法岗)
- 国家开放大学汉语言文学本科《中国现代文学专题》期末纸质考试第一大题选择题库2025春期版
- 山东大学《军事理论》考试试卷及答案解析
- 面向非结构化文本的事件关系抽取关键技术剖析与实践
- 《国别和区域研究专题》教学大纲
- 2025年日历表含农历(2025年12个月日历-每月一张A4可打印)
评论
0/150
提交评论