目的
本教程的目的是简单了解二维码的生成原理,并在microduino TFT来显示二维码。
设备
元器件 |
数量 |
功能
|
1.27间距的8Pin导线 |
1 |
连接TFT模块
|
什么是QR code
QR code属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。
QR code的特点
- 一是快速读取(QR就是取自“Quick Response”的首字母),通过摄像头从拍摄到解码到显示内容也就三秒左右,对摄像的角度也没有什么要求;
- 二是高容量、高密度;理论上内容经过压缩处理后可以存7089个数字,4296 个字母和数字混合字符,2953个8位字节数据,1817个汉字;
- 三是支持纠错处理;纠错处理相对复杂,目前我还没有深入了解,按照QR code的标准文档说明,QR code的纠错分为4个级别,分别是:
- level L: 最大7%的错误能够被纠正;
- level M: 最大15%的错误能够被纠正;
- level Q: 最大25%的错误能够被纠正;
- level H: 最大30%的错误能够被纠正;
- 四是结构化;看似无规则的图形,其实对区域有严格的定义,下图就是一个模式2、版本1的QR图结构(关于QR code的“模式”、“版本”将在后面进行介绍):
在上图21*21的矩阵中,黑白的区域在QR码规范中被指定为固定的位置,称为寻像图形(finder pattern) 和 定位图形(timing pattern)。寻像图形和定位图形用来帮助解码程序确定图形中具体符号的坐标。
黄色的区域用来保存被编码的数据内容以及纠错信息码。
蓝色的区域,用来标识纠错的级别(也就是Level L到Level H)和所谓的“Mask pattern”,这个区域被称为“格式化信息”(format information)。
- 五是扩展能力。QR code的Structure Append特点,使一个QR code可以分解成多个QR code,反之,也可以将多个QR code的数据组合到一个QR code中来。
QR code的模式和版本
也就是前面提到过QR code的模式(Model)和版本(Version)。
- QR code分为Model1和Model2两种模式,Model1是对QR的初始定义,Model2是对Model1的扩展,目前使用较为普遍的是Model2。
- QR图的大小(size)被定义为版本(Version),版本号从1到40。版本1就是一个21*21的矩阵,每增加一个版本号,矩阵的大小就增加4个模块(Module),因此,版本40就是一个177*177的矩阵。(版本越高,意味着存储的内容越多,纠错能力也越强)。
QR code的编码内容
QR码支持编码的内容包括纯数字、数字和字符混合编码、8位字节码和包含汉字在内的多字节字符。其中:
- 数字(Numeric mode):每三个为一组压缩成10bit。
- 字母数字混合(Alphanumeric mode):每两个为一组,压缩成11bit。
- 8bit字节数据(Byte mode):无压缩直接保存。
- 日本汉字(KANJI mode):每一个字符被压缩成13bit
- 中国汉字(GB2312):每一个字符被压缩成13bit
如下表是字母数字混合:
原理图
程序
调试
步骤一:
把core+、模块和底板堆叠在一起,并用8Pin线将底板与TFT模块连接一起。
步骤二:
将程序下载到core+。之后就可以看到屏幕上出现一个二维码。
好了,到这里基本完成了。
步骤三:
之后用手机打开二维码扫描软件(用QQ或微信也行)扫描一下屏幕上的二维码,就可以扫描出来字母。如果扫描出来是个网站地址,则自动跳转打开网站。
步骤四:
如果想扫描自己定义的文字,在源代码里的QR_Code_Gen3V38_Public.ino文件内修改char charsToEncode的内容:
结果
铁钉在笔芯管里可以移动了。
视频
|