查看: 7308|回复: 7

[教程] 树莓派使用libnfc驱动ITEAD NFC PN532模块

[复制链接]

25

主题

1

好友

1567

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    爱板会员勋章 活跃会员勋章

    发表于 2014-6-7 15:40:30 |显示全部楼层
    libnfc是首个遵循GNU(自由工程项目)通用公共许可证针对所有人都完全免费的低级别NFC软件开发包和编程应用程序接口。它提供了完整的透明度且免费供大家使用。该库目前支持调制ISO / IEC14443 A和B,FeliCa,Jewel/Topaz标签及数据交换协议(P2P)作为目标和启动程序。想了解更多关于libnfc的信息,可参考http://nfc-tools.org/
    ITEAD PN532 NFC模块配有双排引脚,可直接通过排线连接到树莓派,然后树莓派将驱动模块进行非接触式近场通信操作,如读写13.56M IC卡。
    1.jpg


    以下教程,演示如何在树莓派上使用libnfc通过SPI总线来驱动ITEAD PN532 模块。
    1, 硬件链接
    Itead PN532 Module是专门为树莓派量身定制的,仅需要排线直接连接就行,如下图
    2.jpeg

    按照上图的连接方式,Itead PN532 模块是通过SPI总线与树莓派连接的,所以需要把NFC模块的工作模式设置为SPI模式,如下图:
                                                                即 :  SET0-->L   SET1-->H

    3.jpg
    2,安装依赖的软件包
        sudo apt-get update
        sudo apt-get install libusb-dev libpcsclite-dev

    3,下载并解压缩libnfc源码包
        cd ~
        wget http://dl.bintray.com/nfc-tools/sources/libnfc-1.7.1.tar.bz2
        tar -xf libnfc-1.7.1.tar.bz2
       
    4,编译与安装
        cd libnfc-1.7.1
        ./configure --prefix=/usr --sysconfdir=/etc
        make
        sudo make install
       
    5, 修改配置文件
        cd /etc
        sudo mkdir nfc
        sudo nano /etc/nfc/libnfc.conf
    将如下内容复制到/etc/nfc/libnfc.conf文件中:

        # 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 = "Itead_PN532_SPI"
        device.connstring = "pn532_spi:/dev/spidev0.0:500000"
    6,树莓派系统默认是将SPI模块的驱动关闭的,我们需要将其打开;

        sudo nano /etc/modprobe.d/raspi-blacklist.conf
    在 “blacklist spi-bcm2708”前添加“#”,变为 “#blacklist spi-bcm2708”,如下图:

    Rpi_pn532_3.gif

    重启后能在/dev下看到两个spi设备:

    Rpi_pn532_4.gif

    7, 至此,准备工作已经做完,我们可以用“nfc-list”命令查看是否安装成功。

    Rpi_pn532_5.gif

    现在,刷个卡试下。。

    Rpi_pn532_6.gif
    测试OK!
    下面再顺便介绍下第二个方法:
    如何采用树莓派I2C总线连接的配置方式:
    1. 软件配置
    树莓派开启I2C总线,将/etc/modprobe.d/raspi-blacklist.conf中“blacklist i2c-bcm2708”变为“#blacklist i2c-bcm2708”
    在/etc/modules末尾添加一行 “i2c-dev”
    将/etc/nfc/libnfc.conf 文件最后一行改为:“pn532_i2c:/dev/i2c-1”
    Rpi_pn532_7.gif

    2. 硬件连接,如下图所示:
    rpi_pn532_9.gif

    刷卡测试,运行效果如图:

    rpi_pn532_8.gif


    -----------------------------------------------------------------------------------------------
    参考资料附录&相关链接:
    A1. libnfc配置方法:http://nfc-tools.org/index.php?title=Libnfc:configuration
    A2. libnfc安装教程:http://nfc-tools.org/index.php?title=Libnfc
    A3. libnfc用户API:http://nfc-tools.org/index.php?title=Libnfc:API
    A4. libnfc主页:http://nfc-tools.org/index.php?title=Main_Page
    A5. libnfc学习例程:http://nfc-tools.org/index.php?title=Categoryibnfc:Examples
    A6. Iteadstudio PN532 Module 网址 http://imall.iteadstudio.com/im130625002.html
    A7. Disable R-Pi/RASPBIAN serial console for using UART0 http://learn.adafruit.com/adafruit-nfc-rfid-on-raspberry-pi/freeing-uart-on-the-pi
    -------------------------------------------------------------------------------------------------
    教程到此结束,谢谢大家!有问题请留言或微博@ITEAD创易工作室

    回复

    使用道具 举报

    108

    主题

    27

    好友

    4967

    积分

    版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    论坛版主职务勋章 优秀会员勋章 活跃会员勋章 原创达人勋章 突出贡献勋章 技术高手勋章 论坛骨干勋章

    发表于 2014-6-7 21:37:02 |显示全部楼层
    支持一下,不过linux的应用还是有点少,要是有更多数据互传的例子就好了
    博客站点:http://ukonline2000.com
    网店:http://ukonline2000.taobao.com
    回复

    使用道具 举报

    207

    主题

    2

    好友

    6044

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    开心
    2016-8-15 09:30
  • 签到天数: 162 天

    [LV.7]常住居民III

    爱板会员勋章

    发表于 2014-6-9 09:11:18 |显示全部楼层
    支持!期待更多教程
    回复

    使用道具 举报

    25

    主题

    1

    好友

    1567

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    爱板会员勋章 活跃会员勋章

    发表于 2014-6-9 09:23:45 |显示全部楼层
    ukonline2000 发表于 2014-6-7 21:37
    支持一下,不过linux的应用还是有点少,要是有更多数据互传的例子就好了

    谢谢!数据互传涉及到很复杂的底层协议,后续有机会可以学习交流。
    回复

    使用道具 举报

    25

    主题

    1

    好友

    1567

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    爱板会员勋章 活跃会员勋章

    发表于 2014-6-9 09:43:38 |显示全部楼层
    haothree 发表于 2014-6-9 09:11
    支持!期待更多教程

    原来你早就发了这篇了,赞![教程] 使用Raspberry PI驱动ITEAD PN532 NFC Module:http://www.eeboard.com/bbs/thread-14696-1-1.html
    回复

    使用道具 举报

    59

    主题

    18

    好友

    2977

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    2016-9-9 09:13
  • 签到天数: 293 天

    [LV.8]以坛为家I

    爱板会员勋章 活跃会员勋章

    发表于 2014-6-9 11:47:04 |显示全部楼层
    帮顶~~~~~~~~~~~~~~···
    第五年了,这次一定要坚持到底,不留遗憾!!!
    回复

    使用道具 举报

    25

    主题

    1

    好友

    1567

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    爱板会员勋章 活跃会员勋章

    发表于 2014-6-9 13:01:23 |显示全部楼层

    新鲜出炉,一款开源的可配置的13.56MHz模块:http://www.eeboard.com/bbs/thread-33278-1-1.html
    回复

    使用道具 举报

    0

    主题

    0

    好友

    3

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2016-3-8 11:44:38 |显示全部楼层
    不错,学习了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /6 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-4 08:04 , Processed in 0.170273 second(s), 17 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部