随着无现支付逐步深入我们的日常生活,我们平时出门可以没有现金但却离不开手机,这便是二维码为我们带来的便捷,本文将重点介绍如何将二维码识别植入产品设计。
目前大家所熟知的二维码识别需要配变专用的摄像头,成本一直居高不下,若通用的CSI摄像头就能完成二维码的识别与运算,那么无论是设计成本还是BOM成本都将带来可观的改善。但二维码专用摄像头的成本又居高不下,如何降低成本?是很多人关注的问题,本文将通过CSI摄像头为示例,浅析如何通过普通摄像头识别二维码信息。
搭建维码组件主要由主控——M1052核心板、采集摄像头——OV725摄像头、人机交互界面——4.3寸彩色液晶屏。
M1052跨界核心板作为二维码扫描设备的主控方案,搭载NXP i.MX RT105x处理器,主频高达528MHz,此核心板支持CSI(CMOS Sensor Interface)接口,可以分析COMS摄像头的传输来的数据。
OV7725是OmniVision公司的生产的一款低成本高清CMOS摄像头芯片,可达到30w像素,支持VGA和QVGA的图像大小。输出格式支持Raw RGB, RGB(GRB 4:2:2, RGB565/555/444) 和YCbCr(4:2:2)格式。支持AEC(自动曝光控制),AGC(自动增益控制),AWB(自动白平衡),ABF(自动带通滤波器)等功能,通讯协议采用sccb(串行摄像头控总线)协议,支持8/10 位的bayer格式输出。
显示器采用4.3寸的TFT电阻屏,采用显示器的目的是方便查看当前摄像头是否捕获到了相应的二维码。这样能够快速的定位二维码。当然如果摄像头的位置是固定的,可以不用LCD显示屏。
结合所需的系统组件编写相应的应用程序(测试程序功能:当解码成功后在串口打印输出解码出信息),如下所示。
通过移动摄像头,或者移动相应的二维码图片,使二维码在LCD屏上能清晰的显示。
当LCD显示屏上能够清晰的显示一帧带二维码的图片,才能解码成功。
当采集一帧图像,主控尝试进行二维码的解码,解码成功会在控制台上打印解码信息。
当成功解码一帧,就会在控制台上打印出解码的信息。
由于M105x的频率能够达到528MHz,相对于其他微控制器的来说,CPU的速率,在二维码解码速度上占有足够的优势,解码一帧VGA(640 * 480)的图片平均需要52ms,解码一帧QVGA(320 * 240)的图片平均需要28ms。
M105x核心板上,板载一个16M的SDRAM芯片,有足够的内存去处理算法方面的工作。下表是对SDRAM的读与写的测速。
大小 | 操作 | 速度(MB/s) |
4K | write | 268.2864 |
read | 89.1227 | |
1M | write | 249.1471 |
read | 89.045 | |
4M | write | 249.8559 |
read | 89.1428 | |
8M | write | 249.1228 |
read | 88.733 | |
16M | write | 248.7476 |
read | 88.7571 |
M105x外设多如图8,可以在处理二维码的同时可以操作其他外设做相应的工作。
由于M105x分别有集成有Wi-Fi、LoRa等的核心板,所以可以通过网络传输解码数据。可以通过应用场景选则相应的核心板。