目前市场上常见的NFC无线读卡器都是基于WiFi或蓝牙的,功耗大,无线传输距离有限。LoRaWAN®具有传输距离远、接收灵敏度低、功耗低等特点。
因此,使用LoRaWAN®可以弥补以上两种无线设备的不足。NFC的数据传输量也比较小,非常适合LoRaWAN®传输方式。采用 LoRaWAN® 无线传输的读卡器易于安装和部署。它是电池供电的,可以使用半年以上。
该项目的主要思想是通过 WisBlock 构建一个支持 LoRaWAN® 的无线读卡器。当读卡器读取电子标签数据时,电子标签信息会自动上传到RAK7268 WisGate Edge Lite 2内置的LoRaWAN®服务器。
本项目的主要硬件使用了 WisBlock 套件。MCU选用RAK4631 WisBlock Core模块,采用Nordic nRF52840 MCU,支持蓝牙5.0(蓝牙低功耗)和Semtech公司最新的LoRa®收发器SX1262 。它支持 LoRa® 和蓝牙通信模式。
NFC选用WisBlock E生态的RAK13600 NFC读卡模块,采用PN532芯片,支持ISO/ICE 14443A/B卡类型的读写。
它还配备了蜂鸣器模块RAK18001,在NFC刷卡有效时提供蜂鸣器提醒。
本项目软件采用RUI3开发平台。RUI3为WisBlock提供了很多API接口函数,包括传感器驱动接口和无线传输接口。只需要编写少量的应用代码就可以完成这个产品的开发。
硬件准备:
五金组装:
将RAK4631模块固定在CPU SLOT位置,RAK13600固定在IO SLOT位置,RAK18001固定在SLOT A(或SLOT B)上,用固定螺丝固定模块。
连接 NFC 天线、LoRa® 天线、蓝牙天线,并将它们安装到外壳中。
这是在组装过程中指导您的示意图
在Arduino IDE中添加RAK4631-R开发板:
https://raw.githubusercontent.com/RAKWireless/RAKwireless-Arduino-BSP-Index/main/package_rakwireless.com_rui_index.json
并将其粘贴到字段中。如果已经有其他 URL,只需将它们添加到下一行即可。添加 URL 后,单击确定。RAK
在搜索栏中。这将显示可用的 RAKwireless WisBlock 核心板,您可以将它们添加到 Arduino 板列表中。选择并安装RAKwireless RUI nRF 板安装RAK13600-PN532库和Adafruit总线库:
LoRaWAN® 部分的初始化。该函数初始化协议栈的所有参数。网络接入方式为OTAA。用户需要根据自己的频段和网络接入参数修改这个宏定义。代码中使用的频段为AS923。NFC芯片初始化代码采用IIC通信协议。初始化完成后,即可使用NFC的刷卡功能。
/*************************************
LoRaWAN band setting:
RAK_REGION_EU433
RAK_REGION_CN470
RAK_REGION_RU864
RAK_REGION_IN865
RAK_REGION_EU868
RAK_REGION_US915
RAK_REGION_AU915
RAK_REGION_KR920
RAK_REGION_AS923
*************************************/
#define OTAA_BAND (RAK_REGION_AS923)
#define OTAA_DEVEUI {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}
#define OTAA_APPEUI {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}
#define OTAA_APPKEY {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}
void lora_init()
蜂鸣器由 PWM 控制。蜂鸣器不用时,需要关闭输出。
pinMode(BUZZER_CONTROL,OUTPUT);
noTone(BUZZER_CONTROL);
NFC芯片初始化代码采用IIC通信协议。初始化完成后,即可使用NFC的刷卡功能。
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}
// Got ok data, print it out!
Serial.print("Found chip PN5"); Serial.println((versiondata >> 24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata >> 16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata >> 8) & 0xFF, DEC);
// Set the max number of retry attempts to read from a card
// This prevents us from waiting forever for a card, which is
// the default behaviour of the PN532.
nfc.setPassiveActivationRetries(0xFF);
//configure board to read RFID tags
nfc.SAMConfig();
Serial.println("Waiting for an ISO14443A card");
每1s循环读取是否有NFC卡。如果 ID 读取成功,蜂鸣器响 150ms,然后将卡 ID 发送到 LoRaWAN® 服务器。
void loop(void) {
boolean success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength; // Length of the UID (4 or 7 bytes dep ending on ISO14443A card type)
// Wait for an ISO14443B type cards (Mifare, etc.). When one is found
// 'uid' will be populated with the UID, and uidLength will indicate
// if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
if (success) {
tone(BUZZER_CONTROL,4000);
delay(150);
noTone(BUZZER_CONTROL);
Serial.println("Found a card!");
Serial.print("UID Length: "); Serial.print(uidLength, DEC); Serial.println(" byte s");
Serial.print("UID Value: ");
for (uint8_t i = 0; i < uidLength; i++)
{
Serial.print(" 0x"); Serial.print(uid[i], HEX);
}
Serial.println("");
digitalWrite(ledPin1, HIGH); // LED turn on when input pin value is HIGH
delay(150);
digitalWrite(ledPin1, LOW); //
/** Send the data package */
if (api.lorawan.send(uidLength, (uint8_t *) & uid, 2, true, 1))
{
Serial.println("Sending is requested");
}
else
{
Serial.println("Sending failed");
}
// Wait 1 second before continuing
delay(1000);
}
else
{
// PN532 probably timed out waiting for a card
Serial.println("Timed out waiting for a card");
}
}
通过WisToolBox查看实时串口日志
RAK7268 内置 LoRaWAN®,如果您需要确认数据是否已成功发送,还有一个服务器日志。
在成功构建具有 LoRaWAN 连接的 NFC 读卡器后,您有多种选择可以在多种场景中实施它,例如通过标签进行商品控制、用户进入控制、构建安全控制等许多事情,并记住我们总是说#IoTMadeEasy。
此外,请关注我们的Hackster Hub 并成为我们社区的一员,以了解更多 DIY IoT 项目和新闻。
如果您想购买我们的产品,请访问我们的商店
欢迎与我们分享,写下你的疑惑,在评论区与我们互动。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !