0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂015 | AT32 MCU实现QR Decode的应用程序

雅特力 AT32 MCU 2022-07-24 14:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

二维码、条形码相信大家都非常熟悉了,条码技术已经广泛应用于我们生活当中。微信扫二维码、支付宝二维码付款、商品条形码、超市储物柜条形码等。但是由于二维码复杂度,目前识别二维码的设备还不够丰富。对此本文档利用带浮点运算的、大容量SRAM、高主频芯片AT32F403A,调用雅特力提供的Artery_QR二维码解码库在AT-START-F403A开发板上来实现二维码、CODE128\CODE39\I25\EAN13条码扫描识别。

一维条形码、二维码简介

一维条形码

一维条码是由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。一维条码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,虽然提高信息录入的速度,减少差错率,但是其空间利用率较低,数据容量较小。

二维码

二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。

二维码由于自身设计特点,可包含更多的信息量,编码信息范围更广,并且由于二维码具有一定的校 验功能等。同时还具有对不同行的信息自动识别功能、以及处理图形旋转变化点,二维码译码更加准确,其误码率为千万分之一。下图为QR二维码构造框图。

图1. QR码符号的结构d312c4d4-0938-11ed-9ade-dac502259ad0.png

1) 位置探测图形、位置探测图形分隔符:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;这些黑白间隔的矩形块很容易进行图像处理的检测。

2) 定位图形:这些小的黑白相间的格子就好像坐标轴,在二维码上定义了网格。3) 格式信息:表示该二维码的纠错级别,分为L、M、Q、H;4) 数据区域:使用黑白的二进制网格编码内容。8个格子可以编码一个字节。5) 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。6) 纠错码字:用于修正二维码损坏带来的错误。

QR二维码解码流程

了解了QR二维码的构造,下面我们来了解解码流程,QR二维码的解码流程如下图2所示。图2. QR码译码步骤d3414f70-0938-11ed-9ade-dac502259ad0.png1) 定位并获取符号图像。深色与浅色模块识别为“0”与“1”的阵列。2) 识读格式信息(如果需要,去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。3) 识读版本信息,确定符号的版本。4) 用掩模图形参考,从格式信息中得出对编码区的位图进行异或处理消除掩模。5) 根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。6) 用与纠错级别信息相对应的纠错码字检测错误,如果发现错误,立即纠错。7) 根据模式指示符和字符计数指示符将数据码字划分成多个部分。8) 最后,按照使用的模式译码得出数据字符并输出结果。二维码的解码流程具体实现的步骤和方法是比较复杂,涉及到了QR二维码的标准规则及相对应的算法,知识点很多,大家感兴趣的话可以自己多去网上查阅资料了解。

QR decode快速使用方法

硬件资源

1) LCD 93412) 外接Buzzer(PE15)3) Arduio4) AT-START-F403A V1.0实验板5) USB6) Sensor BF39017) USER key图3. 硬件资源图d35ed1b2-0938-11ed-9ade-dac502259ad0.png

注:1.该demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。

2.供电部分:使用电源供电,或USB线供电(勿使用Link单独供电)。

QR USB HID keyboard Demo使用

1) 打开QR decode project源程序,编译后下载到实验板。2) 由于该demo运行占用了169K的SRAM,所以在使用demo前需开启芯片的扩展SRAM功能(扩展为224KB),为了方便用户使用,demo已经在启动文件中开启了此项功能。

d39a459e-0938-11ed-9ade-dac502259ad0.png

3) 连接USB线到PC,通过上位机可以识别到该设备:HID Keyboard Device(标准键盘输入模式,无须驱动)4) 根据LCD显示信息,查看BF3901初始化是否成功,并按下USER key按键,开启QR解码侦测。5) 将摄像头BF3901对准二维码,LCD显示当前抓取的摄像头图像,此时芯片一直在运算QR解码。6) 若芯片一直没有解析到二维码,一维码数据,则会一直运行下去,直到解析到数据,如图4所示。蜂鸣器会响一下,并且将解析到数据通过USB传输到PC,如图5所示。Ps. QR decode默认只侦测二维码,若要侦测全部图码等,需开启宏定义:Detect_all。图4. LCD显示解析数据d3b63c72-0938-11ed-9ade-dac502259ad0.png

图5. USB传到PC数据

d3d3452e-0938-11ed-9ade-dac502259ad0.png

关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18643

    浏览量

    388212
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    雅特力AT32 MCU推动低空经济发展

    雅特力AT32系列MCU凭借288MHz主频与高精度外设,为无人机飞控、电调及云台提供核心算力支持,实现厘米级定位与高效动力控制,显著提升在电力巡检、农林植保等低空经济场景下的作业精度与可靠性,助力产业智能化升级。
    的头像 发表于 12-04 09:53 1162次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>推动低空经济发展

    下载到stm32F407是提示“ \'ascii\' codec can\'t decode byte 0xc4 )”错误怎么解?

    本人小白, 求助问题如下: 1、使用RT-Thread Studio, 新建工程,mcu型号,stm32F407. 2、编译无报错,但DAP-Link下载时提示
    发表于 10-10 06:34

    rtt 5.2.0 menuconfig报错的原因?

    版本 5.2.0 ENV v1.5.0 在at32和stm32 bsp下使用menuconfig 报错,如下图,这会是什么问题?跟ENV版本有关系?在rtt v5.1.0是没这个问题。
    发表于 09-24 08:18

    [开发工具] CS32L015的相关资料,基于芯海科技MCU的小尺寸彩屏显示解决方案

    你好!看到芯海CSCS32L015方案提供小屏幕解决方案,想要评估该方案,可以将 CS32L015 的相关资料 ( 用户手册、Pack包、屏幕开发上位机和keil对应工程demo、IAP升级Boot
    发表于 09-16 14:32

    学生适合使用的SOLIDWORKS 云应用程序

    随着科技的不断发展,计算机辅助设计(CAD)技术已经成为现代工程教育的重要组成部分。SOLIDWORKS作为一款CAD软件,其教育版云应用程序为学生提供了强大而灵活的设计平台。本文将探讨
    的头像 发表于 09-15 10:39 546次阅读
    学生适合使用的SOLIDWORKS 云<b class='flag-5'>应用程序</b>

    AT32 MCU如何使用IAP

    AT32 MCU使用IAP的方法涉及在微控制器上创建特定固件,以实现在应用编程(In-Application Programming,简称IAP)功能,主要通过USART通信接口进行固件更新操作
    发表于 08-08 17:13

    使用 USB CDC 下载应用程序固件,用时过长是为什么?

    ,如果我使用 USB CDC 下载应用程序固件,则需要 1 分 50 秒。你知道问题是什么吗? 原来的: MacBook----UART over USB----(kitprog3)MCU
    发表于 07-14 07:10

    AT32 IAP using the USART

    对于AT32 MCU,除了出厂固化的bootloader,用户也可以在应用程序中编写自己的bootloader程序,用于最终产品的固件更新。此功能称为
    发表于 07-11 10:51

    AT32的ERTC与RTC的区别

    AT32单片机系列中包含两种实时时钟(RTC)模块:标准的RTC和增强型RTC(ERTC)。以下是两者的区别: 功能丰富性 RTC :提供基本的计数功能,以秒为单位递增,范围从0x00000000到
    发表于 07-11 10:48

    #工作原理大揭秘 #单片机 #电路原理 #MCU#mcu程序开发

    mcu
    宇凡微电子
    发布于 :2025年06月19日 19:02:28

    首日速递 | 雅特力闪耀2025慕尼黑上海电子展,全方位展现智能“芯”实力

    4月15日,慕尼黑上海电子展(electronicaChina2025)在上海新国际博览中心盛大启幕。雅特力携多款AT32系列MCU新品及完整应用方案矩阵,重磅亮相本届展会,通过四大核心展区,全面
    的头像 发表于 04-16 00:15 780次阅读
    首日速递 | 雅特力闪耀2025慕尼黑上海电子展,全方位展现智能“芯”实力

    AWTK-WEB 快速入门(6) - JS WebSocket 应用程序

    WebSocket可以实现双向通信,适合实时通信场景。本文介绍一下使用Javacript语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建一个应用程
    的头像 发表于 02-26 11:42 652次阅读
    AWTK-WEB 快速入门(6) - JS WebSocket <b class='flag-5'>应用程序</b>

    AWTK-WEB 快速入门(5) - C 语言 WebSocket 应用程序

    导读WebSocket可以实现双向通信,适合实时通信场景。本文介绍一下使用C语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建一个应用程序先安装
    的头像 发表于 02-19 11:49 911次阅读
    AWTK-WEB 快速入门(5) - C 语言 WebSocket <b class='flag-5'>应用程序</b>

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 1458次阅读
    基于HPM_SDK_ENV开发<b class='flag-5'>应用程序</b>的升级处理

    BQ78412应用程序编程接口

    电子发烧友网站提供《BQ78412应用程序编程接口.pdf》资料免费下载
    发表于 12-18 14:46 0次下载
    BQ78412<b class='flag-5'>应用程序</b>编程接口