NFC Scanner voor toegangscontrole
Deuren en Sloten
- gezichtsherkenning
- vingerafdrukscanner
- RFID en/of de opvolger, NFC
Toen ik de kans kreeg om goedkoop een aantal NFC/RFID scanners aan te schaffen, ben ik met het laatste idee aan de haal gegaan. Het bleek redelijk makkelijk om zowel met Arduino als onder Python de 'tags' uit te lezen:
Arduino:
#include <Adafruit_PN532.h>
#define PN532_IRQ (2)
#define PN532_RESET (3)
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
void setup(void) {
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}
nfc.SAMConfig();
}
void loop(void) {
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;
bool authenticated = false;
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
nfc.PrintHex(uid, uidLength);
}
Python:
from py532lib.i2c import *
from py532lib.frame import *
from py532lib.constants import *
from py532lib.mifare import *
#pn532 = Pn532_i2c()
pn532 = Mifare()
pn532.SAMconfigure()
pn532.set_max_retries(MIFARE_SAFE_RETRIES)
while True:
card_uid = pn532.scan_field()
if card_uid:
address = pn532.mifare_address(0,1)
try:
pn532.mifare_auth_b(address,MIFARE_FACTORY_KEY)
try:
data = pn532.mifare_read(address)
pn532.in_deselect()
uid_string=""
for i in card_uid:
uid_string+='%x' % i
print(uid_string)
except:
print("read error")
except:
print("auth error")
Opzet toegangscontrole
- Een knop voor de deurbel
- Een NFC scanner, geplaatst direct achter de plastic behuizing
- Een raspberry pi cameramodule via een klein, afgeschermd gaatje in de behuizing
- Een voedingsmodule, bestaande uit een brugcel met condensator, met daarachter een DC-DC converter om naar 5V te converteren voor de Raspberry pi
Reacties
Een reactie posten