本文要介绍的是一款 COVID-19 NFC 口腔检测仪,以确保进出办公室的每个人都可以正常运行。
冠状病毒疫情的影响,办公楼严格控制工作人员的进出。每个人都应该戴上口罩并测量身体的才能进入。
在 COVID-19 期间,很多人都有免费口罩,但仍有一些人始终没有提供。这就是我制作这个项目的原因。
设备好后的人员需要通过专门的 NFC 口罩,出门定制这个普通的办公场所,你不会在外面使用这个设备。可以自由进出,否则您将无法进入。
第1步:需要的材料
硬件:
马杜伊诺零 NFC
L298N电机驱动板
NFC 壁纸
电磁锁
软件:
Arduino IDE
第2步:连接
L298N 模块 -- Maduino Zero NFC
ENA——D4 (GPIO4)
IN1 -- D5 (GPIO5)
IN2 -- D6 (GPIO6)
电磁锁 -- L298N OUT2
第3步:定制NFC口罩
我们还定制了NFC口罩、尺寸大小的NFC礼物。
第4步:安装NFC口罩检测器
Maduino Zero NFC模块用于固定在门侧,检测工作人员是否在门上,NFC支架固定在门上。
第 5 步:测试
工作人员在门口口罩,仪器检测是否自动打开。(同样戴几戴口罩,如果门会自动关闭。)
NFC代码:
#include
#include
#include "Adafruit_PN532.h"
#define PN532_SS (9)
//如果使用带 I2C 的分线器或屏蔽,只定义连接
到//到 IRQ 和复位线的引脚。使用下面的值 (2, 3) 作为屏蔽!
#define PN532_IRQ (2)
#define PN532_RESET (11) // NFC Shield 上默认未连接
Adafruit_PN532 nfc(PN532_SS);
//L298N
const int ENA = 6 ;
常量 int IN1 = 5 ;
常量 int IN2 = 4 ;
#if defined(ARDUINO_ARCH_SAMD)
// 对于零,在 USB 串行控制台上输出,如果使用编程端口对零进行编程,请删除下面的行!
// 同时更改 Adafruit_PN532.cpp 库文件中的
#define #define Serial SerialUSB
#endif
无效设置(无效){
pinMode(ENA,输出);
pinMode(IN1,输出);
pinMode(IN2,输出);
序列号.开始(115200);
串行USB.开始(115200);
SerialUSB.println("你好,Maduino Zero NFC!Makerfabs");
nfc.开始();
uint32_t 版本数据 = nfc.getFirmwareVersion();
if (!versiondata) {
SerialUSB.print("没找到 PN53x 板");
而(1);// 停止
}
// 得到好的数据,打印出来!
SerialUSB.print("找到芯片PN5"); SerialUSB.println((版本数据>>24) & 0xFF, HEX);
SerialUSB.print("固件版本"); SerialUSB.print((versiondata>>16) & 0xFF, DEC);
SerialUSB.print('.'); SerialUSB.println((versiondata>>8) & 0xFF, DEC);
// 设置从卡读取的最大重试尝试次数
// 这可以防止我们永远等待卡,这是
// PN532 的默认行为。
nfc.setPassiveActivationRetries(0xFF);
nfc.SAMConfig();
SerialUSB.println("等待 ISO14443A 卡");
}
无效循环(无效){
布尔结果_成功= 0;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // 缓冲区存储返回的 UID
uint8_t uidLength; // UID 的长度(4 或 7 个字节,取决于 ISO14443A 卡类型)
// 等待 ISO14443A 类型卡(Mifare 等)。找到时
// 'uid' 将填充 UID,uidLength 将指示
// 如果 uid 是 4 字节(Mifare Classic)或 7 字节(Mifare Ultralight)
result_success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0 ], &uidLength);
if (result_success) {
SerialUSB.println("找到一张卡!");
SerialUSB.print("UID 长度:");SerialUSB.print(uidLength, DEC);SerialUSB.println("
SerialUSB.print("UID 值:");
for (uint8_t i=0; i < uidLength; i++)
{
SerialUSB.print("0x");SerialUSB.print(uid[i], HEX);
}
SerialUSB.println("");
结果_成功=0;
//analogWrite(ENA, 255);
数字写入(ENA,高);
数字写入(IN1,低);//切换方向
digitalWrite(IN2, HIGH);
延迟(2000);
// 等待 1 秒再继续
delay(1000);
}
else
{
// PN532 等待卡片可能超时
SerialUSB.println("等待卡片超时");
}
数字写入(IN1,低);
数字写入(IN2,低);
}