Hallo Community,
hat jemand einen Link oder einen Quellcode für das NFC Shield 2.0b von Seeed Studio mit dem PN532 hier, um ein Relais steuern zu können wenn die richtige Kartenid eingelesen wird (13,56 MHz)?
Diesen Beispielcode habe ich auf der Herstellerseite gefunden, aber wie kann ich mit einer bestimmten Kartenid einen Pin Ausgang schalten, bitte helft mir?
//This example reads all MIFARE memory block from 0x00 to 0x63.
//It is tested with a new MIFARE 1K cards. Uses default keys for authenication.
//Contributed by Seeed Technology Inc (www.seeedstudio.com)
#include <PN532.h>
#include <SPI.h>
/*Chip select pin can be connected to D10 or D9 which is hareware optional*/
/*if you the version of NFC Shield from SeeedStudio is v2.0.*/
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define NFC_DEMO_DEBUG 1
void setup(void) {
#ifdef NFC_DEMO_DEBUG
Serial.begin(9600);
Serial.println("Hello!");
#endif
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG
Serial.print("Didn't find PN53x board");
#endif
while (1); // halt
}
#ifdef NFC_DEMO_DEBUG
// 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);
Serial.print("Supports ");
Serial.println(versiondata & 0xFF, HEX);
#endif
// configure board to read RFID tags and cards
nfc.SAMConfig();
}
void loop(void) {
uint32_t id;
// look for MiFare type cards
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);
if (id != 0)
{
#ifdef NFC_DEMO_DEBUG
Serial.print("Read card #");
Serial.println(id);
Serial.println();
#endif
uint8_t keys[]= { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF };// default key of a fresh card
for(uint8_t blockn=0;blockn<64;blockn++)
{
if(nfc.authenticateBlock(1, id ,blockn,KEY_A,keys)) //authenticate block blockn
{
//if authentication successful
uint8_t block[16];
//read memory block blockn
if(nfc.readMemoryBlock(1,blockn,block))
{
#ifdef NFC_DEMO_DEBUG
//if read operation is successful
for(uint8_t i=0;i<16;i++)
{
//print memory block
Serial.print(block[i],HEX);
if(block[i] <= 0xF) //Data arrangement / beautify
{
Serial.print(" ");
}
else
{
Serial.print(" ");
}
}
Serial.print("| Block ");
if(blockn <= 9) //Data arrangement / beautify
{
Serial.print(" ");
}
Serial.print(blockn,DEC);
Serial.print(" | ");
if(blockn == 0)
{
Serial.println("Manufacturer Block");
}
else
{
if(((blockn + 1) % 4) == 0)
{
Serial.println("Sector Trailer");
}
else
{
Serial.println("Data Block");
}
}
#endif
}
}
}
}
delay(2000);
}
Hat denn niemand eine Idee wie man ein Relais schalten kann, mit auf dem NFC Chip vorhandener ID?????
Hat denn niemand eine Idee wie man ein Relais schalten kann, mit auf dem NFC Chip vorhandener ID?????
Hmmh, kein Link zur verwendeten Bibliothek, kein Link zur verwendeten Hardware, kein Beispieloutput, der von der von Dir geposteten Beispielanwendung ausgegeben wird. Deine Unterstützung für uns lässt ziemlich zu wünschen übrig. Im Grunde genommen steht alles, was Du brauchst, im von Dir geposteten Sketch, aber die Details, welches Byte nun welchem Teil des RFID-Tags entspricht, würde wahrscheinlich in der Dokumentation stehen, die Du eben nicht verlinkt hast. Da dies Deine Bringschuld ist, schreibe ich mir nicht die Finger mit Google-Anfragen wund, nur um nachher doch noch raten zu müssen, ob Du wirklich die von mir gefundenen Komponenten einsetzt.
niemand eine Idee wie man ein Relais schalten kann, mit auf dem NFC Chip vorhandener ID
Eine Idee haben sicher viele:
- entsprechend dem Beispielsketch die ID lesen
- Vergleichen ob das die erwartete ist
Wenn ja: Pin HIGH schalten, Zeit starten
(Mehrere Chips für verschiedene (oder das gleiche Relais) ??? )
--> am einfachsten den obigen Punkt für andere ID wiederholen.
Ausgefeiltere Lösungen für mehrere ID möglich.
- Wenn gestartete Zeit zu alt: Pin LOW schalten.
Aber das ist doch so trivial, da bist du sicher schon selbst draufgekommen.
Wie man mit einem Pin HIGH/LOW ein Relais schaltet, hängt davon ab ob es ein Relais oder ein Relais-Modul mit passender Ansteuer-Elektronik für den Arduino ist.
Ist aber ebenfalls eher trivial ...
Relais schalten und NFC Chip lesen sind zwei verschiedene Sachen, die komplexere ist sicher der NFC Chip.
Daher würde ich nicht das ganze Internet nach unpassenden Lösungen durchsuchen, sondern es schneller selber machen.