树莓派linux读卡器,在树莓派上使用 PN532 NFC读卡器[0]
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
最近需要在树莓派上使用使用NFC读取mifare classic卡中的信息,在X宝购买了一块PN532芯片的NFC读卡器,然后使用libnfc提供的接口进行开发,本文介绍一下libnfc的基本使用方法。
PN532芯片介绍PN532是一个高度集成的NFC读写芯片,它包含80C51微控制器内核,集成了13.56MHz下的各种主动/被动式非接触通信方法和协议。
PN532支持三种与主机之间的通信接口(可能还支持USB,不过我这块PN532板子上没有USB接口):SPI
I2C
UART
PN532传输模块支持6种不同的工作模式:读写器模式,支持ISO/IEC 14443A / MIFARE®机制
读写器模式,支持 FeliCa机制
读写器模式,支持ISO/IEC 14443B机制
卡操作模式,支持ISO 14443A / MIFARE®机制
卡操作模式,FeliCa机制
ISO/IEC18092,ECM340点对点
本文中使用SPI与Raspberry Pi3之间进行通信,接线图就不放了,SPI接口一共就那么几根线。其实使用libnfc进行开发的话,使用什么接口都一样,libnfc会处理底层的通信细节,让开发者专注于PN532于芯片卡之间的通信过程。下文将讲述libnfc的配置方法。
libnfc介绍libnfc是GNU公共许可正下发布的第一个免费的底层的NFC SDK和编程API。它对任何人都是完全免费和公开的。这个列表给出了目前已经支持的功能。libnfc支持所有的主流操作系统,包括GNU/Linux、Mac OS X和windows。其编译工作应该在兼容POSIX的系统中进行。libnfc库支持多种NFC硬件,如dongles、flat 和 OEM设备等。libnfc当前支持ISO/IEC 14443协议A、B,Felica、Jewel/Topaz标签和发起者和接收者的点对点数据交换。
在libnfc支持的硬件列表中发现,其对PN532的各种接口都提供了很好的支持,So,放心的使用libnfc吧!(说的好像还有别的库可以用一样……)
目前libnfc的版本停留在1.7.1,可以从GitHub上得到它的源码,该网页有libnfc的官方文档。
libnfc安装与配置
开发环境为树莓派3,系统是Raspbian。安装libnfc的依赖库1sudo apt-get install libusb-dev libpcsclite-dev
安装libnfc
这里有两种安装方法,直接使用apt安装和源码编译安装。apt安装1sudo apt-get install libnfc-dev libnfc-bin
其中dev包包含libnfc的头文件和链接库文件,bin包包含了一些预编译的二进制工具(其实就是源码文件夹example里面的东西)。
源码安装
其实源码安装也很简单粗暴,在Raspbian上也没有遇到什么莫名其妙的问题。
首先安装CMake,如果已经安装了请忽略这一步:1sudo apt-get install cmake
然后cd到libnfc的源码目录中,建立一个build文件夹,在build文件夹中进行编译安装:1
2
3
4
5
6mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
至此libnfc安装完成。
配置libnfc
libnfc安装完成后,需要编辑配置文件/etc/nfc/libnfc.conf,使其能够找到PN532设备,如果系统中没有这个文件,创建它,然后在文件中添加以下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# Allow device auto-detection (default: true)
# Note: if this auto-detection is disabled, user has to set manually a device
# configuration using file or environment variable
allow_autoscan = true
# Allow intrusive auto-detection (default: false)
# Warning: intrusive auto-detection can seriously disturb other devices
# This option is not recommended, user should prefer to add manually his device.
allow_intrusive_scan = false
# Set log level (default: error)
# Valid log levels are (in order of verbosity): 0 (none), 1 (error), 2 (info), 3 (debug)
# Note: if you compiled with --enable-debug option, the default log level is "debug"
log_level = 1
# Manually set default device (no default)
# To set a default device, you must set both name and connstring for your device
# Note: if autoscan is enabled, default device will be the first device available in device list.
device.name = "PN532"
device.connstring = "pn532_spi:/dev/spidev0.0"
如果你使用i2c进行通信,将最后一行改为:1device.connstring = "pn532_i2c:/dev/i2c-1"
使用串口同理,修改最后一行的设备节点为你的串口设备。
配置完成后,使用nfc-list查看是否配置成功,如果你是使用apt安装的libnfc-bin,直接在终端中输入nfc-list即可;如果使用源码安装libnfc,这个工具在libnfc源码文件夹中的build/utils文件夹中。
运行nfc-list后如果看到如下输出,表示libnfc已经配置完成:
一般情况下不会出现配置失败的情况,如果配置失败,即未能成功打开PN532设备,请检查:树莓派的对应接口是否已经配置,如SPI、I2C等;接线是否正确;PN532设备能否正常工作等。
待续
树莓派linux读卡器,在树莓派上使用 PN532 NFC读卡器[0]相关推荐
- 树莓派linux能干什么,树莓派是什么?能干什么?
一.什么是树莓派? 树莓派是由树莓派基金会发布的卡片式电脑,起初的目的是为了让更多的孩子们可以学习计算机编程,但是发布以后受到了广大计算机爱好者的喜爱 树莓派被称为卡片式电脑,顾名思义它可以安装操作系 ...
- ft4232树莓派linux扩展串口,树莓派Linux串口编程实现自发自收
串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,具有连接线少,通讯简单,得到广泛的使用. Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串 ...
- 树莓派,linux,系统连接不上隐藏WiFi 的办法
1 正确配置 2 信道问题 正确配置 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 一行不落 ,添加以下内容 network={ssid=&quo ...
- 树莓派linux共享目录,树莓派局域网文件共享
树莓派当中的文件,很多时候希望文件能在局域网内共享,可以通过 Samba 来实现这一目的. 安装 Samba samba 的安装很简单,命令行执行: sudo apt-get install samb ...
- 树莓派linux 容量不足,树莓派内存不足,使用zram来压缩数据增加内存
内存永远是紧俏的资源,尤其是对于老式的树莓派来说,这篇文章详细记录了如何在Raspberry Pi上使用zram来压缩数据,用时间换空间增加内存. zram是一个Linux内核模块,被设计用来在RAM ...
- 树莓派linux桌面分辨率,树莓派安装KALI Linux屏幕分辨率问题
树莓派安装KALI Linux屏幕分辨率问题 在树莓派中安装Kali系统,用 HDMI线连显示器,有黑边,无法全屏(1920×1080分辨率)显示. 将树莓派的tf卡插入电脑或将tf卡第一个分区在ka ...
- 树莓派linux网络编程,树莓派(Raspberry Pi)接太阳板和移动电源
正在考虑给树莓派(Raspberry Pi)接上太阳能电池板, 这样就能把这玩意随意扔到一个有太阳的地方就可以了7X24小时待机了. 初步设想是,电池板+移动电源来给树莓派和无线网卡24小时供电. 首 ...
- 树莓派 linux 当服务器,将树莓派打造成音乐播放服务器
几个月前,我发布了一篇文章<我对探寻终极音乐播放器的探寻>(My Quest to Build the Ultimate Music Player),在那篇文章里面描述了我对一款开源的音乐 ...
- 树莓派linux i2c通信,树莓派与i2c设备的通信
最近搞树莓派,这里对学习过程中遇到的问题加以记录,感谢网上各位大神们的贡献: 首先,需要开启I2C,这里,我使用的是树莓派B+,开启方法比较简单,参考:http://www.embed-net.com ...
最新文章
- 女生可以学习Web前端吗?
- Hinton等大牛要来中国授课,首个AI人才国际培养计划在北大启动
- 应用心理学跨考计算机难不难,跨专业心理学考研难不难 主要学什么
- harmonyos 2.0怎么升级,HarmonyOS 2.0正式发布 分布式能力获得全面升级
- NOIP2001-普及组复赛-第一题-数的计算
- 第十周项目1-程序填空与阅读(一)
- Linux 终端(TTY)
- 自然语言处理实践Task6
- python计算圆锥体积和表面积_圆锥体积公式和表面积
- Springboot中temlates和static
- SQL join关联三个表或多个表
- cf	1487C - Minimum Ties
- 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
- 百度apistore第三方登陆使用说明
- ESXI提示 ramdisk“tmp”已满的解决方案
- 队列实现杨辉三角(附详细图解)
- 以太网无法连接到internet的解决方法
- idea插件translation插件 提示:翻译失败: 未知错误
- java基础技能清单
- 在itext2.1.4中的pdfPcell没有行合并(setRowspan),只有列合并的处理方法
热门文章
- mongodb查询错误:listDatabases failed NotMasterNoSlaveOk
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.OLE.Interop.IServiceProvider”。
- 完善2020淘宝618赛车活动脚本
- Element-UI框架对话框报错visible.sync
- 攻防世界第一站misc篇
- 一款手机App的配色方案如何建立美观度?
- 你感觉到疲倦了吗?释放压力的10个方法
- NFS And Autofs
- python哪些是可变对象_Python中的可变对象和不可变对象
- Partion方法的应用