走進二維碼(QR Code)的世界之引言

2021-01-17 痞子衡嵌入式

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是走進二維碼(QR Code)的世界專題的引言

如今二維碼可以說是深入走進大家的生活了,推送名片、掃碼支付都離不開它,大家幾乎每天都會和二維碼打交道。雖然大家都知道二維碼的各種應用,但很多人並不知道二維碼的原理。做嵌入式這行的人一大特質就是喜歡研究各種技術本身,痞子衡早就對二維碼技術感興趣了。上期《嵌入式半月刊》的最後,痞子衡介紹了一個基於i.MXRT1050的掃碼支付終端(QM50),這是一個二維碼識別的應用。這個應用徹底激活了痞子衡對二維碼的好奇心,所以接下來痞子衡打算帶大家一起深入研究一下二維碼技術,從零開始認識二維碼,並最終在MCU上實現二維碼生成與識別的設計。

如下圖左邊所示的矩形二維碼是大家最常看到的類型,網上可以找到很多資料,也有很多成熟的開源庫,痞子衡的最終目標不是研究這個已經沒啥秘密可言的二維碼,右邊那個放射狀的圓形二維碼才是痞子衡更感興趣的,這是微信於2017年推出的全新設計的小程序二維碼,網上關於這種二維碼的設計資料非常少,也沒有開源庫,所以痞子衡打算實現一下這種圓形二維碼。

 

今天痞子衡就先給大家簡單介紹一下QR Code基本知識以及這個專題後續的推進計劃:

一、QR Code入門1.1 二維碼起源與種類

在介紹二維碼之前,很有必要先提一下它的老大哥條形碼(barcode),條形碼技術早在20世紀40年代就被發明出來了,只不過到了70年代雷射束掃描器的問世才使得條形碼技術真正落地。條形碼常用的碼制有EAN、UPC、Codabar、Code 39、Code 128等。

 

條形碼本質上屬於一維碼,一維碼所攜帶的信息量有限,如EAN-13碼僅能容納13位阿拉伯數字,更多的信息只能依賴資料庫的支持,離開了預先建立的資料庫,這種條形碼就沒有意義了,因此,在一定程度上也限制了條形碼的應用範圍。基於這個原因,在20世紀80年代出現了二維碼。

二維碼依靠其龐大的信息攜帶量,能夠把過去使用一維條形碼時存儲於後臺資料庫中的信息包含在二維條形碼中,可以直接通過閱讀二維條形碼得到相應的信息,並且二維條形碼還有錯誤修正技術及防偽功能,增加了數據的安全性。全球現有250多種二維碼,其中常見技術標準有PDF417,QRCode,Code49、Code16K,CodeOne等20餘種。

 1.2 QR Code發明人

目前最流行的二維碼非QR Code標準莫屬,這是來自日本的電裝公司發明的一種二維碼。關於QR Code的發展歷史可以看電裝公司自己寫的軟文《QR碼的成功之路》。QR Code於2000年被正式採納為ISO國際標準 (ISO/IEC18004)。

電裝公司官網:https://www.denso-wave.com/QR Code官網:https://www.qrcode.com/

這是QR Code的簡要標準,大家先睹為快:

 規範手冊:ISO/IEC 18004:2015 Information technology — Automatic identification and data capture techniques — QR Code bar code symbology specification在線閱讀:https://www.doc88.com/p-3847760679293.html中文譯本:https://www.jianshu.com/p/7f0f30f20ef51.3 QR Code基本概念

QR Code有三個基本概念你必須要知道,分別是模型、版本、糾錯能力。

QR Code一共有兩個模型,分別是模型1和模型2。模型1是最早製作的QR Code,最高版本為14(73×73碼元),最多可以處理1167位數字。模型2是模型1的改良版,它在二維碼變形的情況下也能順利讀取數據。當二維碼被列印在曲面上,或者由於讀取角度等原因導致二維碼變形時,仍然可以通過設置在二維碼內部的對齊模式有效讀取。模型2最高版本為40(177×177碼元),最多可以處理7089位數字。

 

現在市面上主流的就是QR Code模型2,後面文章所提的QR Code均指模型2。QR Code設有1到40的不同版本(種類),每個版本都具備固有的碼元結構(碼元數)。(碼元是指構成QR Code的方形黑白點)。「碼元結構」是指二維碼中的碼元數。從版本1(21碼元×21碼元)開始,在縱向和橫向各自以4碼元為單位遞增,一直到版本40 (177碼元×177碼元)。

 

QR Code具有「糾錯功能」。即使編碼變髒或破損,也可自動恢復數據。這一「糾錯能力」具備4個級別,用戶可根據使用環境選擇相應的級別。調高級別,糾錯能力也相應提高,但由於數據量會隨之增加,編碼尺寸也也會變大。

QR Code的糾錯功能是通過將Reed-solomon Codes(RS碼)附加到原數據中的方式實現的。RS編碼是應用於音樂CD等用途的數學糾錯方法。它能以字節為單位進行糾錯,適合用於錯誤位置會集中的突發錯誤。

二、QR Code變種:微信小程序碼2.1 QR Code變種

前面介紹的是最標準的QR Code樣式,但二維碼發展到現在已經出現了很多變種,有彩色圖片、動圖、甚至非矩形的。這些變異二維碼本質上與標準QR Code原理一致,只是在編碼排版上有所不同,因此生成和識別工具也不同。

 2.2 微信小程序碼

微信小程序碼也是一種異形碼,這是騰訊2017年1月為微信小程序專門設計的一種二維碼式樣,這種異形並不是微信的首創,Facebook、Snap等公司都已經推出過類似的異形碼。這種小程序碼相比標準二維碼有如下幾個優點:

掃碼預期:掃碼前能明確知道掃碼之後將會體驗到一個小程序安全性:小程序碼目前只能通過微信產生,並且只能通過微信識別,安全性更高品牌宣傳:每個小程序碼右下角都是固定的微信小程序 Logo,每見到一次小程序碼,大家就能多一次聯想到微信小程序高容錯性:當一張二維碼圖片中間嵌有某些 Logo 圖片時,其實相當於是把最中間部分有用的編碼信息挖掉,再貼一張 Logo 圖片上去。而小程序碼不同,中間的 Logo 區並不包含數據編碼的部分,因此小程序碼擁有更高的容錯性

目前小程序碼一共支持 3 種容量,分別是 36 射線、54 射線和 72 射線:

 

因為小程序碼的專用性,目前它的生成都只能通過調用微信官方API接口,關於小程序碼的設計文檔寥寥無幾,來自騰訊官方的文章《你一定不知道,小程序碼是這樣綻放的》只稍稍透露了一些。

三、走進QR Code世界之路

鑑於以上介紹,痞子衡新開的這個專題後續推進計劃如下:

階段一:學習標準QR Code原理,使用Python搭建一個二維碼生成與識別平臺(基於現有開源庫)階段二:深入標準QR Code原理,純手工寫Python代碼實現Version1,ECC Level為L的二維碼生成與識別階段三:學習微信小程序碼原理,純手工寫Python代碼實現36射線小程序碼生成與識別階段四:將Python端手工實現移植到MCU端,在i.MXRT1060-EVK板上實現二維碼生成與識別階段五:移植一個成熟開源庫到MCU端,在i.MXRT1060-EVK板上實現二維碼生成與識別

至此,走進二維碼(QR Code)的世界專題的引言痞子衡便介紹完畢了,掌聲在哪裡~~~


Long-press QR code to transfer me a reward

As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.

相關焦點

  • 有趣的二維碼:用 MyQR 和 qrcode 製作二維碼
    本文就跟大家一起探討製作二維碼的方法。1. 二維碼二維碼( 2−Dimensional Barcode),又稱二維條形碼。目前,世界上應用最多的二維條碼符號有Aztec Code、PDF147、QR Code等。常見的二維碼為QR CodeCode,QR全稱是Quick Response,是一個近幾年來行動裝置上超流行的一種編碼方式。它的結構如下:
  • QR-Code Generator - 在線生成 QR-Code二維碼
    訪問:QR-Code Generator生成的圖片永久連結格式如下: http://qrcode.kaywa.com
  • JS+jQuery+qrcode.js實現前端生成二維碼
    var qrcode = new QRCode(DOM, {    text: "http://jindo.dev.naver.com/collie", width: 128, height: 128, colorDark : "#000000", colorLight : "#ffffff
  • 藝術|二維碼-QR Code
    > ▼二維碼
  • 二維碼「QR Code」中的「QR」到底是什麼意思?
    [Photo/Xinhua] 先來說說「二維碼」的英文說法:QR Code 「二維碼」的英文是「QR Code」,這個很多同學應該都知道。但「QR」是什麼意思呢? 其實它是「Quick Response」的縮寫,反映出這種二維碼具有「超高速識讀」的特點。
  • 集合啦動物森友會二維碼怎麼用 qr碼用法介紹
    集合啦動物森友會二維碼怎麼用,相信很多玩家都知道,遊戲裡面有個設計衣服元素的玩法,玩家可以通過自己的設計保存下來,產生一個二維碼,而這個二維碼需要通過手機配合才能夠使用的,假如你這件衣服很漂亮,其他玩家看到了,也許就會向你討要個二維碼來試穿一下,下面給大家簡單介紹下動物之森二維碼的用法以及注意情況。 1.
  • 程式設計師的樂趣,生成自定義二維碼,5行Python代碼就搞定
    隨著網際網路和智能行動裝置不斷普及,二維碼(Quick Response code)已經成為世界上應用最為廣泛的信息載體之一。生成二維碼的工具也層出不窮,但多數需要在線完成,並且生成的圖案也千篇一律,過於單調。那麼有沒有辦法實現自定義生成二維碼呢?
  • 二維碼 QR碼編碼原理詳解
    QR(Quick-Response) code是被廣泛使用的一種二維碼,解碼速度快。本文引用地址:http://www.eepw.com.cn/article/164738.htm它可以存儲多用類型如上圖時一個qrcode
  • 分享幾個在線生成網址二維碼的API接口
        現在很多大網站都有這樣的一個功能,使用手機掃描一下網頁上的二維碼便可快速在手機上訪問網站。想要實現這樣的功能其實很簡單,下面麥布分享幾個在線生成網址二維碼的API接口。
  • 集合啦動物森友會QR二維碼碼掃描與導入衣服教程
    集合啦動物森友會QR二維碼碼掃描與導入衣服教程 1. 在Android或IOS設備上下載 Nintendo Switch Online app。 IOS需要玩家使用非國區帳號,在商店搜索Nintendo Switch Online app即可。
  • 中年大叔學編程-用PyQt做一個簡單的二維碼生成器
    算了,我們還是繼續學習吧 前面簡單地嘗試了一下PyQt,這裡我們就結合PyQt來給之前生成二維碼的腳本做個可視化的界面。首先,打開designer,新建一個窗口並保存為qrcodeui.ui然後拖拽兩個GroupBox並分別將其title屬性改為二維碼參數和二維碼展示我們在二維碼參數的GroupBox分別拖拽一個label、一個text和兩個button,在二維碼展示的GroupBox中拖拽一個label用於展示二維碼
  • QRcode 大揭秘!
    捷安特於2013年8月推出「碼上防偽」購車無憂概念,歷時3年,車主QRcode於2016年全面升級。QRcode車種涵蓋捷安特、Liv、莫曼頓 3品牌全部全新產品,並被全國專賣店、消費者廣泛接受使用。捷安特相信隨著車主QRcode的廣泛應用,消費者將更安心,方便的購買到捷安特產品,享受騎行的樂趣!
  • 用python做出屬於自己的二維碼
    1、前言自從網絡發達開始,二維碼這個東東日常伴隨著我們的生活。不論是你去超市買東西,或是線上支付等,有時候都會用到它,那麼今天就來分享下,如何用一分鐘製作一個屬於自己的二維碼。2、環境準備開始之前,首先要安裝一個 Python 的第三方庫 - myqr。
  • QR CODE二維碼生成控制項
    QR CODE二維碼生成控制項是編程控制項頻道下深受用戶喜愛的軟體,太平洋下載中心提供QR CODE二維碼生成控制項官方下載。
  • 2021年最新免費網址二維碼生成工具資源分享
    現在很多大網站都有這樣的一個功能,使用手機掃描一下網頁上的二維碼便可快速在手機上訪問網站。二維碼API接口是最簡單、最便捷的免費網址二維碼生成工具。站長網誌在2016年的時候就分享過一批免費生成網址二維碼API接口資源,五年後的今天去看了一下發現沒有一個可以用的了,網際網路真是大浪淘沙啊。
  • 哪兒都有的黑白小方塊二維碼是什麼原理?看完就懂了!
    站長之家(ChinaZ.com)7月25日消息,對於生活中充斥的越來越多的二維碼,你有沒有想過它的由來?二維碼 (2-dimensional bar code)是通過某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的。
  • 動物之森怎麼掃qr碼
    在動物之森遊戲中,玩家可以通過掃描其他玩家的qr碼,來獲得各種各樣的服飾圖案,那玩家該怎麼掃qr碼呢?感興趣的玩家就看看以下內容吧!動物之森怎麼掃qr碼  首先玩家需要下載Nintendo Switch online APP。
  • 二維碼生成器
    應用類型: 1.辦公,商務,娛樂此應用既可以作為辦公商務用途,為商家或者微商生成包含網址的二維碼,又可以給個人作為娛樂分享到朋友圈裡面; 功能: 1.可以在文本框中輸入文字和網址然後生成二維碼保存起來
  • 新東方:"二維碼"、"掃碼關注"用英語怎麼說?
    二維碼是二維條碼(也叫二維條形碼)的簡稱,英文是two-dimensional barcode。微信上用的二維碼叫QR code,屬二維條碼的一種,它是Quick Response Code的縮寫,意思為「快速響應碼」。
  • 信恩科技創始人林興陸:QR Code二維碼的前世今生
    在當下二維碼很火,大家對於它的概念也比較清楚,二維碼中最為普及的是QR Code,即快速響應二維碼,它起源於日本一家汽車公司豐田電裝做的汽車零配件跟蹤設計,1994年面世,2000年拿到國際認證。當然,二維碼的早期只是相當於一個條形碼的擴充。