基于树莓派--智能读卡(二)

1,053 阅读4分钟

树莓派和NFC配置

对读卡器进行NFC配置之前,有必要对树莓派进行一些的配置。

由于我选择的树莓派Zero WH没有USB端口,所以键盘鼠标的操控变得困难(当然存在解决的方法)。还好该型号配备了WiFi模块,使得接入网络成为可能。 我采用的是远程登录SSH。使用我的笔记本电脑上安装的SSH客户端程序来连接Raspberry pi是一个非常不错的选择,它的特点是方便、安全。可以说SSH是每一台Linux电脑的标准配置,两台主机连上同一个网络后,SSH便能在一个网络中开辟安全的通道实现Client和Server的通信。树莓派离开显示器也可以很好的工作,执行命令成为了一种可能。 在Window系统中,我推荐使用PuTTY,因为用过才知道。它是一个Very Nice的SSH客户端软件(免费、操作简单、使用方便,所占内存也非常小)。在PuTTY配置界面,只需要输入IP地址(或主机名),确保默认的连接类型是SSH就可以了,点击Open进入。

NFC模块需要配置两个库:libnfc和ifdnfc,下面有详细的步骤介绍如何配置它们。

配置和编译libnfc

libnfc是NFC的一个开源代码库,支持市面上常见的RFID读卡器驱动。但是树莓派没有预装任何一个库,只能自己用源代码创建。 可以在nfc-tools官网中下载稳定的版本,并有相关的代码配置。

  1. 当然在配置之前需要安装一些依赖包。libusb-dev libpcsclite-dev。
  2. 在源代码网站寻找libnfc的源代码(nfc-tools官网提供的网站不错),下载后需要解压一下。
  3. 对源代码进行配置,编译后会看到很多驱动程序,最后会选中我们所需的几个驱动。选中的驱动列表中如果有如下几个就代表配置成功。
  4. 输入make命令启动编译,接着用sudo make install命令用来生成对应的可执行文件。

libnfc支持读取libnfc.conf配置文件的方式加载用户定义的设备,这就需要一个配置文件。

编译与安装libnfc后,还需要创建一个一个配置文件,告诉libnfc去访问哪一个协议。这样树莓派就可以使用libnfc与PN532读卡器模块接口交互,可以访问不同的NFC芯片。

libnfc可以使用配置文件进行特殊设置或特性激活。 (/etc/nfc/libnfc.conf)在GNU/Linux系统中支持一些关键字。

  1. 启用/禁用设备自动检测功能。默认值为“真”
allow_autoscan = true/false
  1. 启用/禁用侵入式(其实就是更主动)自动检测,默认值为“false”
allow_intrusive_scan = true/false
  1. 若要选择库详细,请执行以下操作。请参阅下面有关日志级别的相应部分 日志级别为:0无;1错误(默认);2信息;3调试
log_level=n
  1. 若要定义用户设备,请执行以下操作。请参阅关于连接字符串的相应部分
device.name="My Reader Name"
device.connstring="connstring"

保存配置后,可以通过运行nfc-poll命令测试,可以看到结果。

配置和编译ifdnfc

要运行Java的PC/SC智能卡接口,还需要配置一个库,使得读卡器模块可以作为PC/SC设备接入。 这仍然是一个开源库--ifdnfc,我在资料中找到如下介绍:

ifdnfc is a IFDHandler for PC/SC to bring support of all libnfc-compatible readers to the PC/SC stack. 大致意思就是-- ifdnfc是IFDHandler为PC/SC提供所有的支持libnfc-与PC/SC堆栈兼容的读卡器 ifdnfc aims to provide a libre PCSC driver (ifdhandler) which supports all libnfc-compatible readers. 大致意思就是-- ifdnfc这个库旨在提供支持所有libnfc兼容读卡器的 PCSC驱动程序(Ifdhandler)。

  1. 编译安装ifdnfc库时,需要安装一些基本的依赖库:dh-autoreconf(我用autoconf)、libusb-dev、pcscd、 libpcsclite-dev、libtool(很重要,容易报错点)
  2. 在GitHub下载源代码,后续配置与上一个类似。

已经在在操作系统(OS)层面完成了所有准备工作。接下来使用smartcardio库读取扫过的RFID卡。