APP下载

基于树莓派的车载二维码扫描识别系统的设计

2016-08-16邱雅凯里学院物理与电子工程学院

科学中国人 2016年20期
关键词:树莓镜像短信

邱雅凯里学院物理与电子工程学院

基于树莓派的车载二维码扫描识别系统的设计

邱雅
凯里学院物理与电子工程学院

树莓派Raspberry Pi自推出第一款产品以来,因其支持多语言编程、功能强大,便于携带且性价比高的特点,受到了广大电子发烧友的青睐。树莓派设计的初衷是为了激发学生学习编程的乐趣,而不仅仅是强调电子产品的娱乐功能。产品之所以取名“Raspberry”,是为了向其他以水果命名的电子产品公司致敬,而“Pi”则强调了最适合该产品编程的语言是Python,除此之外,树莓派还支持Java、C等其他编程语言,使学生体验其开发的高效和语言环境的多样性。树莓派灵巧的机身和强大的拓展性,使其可应用于多个领域,树莓派扫描二维码识别系统,就是树莓派在公共交通服务领域上的新实践。同样,二维码作为物联网应用领域一项十分重要的技术,现阶段的二维码多用于公共生活服务领域,例如购物信息识别、身份验证、物品管理、物流追踪、书籍借阅等。由于应用领域比较单一,其众多优点使其在可预见的未来内前景宽广。例如当车辆行进到某个区域时,可通过该系统扫描识别喷绘于地面上的二维码,使用短信API接口通过服务器将停车信息发送到用户手机,使二维码发挥在公共交通服务领域的功能[1]。

1 系统原理

目前树莓派推出A、A+、B、B+四个版本,本设计选用B+型,具有512M运行内存,硬盘内存8G。基于树莓派B+型的车载二维码扫描识别系统,搭载Linux系统,使用树莓派支持的基础语言Py⁃thon进行设计,运用于公共交通服务领域。当用户需要驾驶车辆去公共生活服务场所时,若在停车场收费处或车位地面喷绘二维码图案,用户即可通过树莓派二维码扫描识别系统,更加便利地获取停车信息(包含具体停车时刻,免费停车时长,收费情况等),利用短信API接口技术服务器将自动发送信息到用户手机,提醒用户注意免费停车时长和收费情况,为用户获取停车信息提供更加便捷的方式,提高工作效率,避免人工服务出现的失误。

2 系统设计

2.1硬件环境搭建

⑴在树莓派SD卡上安装Linux系统,使之成为一个卡片式大小的开发板,为后续开发提供平台;⑵装载路由器,将宽带接输入端口(通常标识为WAN),登录路由器设置页面192.168.1.1,配置路由器后保存信息,注意输出端口一端接树莓派,另一端接操作电脑,该步骤的目的是为了保持树莓派和操作电脑位于同一网段;⑶将摄像头接入USB接口,用于该系统实现二维码扫描识别功能。

2.2软件设计

见图1。

⑴树莓派启动配置模块:①安装ssh软件putty.exe用于远程登录树莓派,令所有操作都在一个控制面板中实现,在后续工作中便于操作电脑对树莓派执行命令;②更改树莓派原有的镜像源,原有镜像源位于国外,将镜像源更改为国内地址有助于提升服务器的下载速度,为在中西部地区特别是教育网能达到较理想的速度本设计选用重庆大学镜像源;③安装python-imaging图形处理软件、二维码扫描识别工具zbar-tools及生成二维码的支持库python-py⁃game,用于支持树莓派扫描识别二维码的工作;④在操作电脑上安装VNC软件远程登录树莓派桌面,便于操作。

⑵系统扫描模块:编写的脚本test.py和qrcode.py能够使用摄像头对二维码信息进行扫描和识别,test.py文件中说明树莓派每执行一次命令就进行一次二维码识别,并且该过程持续不断直到识读出信息为止。

⑶系统识别模块:该模块是整个树莓派车载二维码扫描识别系统的核心,为了在后续工作中能够更好地使用,将其编译成库文件。图像预处理是对原始信息经遥感器技术和几何技术等前期处理,将QR码转换为字符数据输出。在此拓展二维码识别过程原理:①原始图像经过灰度图像的二值化处理,即像素值只有“0”和“255”的图像,再由降噪处理过滤污染的噪声,注意选取适当的阀值,提高在不同光照条件下的识别率;②使用边缘检测技术选取合适的检测算子对图像信息进行分割,再对数字图像的几何特征获取使用轮廓检测技术,常用方法有Radon变换和Hough变换,最后进行畸变矫正处理,使失真图像信息也可被识别;③计算出编码区后,就可获取二维码版本及格式信息;④按照相关译码标准得出数据字符并输出识别结果。

⑷信息传输模块:API(Application Program Interface)应用程序接口集合一组程序、定义及协议,通过API接口提供通用功能集,可实现计算机软件相互通信。选择短信API接口技术能够确保信息发送的准确性和实效性,真正做到随需应变,功能强大的开发包也支持多种语言开发和系统操作,使用更加便利。

使用Python语言编写脚本文件,调用PHP接口文件,向短信服务器提交企业ID,企业账号,密码,发送内容及发送号码等信息,当系统扫描识别二维码时,服务器将会自动发送相关的停车信息到用户手机。在本设计中使用短信API接口,为系统提供短信服务支撑,通过使用开发的API函数应用程序,可减轻编程任务,系统自行调用,免去复杂而无用的中间环节实现不同平台的数据共享。

图1 软件设计流程图

3 系统测试

3.1树莓派启动配置

⑴插入写有Linux系统的SD卡,接通电源,树莓派会自动显示开机界面。使用ssh客户端软件putty.exe远程登录树莓派,输入设定的IP地址192.168.1.50进入树莓派的登录界面,输入用户名pi和设定的密码。

⑵更换镜像源根据树莓派官方提供的镜像源,本设计选用重庆大学镜像源http://mirrors.cqu.edu.cn/Raspbian/raspbian/;使用na⁃no命令编辑,键入nano/etc/apt/sources.list进入编辑界面:①备份源列表,命令cd/etc/apt、cp sources.list sources.list_back;②更改为重庆大学镜像源命令deb http://mirrors.cqu.edu.cn/raspbian/raspbi-anwheezymaincontribnon-freerpi;③使用Ctrl+O保存更改镜像源文件,Ctrl+X退出nano编辑器;④执行apt-get update命令更新软件源,键入apt-get up-grade命令进行软件更新。

⑶Raspberry Pi自身支持Python的开发环境,只需外接摄像头,就能使用Python对二维码图像进行创建和识别,在此之前,需安装如下工具:①安装基于Python语言的图像处理库文件,用于树莓派对识别的二维码进行图像处理,键入sudo apt-get install py⁃thon-imaging;②安装二维码扫描识别器,键入sudo apt-get install zbar-tools用于对二维码图像的抓取,和二维码信息的识别;③安装生成二维码的支持库,键入sudo apt-get install python-pygame,用于识别和创建二维码。

⑷使用Python语言编写二维码开发包,创建二维码生成文件qrcode.py内容

创建主文件main.py内容如下:

3.2二维码扫描

⑴重启树莓派键入sudo reboot命令;⑵键入./StartVNCServer. sh开启VNC远程控制树莓派桌面的服务;⑶点击VNC输入IP地址192.168.1.1和密码,点击树莓派远程桌面上的LXTerrninal图标。

3.3二维码识别

将测试二维码腾讯新闻手机客户端打印出来,置于摄像头下。调整周围环境的亮度,将二维码图像至于扫描框中间位置,输入zbarcam--raw/dev/video0命令,开启识别二维码的程序,在二维码图像识别过程中可不断小幅移动二维码图像至最佳位置,2分钟左右即可获取到二维码信息,测试结果如图2。

图2 腾讯新闻手机客户端测试结果

3.4信息传输

⑴调用二次开发PHP接口创建提交短信脚本news.py:

即可在提前设定的手机上收到含有停车信息的内容如图3:

图3 短信测试结果

4 结语

树莓派是近几年兴起的新型电子设备,因为小巧,便捷,性价比高,功能强大等特点受到广大电子发烧友的喜爱。在当代社会生活中,超市付款、手机APP推广、身份识别二维码的应用都无处不在,但在车联网的应用上却寥寥无几。同样,在公共交通服务领域中,若能利用其强大的信息储藏能力,将为车主提供非常便捷的停车信息获取方式。本设计采用Python语言作为基础,实现二维码扫描识别功能是一个创新之处,并且在获取二维码信息之后使用与时俱进的短信API接口技术,服务器将自动发送停车信息到用户手机终端,对用户是一种全新的体验,其应用前景不言而喻。

通过测试产生的结果和实践应用证明,树莓派二维码扫描识别系统能够在短时间内、准确识别二维码信息,并且用户能够通过短信API接口技术接收到关于停车信息的短信。但在系统测试过程中发现,识别对环境的要求较高如光线亮度、对比度,且二维码图案的复杂程度也会影响识别成功率。若能进一步完善功能,该系统可在停车场内实施监控,智能家居系统中得到应用,或在农业实践中记录作物生长规律等领域得到拓展。

[1]杨旭炜,盛晓亮.基于树莓派实现的车载二维码扫描识别系统[J].数字技术与应用,2015(3):16.

The design of raspberry pi vehicle identification system based on two-dimensional code scanning

QIU Ya
School of Physics and Electronic Engineering,Kaili University

对于二维码在公共交通服务领域上使用的问题,本设计基于嵌入式Linux设备--树莓派设计一套车载二维码扫描识别系统。创新之处是采用树莓派的基础语言Python进行设计,实现树莓派扫描识别二维码信息的功能。当用户驾驶车辆在停车过程中使用该设备扫描识别二维码时,短信API接口能通过服务器自动为用户发送停车信息提醒用户注意停车时长和收费情况。

树莓派;二维码;Python;Linux;嵌入式系统;物联网;车载辅助设备

Regarding to the problems in using two-dimensional QR code on the public transportation service area,a vehicle two-di⁃mensional QR code scanning recognition system is designed as a reso⁃lution.This design is based on Embedded Linux device-raspberry Pi.In this innovation,raspberry Pi uses Python as its basic language, to implement its function-scanning and recognizing two-dimen⁃sional QR code information.When the user is parking a vehicle in the parking lot,he/she can use the device to scan and identify the two-dimensional QR code.The messenger API interface will auto⁃matically send the parking information to the user through the server, for reminding the user to pay attention to the parking duration and the charges of the parking lot.

Raspberry Pi;QR code;Python;Linux;Embedded System;IOT;Vehicle mounted auxiliary equipment

邱雅(1993-),女,福建厦门人,本科在读,学生,研究方向:电子技术。

猜你喜欢

树莓镜像短信
镜像
道歉短信
镜像
代发短信
黄金水果红树莓
树莓红了 游人醉了
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)
镜像
“八一”节日短信之一