QR USB HID Keyboard例程

前言
本应用笔记的目的是提供在AT32微控制器上实现QR Decode应用程序,并通过USB HID模拟keyboard将解码数据上传到PC。

注:本例程对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。

支持型号列表:
AT32F4 系列


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

QR 二维码解码流程
了解了QR二维码的构造,下面我们来了解解码流程,QR二维码的解码流程如下图2所示。

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

硬件资源

  1. LCD 9341
  2. 外接Buzzer(PE15)
  3. Arduio
  4. AT-START-F403A V1.0 实验板
  5. USB
  6. Sensor BF3901
  7. USER key

    注:
    1.该demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。
    2.供电部分:使用电源供电,或USB线供电(勿使用Link单独供电)。

demo使用

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

AT32 MCU QR USB HID Keyboard例程相关推荐

  1. STM32 USB HID Mouse And Keyboard (guide)

    There is a post (STM32 And Custom USB HID Device? Yes Please!) that gets a lot of attention, althoug ...

  2. [转载]基于Stm32,LD3320的非特定语音识别USB HID Keyboar

    基于Stm32,LD3320的非特定语音识别USB HID Keyboard实现 ---用声音跟机器沟通 鉴于手头拥有一块ST官方的stm32f407VG discover板子以及一块ICRoute公 ...

  3. Linux3.x——USB Gadget HID keyboard + Mass storage

    本篇可能是全网第一个具体介绍板子做为usb device 设备 同时实现HID keyboard + Mass storage 功能的(内核版本3.xx).废话不多说,下面是具体操作.操作之后,你回头 ...

  4. USB HID学习:数据包分析

    本文使用 Bus Hound 工具对 USB HID 设备数据包进行分析,并结合官方手册及网上文章进行整理.文中未提到的知识,建议移步参考资源. 以笔者经验,直接阅读协议无法直观理解,最好使用工具抓包 ...

  5. 记录一下 开发STM32 USB HID踩过的坑

    记录一下 开发STM32 USB HID踩过的坑 一.前言 二.代码配置 一.前言 MCU: STM32F103C8T6 CubeMX: STM32CubeMX 5.3.0 二.代码配置 引脚配置 时 ...

  6. 使用STM32CubeMX 快速生成 USB HID 工程 - STM32F107VCT6

    背景 最近在研究USB Device通信,如USB HID .USB Device. 使用STM32CubeMX,可以快速生成 USB HID .USB Device的工程. 学习USB,通过实践的方 ...

  7. Linux下USB HID device driver研究

    首先介绍HID: HID是Human Interface Devices的缩写.翻译成中文即为人机交互设备.这里的人机交互设备是一个宏观上面的概念,任何设备,只要符合HID spec,都可以称之为HI ...

  8. STM32F405 USB HID软硬件参考设计

    简介 本文分享一款自己设计的STM32F405 USB HID小板,按照规定的外形尺寸,制作硬件成品,并调通USB HID通信,上位机能与板子进行USB双向通信. 硬件设计 硬件需求如下: MCU:S ...

  9. 嵌入式linux作为hid设备,基于嵌入式系统的USB(HID)设备

    基于嵌入式系统的USB(HID)设备 目前嵌入式系统在数字化电子产品领域应用越来越广泛.随着其成本的降低,大有取代单片机的趋势. USB设备以其小巧.便携.即插即用.成本低廉等优势在当前的桌面应用中有 ...

最新文章

  1. smarty的简单分页
  2. 数据安全最佳实践案例库建设项目案例征集
  3. 预训练语言模型论文分类整理:综述、基准数据集、PLM的设计和分析
  4. python读取一行数组_python 把文件中的每一行以数组的元素放入数组中的方法
  5. 菜鸟,下一代分布式体系架构的设计理念
  6. [html] 写一个滚动吸顶的布局
  7. java开发工作经历_开发人员在寻找第二份工作时会经历什么
  8. html文档包包含几个基本标记,HTML中包含哪些基本的标记?
  9. 内存中Android,什么是Android内存转储中的EGL和GL mtrack?
  10. 电商如何做企业总体架构?
  11. python服务端开发调试日志系统_Loglog首页、文档和下载 - 基于 Python2.7 的日志系统 - OSCHINA - 中文开源技术交流社区...
  12. jquery.countdown.js 使用教程_2020年建筑教程资源近2000G免费建筑教程,分享给有需要的建筑同行...
  13. vue中使用iconfont图标
  14. 记录前端通过XShell和xftp发布版本
  15. 容器部署在物理机还是虚拟机上?
  16. 通过人工智能实现内容智能审核及在世界杯的实战
  17. 办公软件使用学习笔记:excel第五节。excel表格筛选和排序使用方法总结。
  18. 微信小程序编写一个试卷demo
  19. 软件架构设计师-ArmStrong公理系统-函数依赖-索引文件结构-基础知识点-考试论文应试技巧
  20. 使用神经网络(ICNet)对航拍图片(遥感图像)进行图像语义分割+膨胀预测后处理优化(数据集+代码+最终训练模型)

热门文章

  1. BitConvert
  2. 区分IE6、IE7、IE8及标准浏览器的最佳方法
  3. An Introduction to Kernel Synchronization [LKD 09]
  4. Google OR-Tools(一) Get Start
  5. AJAX开发过程中的七宗罪
  6. 未来5年光通信系统十大技术趋势发布
  7. Java 每年节假日获取
  8. ios 7 Launch Images改变屏幕尺寸
  9. php 讯飞语音评测_科大讯飞提供语音评测能力 再一次颠覆语音市场
  10. HTML+CSS实现导航条