本文要介紹的是一款 COVID-19 NFC 口腔檢測(cè)儀,以確保進(jìn)出辦公室的每個(gè)人都可以正常運(yùn)行。
冠狀病毒疫情的影響,辦公樓嚴(yán)格控制工作人員的進(jìn)出。每個(gè)人都應(yīng)該戴上口罩并測(cè)量身體的才能進(jìn)入。
在 COVID-19 期間,很多人都有免費(fèi)口罩,但仍有一些人始終沒有提供。這就是我制作這個(gè)項(xiàng)目的原因。
設(shè)備好后的人員需要通過專門的 NFC 口罩,出門定制這個(gè)普通的辦公場(chǎng)所,你不會(huì)在外面使用這個(gè)設(shè)備。可以自由進(jìn)出,否則您將無法進(jìn)入。
第1步:需要的材料
硬件:
馬杜伊諾零 NFC
L298N電機(jī)驅(qū)動(dòng)板
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口罩檢測(cè)器
Maduino Zero NFC模塊用于固定在門側(cè),檢測(cè)工作人員是否在門上,NFC支架固定在門上。
第 5 步:測(cè)試
工作人員在門口口罩,儀器檢測(cè)是否自動(dòng)打開。(同樣戴幾戴口罩,如果門會(huì)自動(dòng)關(guān)閉。)
NFC代碼:
#include
#include
#include "Adafruit_PN532.h"
#define PN532_SS (9)
//如果使用帶 I2C 的分線器或屏蔽,只定義連接
到//到 IRQ 和復(fù)位線的引腳。使用下面的值 (2, 3) 作為屏蔽!
#define PN532_IRQ (2)
#define PN532_RESET (11) // NFC Shield 上默認(rèn)未連接
Adafruit_PN532 nfc(PN532_SS);
//L298N
const int ENA = 6 ;
常量 int IN1 = 5 ;
常量 int IN2 = 4 ;
#if defined(ARDUINO_ARCH_SAMD)
// 對(duì)于零,在 USB 串行控制臺(tái)上輸出,如果使用編程端口對(duì)零進(jìn)行編程,請(qǐng)刪除下面的行!
// 同時(shí)更改 Adafruit_PN532.cpp 庫文件中的
? ?#define #define Serial SerialUSB
#endif
無效設(shè)置(無效){
? ? pinMode(ENA,輸出);
? ? pinMode(IN1,輸出);
? ? pinMode(IN2,輸出);?
? ??
? ? 序列號(hào).開始(115200);
? ? 串行USB.開始(115200);
? ? SerialUSB.println("你好,Maduino Zero NFC!Makerfabs");
? nfc.開始();
? uint32_t 版本數(shù)據(jù) = nfc.getFirmwareVersion();
? if (!versiondata) {
? ? SerialUSB.print("沒找到 PN53x 板");
? ? 而(1);// 停止
? }
??
? // 得到好的數(shù)據(jù),打印出來!
? SerialUSB.print("找到芯片PN5");?SerialUSB.println((版本數(shù)據(jù)>>24) & 0xFF, HEX);?
? SerialUSB.print("固件版本");?SerialUSB.print((versiondata>>16) & 0xFF, DEC);?
? SerialUSB.print('.');?SerialUSB.println((versiondata>>8) & 0xFF, DEC);
??
? // 設(shè)置從卡讀取的最大重試嘗試次數(shù)
? // 這可以防止我們永遠(yuǎn)等待卡,這是
? // PN532 的默認(rèn)行為。
? nfc.setPassiveActivationRetries(0xFF);
??
? nfc.SAMConfig();
??
? SerialUSB.println("等待 ISO14443A 卡");
}
無效循環(huán)(無效){
? 布爾結(jié)果_成功= 0;
? uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };?// 緩沖區(qū)存儲(chǔ)返回的 UID
? uint8_t uidLength;?// UID 的長(zhǎng)度(4 或 7 個(gè)字節(jié),取決于 ISO14443A 卡類型)
??
? // 等待 ISO14443A 類型卡(Mifare 等)。找到時(shí)
? // 'uid' 將填充 UID,uidLength 將指示
? // 如果 uid 是 4 字節(jié)(Mifare Classic)或 7 字節(jié)(Mifare Ultralight)
? result_success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0 ], &uidLength);
??
? if (result_success) {
? ? SerialUSB.println("找到一張卡!");
? ? SerialUSB.print("UID 長(zhǎng)度:");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("");
? ? 結(jié)果_成功=0;
? ? //analogWrite(ENA, 255);
? ? 數(shù)字寫入(ENA,高);
? ? 數(shù)字寫入(IN1,低);//切換方向
? ? digitalWrite(IN2, HIGH);
? ? 延遲(2000);
?? ?// 等待 1 秒再繼續(xù)
?? ?delay(1000);
? }
? else
? {
? ? // PN532 等待卡片可能超時(shí)
? ? SerialUSB.println("等待卡片超時(shí)");
? }
? ? 數(shù)字寫入(IN1,低);?
? ? 數(shù)字寫入(IN2,低);
}
評(píng)論