用搭积木的方式自制一个NFC读卡器

本文共计 2403 字,预计阅读 6 分钟

地铁刷卡、上下班门禁打卡、高铁进站刷身份证、Apple Pay 购物……这些日常使用场景,都使用了 NFC 非接触式识别和互联技术,极大地方便了人们的生活。

不过,目前市面上常见的NFC无线读卡器都使用 WIFI 或蓝牙进行数据传输,功耗较高、且传输距离有限。而如果采用 LoRaWAN® 传输,则可以解决上述问题。事实上,基于 LoRaWAN® 的 NFC 读卡器优点突出:

  1. LoRaWAN®的传输距离远、接收灵敏度高、且功耗低
  2. 采用LoRaWAN® 无线传输的读卡器安装部署方便
  3. 能使用电池供电、可持续使用半年以上。

本文将通过瑞科慧联的模块化开发套件 WisBlock 教大家快速搭建一个支持LoRaWAN® 的无线读卡器,让这个读卡器读到电子标签数据时,可以自动将数据上传到 LoRaWAN® 服务器上。WisBlock 其实是一个物联网解决方案设计生态系统,由可拼接的模块和易于使用的软件工具组成,可加快物联网产品生产周期、缩短上市时间。

搭建 LoRaWAN® NFC 读卡器概述

本次搭建使用的硬件是瑞科慧联(RAK)的 WisBlock 套件,MCU 选择的是RAK4631 WisBlock Core 模块,该模块采用强大的 Nordic nRF52840 MCU,可以支持蓝牙 5.0(蓝牙低能耗),以及 Semtech 最新的 LoRa® 收发器 SX1262,支持 LoRa® 和蓝牙两种通信模式。该 NFC 还选择了 WisBlock 套件的 RAK13600 NFC 读卡器模组,它使用的是 PN532 芯片,可以支持 ISO/ICE 14443A/B 卡类型的读写,而且还搭配了一个蜂鸣器模组 RAK18001,当 NFC 刷卡有效时,蜂鸣器会发出响声提醒。

对了,该 NFC 读卡器的搭建还会使用到瑞科慧联(RAK)的低代码开发平台 RUI3,它为 WisBlock 提供包含传感器驱动接口、无线发送接口等丰富的 API接口函数,这样我们只需要写少量的应用代码就可以完成此产品搭建了。

硬件电路搭建

硬件准备

首先我们需要准备 RAK4631 模块、RAK5005-O 底板、RAK13600 NFC 读卡器、RAK18001 蜂鸣器、两张 ISO 14443B 卡、一根 LoRa® 天线、一根 NFC天线、一个 Unify 外壳、一根蓝牙天线(安装在外壳内)。

RAK4631 模块、RAK19007 底板、RAK13600 NFC 读卡器等硬件准备
RAK4631 模块、RAK19007 底板、RAK13600 NFC 读卡器等硬件准备

硬件组装

把 RAK4631 模块扣在 CPU SLOT 的位置,RAK13600 扣在 IO SLOT 的位置,RAK18001 扣在 SLOT A(或者SLOT B),并且使用螺丝把模组固定。

连接 NFC 天线、LoRa® 天线、蓝牙天线,并安装至外壳中。硬件组装完成之后就可以进行软件设置。

软件环境搭建

在Arduino IDE中添加 RAK4631-R 开发板

打开 Arduino IDE,进入“文件 > 首选项”

打开 Arduino IDE
打开 Arduino IDE

单击图中图标,修改“附加开发板管理器网址”选项,将 RAK4631-R WisBlock Core 添加中 Arduino 开发板管理器中。

在 Arduino IDE上修改“附加开发板管理器网址”
在 Arduino IDE上修改“附加开发板管理器网址”

现在复制这个 URL https://raw.githubusercontent.com/RAKWireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless.com_rui_index.json 并粘贴至下图所示区域。如果已存在其他链接,将上述链接粘贴至新的一行。完成后,单击“好”。

在Arduino IDE上粘贴复制好的URL
在Arduino IDE上粘贴复制好的URL

重启 Arduino IDE。 进入“工具 > 开发板:“RAK4631” > 开发板管理器”。

重启Arduino IDE并执行操作
重启Arduino IDE并执行操作

在搜索框中输入“RAK”,窗口会自动出现可用的RAKwireless WisBlock Core Boards,选择“RAKwireless RUI nRF Boards”并安装。

选择并安装 RAKwireless RUI nRF Boards
选择并安装 RAKwireless RUI nRF Boards

BSP 安装完成后,根据图中路径选择 RAKwireless WisBlock Core模块。

选择 RAKwireless WisBlock Core 模块
选择 RAKwireless WisBlock Core 模块

安装使用到的库

现在安装 RAK13600-PN532 库和 Adafruit bus 库:

安装 RAK13600-PN532 库
安装 RAK13600-PN532 库
安装 Adafruit bus 库
安装 Adafruit bus 库

代码开发

LoRaWAN® 部分的初始化,此函数可以初始化协议栈的所有参数,入网方式是OTAA,用户需要根据自己的频段,入网参数修改此宏定义,代码中使用的频段是 AS923。


蜂鸣器采用的是 PWM 控制,所以要记住在未使用蜂鸣器时,记得关闭输出。


NFC 芯片初始化代码,采用 IIC 通信协议,初始化结束后,就可以使用 NFC的刷卡功能了。


每间隔 1 秒循环读取是否有 NFC 卡存在,如果读取 ID 成功,蜂鸣器会响 150 毫秒左右,然后发送卡 ID 到 LoRaWAN® 服务器上。

数据日志

本地串口日志的信息如下所示:

RAK7268 内置 LoRaWAN® 服务器日志:

备注:全部源代码如下所示


 

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论