Arduino library for SPI access to the PN532 NFC chip in the Italian Electronic Identity Card (CIE).
This library depends upon a modified version of the Adafruit_PN532 library which you can obtain from this GitHub Repository.
https://github.com/BrightSoul/Adafruit-PN532
You must install the Adafruit_PN532 and cie_PN532 in your Arduino libraries directory. Plese follow the instructions from the Arduino guide.
https://www.arduino.cc/en/Guide/Libraries
At present, just the SPI connection is supported. The examples provided will work with this wiring.
This wiring is also described in detail on this page at the Adafruit website.
https://learn.adafruit.com/adafruit-pn532-rfid-nfc/breakout-wiring
Create a new arduino project and set it up like this:
//Include some libraries
#include <Wire.h>
#include <SPI.h>
#include <cie_PN532.h>
//Use the cie_PN532 with the typical wiring, as pointed out above
cie_PN532 cie();
void setup(void) {
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
Serial.begin(115200);
//Initialize the PN532 breakout board
cie.begin();
}
Then, in your loop, wait for a card then read its ID_Servizi (a low-security unique identifier)
void loop(void) {
//Let's see if a card is present
bool cardDetected = cie.detectCard();
if (!cardDetected) {
//No card present, we wait for one
delay(100);
return;
}
//Good! A card is present, let's read the ID!
word bufferLength = EF_ID_SERVIZI_LENGTH;
byte buffer[EF_ID_SERVIZI_LENGTH];
if (!cie.read_EF_ID_Servizi(buffer, &bufferLength)) {
Serial.print(F("Error reading EF.ID_SERVIZI"));
delay(1000);
return;
}
//We were able to read the ID_Servizi, print it out!
Serial.print(F("EF.ID_Servizi: "));
cie.printHex(buffer, bufferLength);
}
This library comes with an examples directory. You can load and run examples from the Arduino IDE by clicking the File menu -> Examples -> cie 532.
The CIE 3.0 chip specification (italian)
http://www.agid.gov.it/sites/default/files/documentazione/cie_3.0_-_specifiche_chip.pdf
Technical specification for the European Card for e-Services and National e-ID Applications
Specifiche tecniche del documento digitale unificato (italian)