QR Code, viết tắt của Quick response code (tạm dịch Mã phản hồi nhanh) hay còn gọi là mã vạch ma trận (matrixbarcode) là dạng mã vạch hai chiều (2D) có thể được đọc bởi một máy đọc mã vạch hay smartphone (điện thoại thông minh) có chức năng chụp ảnh (camera) với ứng dụng chuyên biệt để quét mã vạch.
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TP.HỒ CHÍ MINH B Đề ÁO tài: Tìm hiểu QR Code Môn học: Nhập môn CNPM Giảng viên hướng dẫn: Võ Xuân Thể Thực hiện: Nguyễn Hoàn Nam Dương Lớp: D14CQAT01-N MSSV: N14DCAT032 TPHCM,4/2017 MỤC LỤC Tìm hiểu mã QR Code I Những điều cần biết mã QR Mã QR ? Mã QR mã ma trận hay gọi mã hai chiều (Two-Dimensional) phát triển công ty Denso Wave (Nhật Bản) vào năm 1994 “QR" viết tắt từ "Quick Response", tiếng Anh có nghĩa đáp ứng nhanh, người tạo có ý định cho phép mã giải mã tốc độ cao Mã QR chứa thông tin theo hướng dọc ngang , mã vạch (Barcode) chứa liệu theo hướng đồng thời QRcode chứa khối lượng lớn thông tin so với mã vạch thông thường Lịch sử phát triển Sơ khai QRcode Barcode – loại mã vạch phát minh năm 1973 sữ dụng rộng rãi nhiều lĩnh vực giới Barcode bùng nỗ phát triển mạnh tốc độ đọc, độ xác tính ưu việt khác Tuy nhiên, với hạn chế nhiều mặt đặt biệt khối lượng thông tin mà BarCode lưu trữ (chỉ khoảng 20 số chữ số) nên loại mã 2-D sinh để giải vấn đề Barcode 2D Code with stacked bar codes 2D Code (matrix type) Mã 2D ( Two-Dimensional) ban đầu thật chất mã Barcode xếp chồng lên tạo thành (stacked Barcode) sau phát triển thêm thành mã nhiều loại mã 2D khác với phương pháp ma trận để lưu trữ nhiều thông tin Trong có nhiều loại mã sữ dụng phổ biến lĩnh vực công nghệ khoa học : PDF417, DataMatrix, Mã Maxi thông dụng mã QRCode Hệ thống mã QR Denso Wave phát minh măm 1994 Mục đích theo dõi xe cộ trình sản xuất; thiết kể phép quét phận với tốc độ cao Mặc dù ứng dụng ban đầu để theo dõi phận xe, mã QR ứng dụng nhiều ngữ cảnh khác bao gồm ứng dụng theo dõi thương mại ứng dụng hướng tới tiện lợi cho người sử dụng điện thoại di động Mã QR sử dụng để hiển thị 16 Tìm hiểu mã QR Code chữ cho người sử dụng, thời gian diễn kiện, để thêm danh thiếp vCard vào thiết bị người sử dụng, để mở URI, để viết e-mail tin nhắn hay chí thông tin định vị vị trí địa lý Người sử dụng tạo in mã QR riêng họ cho người khác quét sử dụng để ghé thăm trang phải trả tiền miễn phí thông qua mã QR Nó trở thành kiểu sử dụng nhiều nhóm mã vạch hai chiều II Những tính mã QR Các tính quan trọng - QR code lưu giữ thông tin chứa vài chục đến vài nghìn ký tự chữ số vượt trội nhiều so với Barcode truyền thống lưu trữ khoảng 20 kí tự Tối đa 7,089 ký tự mã hoá biểu tượng Biểu tượng Mã QR có kích thước mã hoá 300 ký tự chữ số - QR Code có khả xử lý nhiều loại liệu phức tạp, chẳng hạn ký tự số chữ, Kanji, Hiragana, chữ Khmer, chữ Hán, chữ Hebrew ký hiệu, mã nhị phân control codes Một đoạn chữ tiếng Nhật mã hóa mã QR *Khả lưu trữ liệu mã QR - Số đơn thuần: Tối đa 7.089 kí tự - Số chữ cái: Tối đa 4.296 kí tự - Số nhị phân (8 bit): Tối đa 2.953 byte - Kanji/Kana: Tối đa 1.817 kí tự 16 Tìm hiểu mã QR Code - Kích thước nhỏ gọn tiện dụng BarCode : Vì QR Code mang thông tin theo chiều ngang chiều dọc nên QR Code có khả mã hoá lượng liệu khoảng phần mười kích thước so với BarCode Mặc khác mã QR có dạng Vi mã QR (Micro QRcode) với kích thước nhỏ tiện dụng Kích thước BarCode so với QRCode lưu liệu - Một tính khác vượt trội mã QR mã bị bẩn, hư hại phần nhẹ đọc liệu Bởi mã QR có mức sữa lỗi định (sử dụng thuật toán chỉnh sửa lỗi Reed-Solomon) để đảm bảo cho liệu không bị đi, mức cao lượng thông tin chứa QR code giảm Từ người dùng tùy biến, chỉnh sữa mã QR phục vụ cho nhiều mục đích khác *Khả sửa chữa lỗi - Mức L 7% số từ mã (codeword) phục hồi - Mức M 15% số từ mã phục hồi - Mức Q 25% số từ mã phục hồi - Mức H 30% số từ mã phục hồi Một vài mã QR code phục vụ cho việc quảng cáo 16 Tìm hiểu mã QR Code Mã QR bị lỗi phần đọc liệu - Dù nằm vị trí dù ngược – xuôi – ngang – dọc việc đọc code dễ dàng mà không cần phải xoay chỉnh thiết bị đọc hay mã code cho định dạng Khả có chủ yếu nhờ cấu trúc mã QR có hoa văn định vị nên mã QR đọc 360° Cấu trúc mã QR - Tính Structured Append: tính cho phép Mã QR chia thành nhiều vùng liệu Ngược lại, thông tin lưu trữ nhiều biểu tượng Mã QR tái tạo lại dạng ký hiệu liệu đơn Nhiều kí tự số mã QR chia thành nhiều mã QR - Ngoài QR phát triển thành nhiều loại với nhiều ứng dụng riêng sữ dụng nhiều lĩnh vực qua đặt tính riêng chẳng hạn Micro QR Code, IQR Code, SQR code, Frame QR Những hạn chế 16 Tìm hiểu mã QR Code Bên cạnh tính vô hửu ích mã QR có vài hạn chế nhỏ sau: - Phải có thiết bị đọc mã QR smartphone có phần mềm hổ trợ tính đọc mã QR - Mức độ phổ biến thực tế so với Barcode thấp nhiều lần mặc khác doanh nghiệp, tổ chức cá nhân hài lòng với Barcode nên chưa sẳn sàng bỏ chi phí đầu tư cho thiết bị đọc mã QRcode III Cách tạo mã QR Các bước thuật toán tạo mã QR Dưới khái quát bước thuật toán tạo mã QR: • Bước 1: Data Analysis Chuẩn QR có bốn chế độ mã hóa văn bản: số, chữ số, nhị phân, chữ Kanji Mỗi chế độ mã hoá văn chuỗi nhị phân (1 0), lại sử dụng phương pháp khác để chuyển đổi văn thành chuổi nhị phân, phương pháp mã hóa tối ưu hoá để mã hóa liệu với chuỗi ngắn Do đó, bước thực phân tích liệu để xác định xem văn mã hoá chế số, chữ số, nhị phân, chữ Kanji, sau chọn chế độ tối ưu cho văn • Bước 2: Data Encoding Bây chọn chế độ mã hoá thích hợp cho văn chúng ta, bước mã hoá văn Kết bước chuỗi bit chia thành từ mã liệu có chiều dài bit VD: Đoạn chử Hello World mã hóa với QR code cho kết quả: 00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100+ • Bước 3: Error Correction Coding Mã QR sử dụng sửa lỗi Reed-Solomon Điều có nghĩa sau tạo chuỗi nhị phân liệu đại diện cho văn mình, phải sử dụng chuỗi để tạo mã số hiệu chỉnh lỗi cách sử dụng trình gọi Reed-Solomon error correction Máy quét QR đọc mã số liệu từ mã hoá sửa lỗi Bằng cách so sánh hai , máy quét xác định xem đọc liệu có xác hay không, sửa lỗi đọc liệu không xác 16 Tìm hiểu mã QR Code • Bước 4: Structure Final Message Các liệu mã hoá sửa lỗi tạo bước trước phải xếp theo thứ tự thích hợp Đối với mã QR lớn, liệu mã hiệu chỉnh lỗi tạo khối, khối phải xen kẽ theo QR code specification • Bước 5: Module Placement in Matrix Sau tạo mã liệu mã hiệu chỉnh lỗi xếp chúng theo thứ tự, phải đặt bit ma trận mã QR Các từ mã xếp ma trận cách cụ thể Trong bước này, đặt patterns cho tất mã QR, chẳng hạn boxes ba góc - Finder patterns(FP): Là ba khối góc mã QR bên trái, bên phải bên trái - Separators: Là khoảng trắng bên cạnh FP - Alignment patterns: Tương tự FP, nhỏ hơn, đặt suốt - Timing patterns: Là đường chấm chấm kết nối FP - Dark module: Là module màu đen • Bước 6: Data Masking Một số patterns ma trận mã QR khiến máy quét mã QR khó đọc mã xác Để chống lại việc này, QR Code Specification xác định mask pattern, mã thay đổi mã QR theo particular pattern Chúng ta phải xác định pattern số mask pattern dẫn đến mã QR có đặc điểm không mong muốn Điều thực cách đánh giá ma trận che dấu dựa bốn penalty rules Mã QR cuối bạn phải sử dụng mẫu mask pattern dẫn đến penalty score thấp 16 Tìm hiểu mã QR Code Những hình ảnh cho thấy tám mã QR, hình mask pattern Tất tám mã QR ví dụ mã hóa liệu Như hình trên, mask pattern có điểm số thấp mask pattern Do đó, ví dụ này, mã hóa QR nên sử dụng mask pattern xuất mã QR cuối • Bước 7: Định dạng Thông tin Phiên Bước cuối thêm định dạng thông tin phiên vào mã QR cách thêm điểm ảnh khu vực particular phần mã để trống bước trước Các điểm ảnh định dạng xác định mức độ hiệu chỉnh lỗi mask pattern sử dụng mã QR Mã QR tạo hoàn tất 16 Tìm hiểu mã QR Code Công cụ online tạo mã QR đơn giản Hiện có nhiều ứng dụng để tạo QR code hoàn toàn miễn phí Chỉ cần gõ từ khóa “QR code generator” công cụ tìm kiếm tìm nhiều công cụ trực tuyến giúp tạo mã QR Tạo mã QR miễn phí với website : http://www.qr-code-generator.com VI Tạo ứng dụng đọc mã QR Android với Zxing Giới thiệu thư viện Zxing Zxing (Zebra Crossing) thư viện mã nguồn mở, cho phép người dùng quét "graphical barcodes" 1-D 2-D với camera thiết bị Android họ xử lý nhiều định dạng mã vạch chiều chiều, cài đặt Java Mục đích thư viện sử dụng máy ảnh điện thoại di động để chụp giải mã mã vạch thiết bị, không cần phải kết nối với máy chủ Hiện thư viện hỗ trợ định dạng mã vạch sau: UPC-A UPC-E, EAN-8 EAN-13, Code 39, Code 128, QR Code, Data Matrix, ITF Thư viện chia làm nhiều phần, phần sau hỗ trợ phát triển thường xuyên Mã nguồn thư viện Zxing: https://github.com/zxing/zxing Các bước tạo ứng dụng đơn giản đọc mã QR Android Studio • Bước 1: Creating project 16 Tìm hiểu mã QR Code Tạo Project Android Studio, goto File ⇒ New ⇒ New Projects • B c 2: Thêm thư viện Zxing vào “dependencies” Để biên dịch thư viện ZXing, cần thêm thư viện vào dependencies ứng dụng với nội dung: dependencies { compile 'com.google.zxing:core:3.2.1' compile "com.journeyapps:zxing-androidembedded:3.2.0@aar" } 16 Tìm hiểu mã QR Code • Bước 4: Tạo giao diện ta tiến tạo Chúng hành Activity có tên ReaderActivity cách click phải vào app ⇒ new ⇒ Activity Kế tiếp file Activity_Reader.xml tiến hành thiết kế giao diện hình bên trên: 16 Tìm hiểu mã QR Code Đoạn code tạo Button scan_btn để thị phím Scan, TextView để thị văn bản: “QRCODE SCANNER” TextView kq dùng để thị kết sau Scan 16 Tìm hiểu mã QR Code • Bước 5: Tạo hàm xử lý file ReaderActivity.java import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; public class ReaderActivity extends AppCompatActivity { private Button scan_btn; private TextView kq; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reader); scan_btn = (Button) findViewById(R.id.scan_btn); kq = (TextView) findViewById(R.id.kq); final Activity activity = this; scan_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { IntentIntegrator integrator = new IntentIntegrator(activity); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("Hãy di chuyển đến mã QRCODE"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(false); integrator.initiateScan(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null){ if(result.getContents()==null){ Toast.makeText(this, "Không thể tìm mã QRCODE", Toast.LENGTH_LONG).show(); } else { kq.setText("Kết quả: " + result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } } 16 Tìm hiểu mã QR Code • Bước 6: Build project cài đặt ứng dụng Smart Phone Android - Để Build project chọn Build ⇒ Build APK chương trình xuất file app-debug.apk thư mục : ~\QRCode\app\build\outputs\apk - Và cuối cài đặt file cho Smart Phone tiến hành test: V Ứng dụng mã QR -Kiểm kê hàng hóa, thông tin sản phẩm -Thông tin cá nhân: card visit -Lưu trữ URL: điện thoại việc đọc QR Code để lấy URL, sau tự động mở trình duyệt - Sử dụng bến xe bus, xe lửa, tàu điện ngầm: người sử dụng quét mã QR Code bến xe biết thông tin chuyến xe -Sử dụng Viện bảo tàng: người sử dụng cần quét mã QR Code đặt cạnh vật trưng bày biết thông tin chi tiết cập nhật đồ vật -Sử dụng để mua hàng đâu: người sử dụng tàu điện ngầm, xe bus … thấy thích mặt hàng quảng cáo đặt mua thông qua QR Code Mobile Internet -Sử dụng siêu thị: để biết thông tin, hướng dẫn nấu ăn hàm lượng dinh dưỡng thức ăn cần mua -Sử dụng buổi hội thảo, thuyết trình, tổ chức kiện: người tham gia sử dụng QR Code thay cho Business Card 16 Tìm hiểu mã QR Code -Sử dụng với tờ báo, tạp chí giấy: người đọc quét mã QR Code in tờ báo, tạp chí giấy để truy cập phiên online/mobile tờ báo, tạp chí -Sử dụng chương trình nhạc hội, live show, bar, club: để xác định xem tiết mục, ca sỹ, ban nhạc, nhạc chơi, tác giả nhạc -Sử dụng nhà hàng, khách sạn, coffee shop: để biết công thức cách chế biến ăn, thức uống, thông tin khách sạn -Sử dụng với đồ vật cá nhân (xe, áo thun…) : cung cấp thông tin chi tiết hàng, xuất xứ, giá -Sử dụng truyền thông quảng cáo: dần thay quảng cáo hình thức in ấn phát tờ bướm QR Code đính kèm thông tin thương hiệu ấn phẩm, bảng hiệu cửa hàng, bảng quảng cáo, billboard -Sử dụng mã QR để tạo khác biệt chữ ký email thường dùng; quà, để tạo đặc biệt bất ngờ cho người nhận, làm cho người nhận thấy tò mò nội dung QR Code đính kèm * Một vài ví dụ ứng dụng QR Code: 16 Tìm hiểu mã QR Code Vcard mã QRCode Chỉ đường QR code Thanh toán cách quét QR Code Tài liệu tham khảo 16 Tìm hiểu mã QR Code “What is QR code ?” http://www.qrcode.com/en/about/ (12 tháng năm 2017) “QR Code” https://en.wikipedia.org/wiki/QR_code (12 tháng năm 2017) “Android QR Code Scanner using ZXingScanner Library Tutorial” https://www.numetriclabz.com/android-qr-code-scanner-usingzxingscanner-library-tutorial/ (15 tháng năm 2017) QR Code Tutorial: Introduction http://www.thonky.com/qr-codetutorial/introduction (15 tháng năm 2017) 16