Εδώ και λίγο καιρό μου έχει δοθεί από το ΤΕΙ ένα NFC breakout board και ένα FTDI Friend. Μπορούμε να τα χρησιμοποιήσουμε για διαβάσουμε nfc tags με αυτά τα δύο μέσα από έναν υπολογιστή. Από εκεί και πέρα και με τη χρήση του internet οι δυνατότητες είναι πάρα πολλές. Από πιστοποίηση χρηστών μέχρι online πληρωμές.

Τα δύο εξαρτήματα πωλούνται από το www.adafruit.com και είναι τα παρακάτω:

Για να λειτουργήσει αρκεί να συνδέσουμε το ftdi πάνω στο breakout board και αυτά τα 2 στον υπολογιστή.(πρέπει να κολλήσουμε με το κολλητήρι τα PIN πάνω στο breakout board)

Το λογισμικό που χρησιμοποιώ για να διαβάσω την κάρτα είναι το libnfc. Το εγκαθιστώ στο Linux Mint 15. Για την εγκατάσταση θα χρειαστεί να έχουμε και εγκατεστημένο το libusb-dev. Επιπλέον μπορεί να χρειαστείτε και την libpcsclite-dev. Οι εντολή για αυτήν την εγκατάσταση είναι:

sudo apt-get install libusb-dev libpcsclite-dev

Στην συνέχεια θα πρέπει να κατεβάσουμε και να εγκαταστήσουμε την βιβλιοθήκη. Την βιβλιοθήκη μαζί με κάποιες οδηγίες εγκατάστασης(που βρήκα μη-χρήσιμες) βρίσκεται εδώ. Για να κατεβάσουμε λοιπόν στο τερματικό μας δίνουμε:

cd
wget http://libnfc.googlecode.com/files/libnfc-1.7.0-rc7.tar.gz

Η εντολή cd μας οδήγησε στο φάκελο του χρήστη μας(home direcotry) ενώ η επόμενη εντολή wget κατεβάζει στον κατάλογο που βρισκόμαστε το φάκελο libnfc σε συμπιεσμένη μορφή tar.gz. . Αποσυμπιέζουμε το αρχείο και μπαίνουμε στον κατάλογο που δημιουργήθηκε με τις παρακάτω εντολές:

tar -xvzf libnfc-1.7.0-rc7.tar.gz
cd libnfc-1.7.0-rc7

Θα πρέπει να δημιουργήσουμε ένα φάκελο κάτω από το /etc τον nfc. Σε αυτόν θα εναποθέσουμε το αρχείο config. Ένα πρότυπο αρχείο βρίσκεται μέσα στον φάκελο που μόλις αποσυμπιέσαμε και συγκεκριμένα κάτω από τον υποφάκελο ./contrib/libnfc/. Το αρχείο ονομάζεται pn532_via_uart2usb.conf.sample . Το κάνουμε αντιγραφή και επικόλληση (μέσω του τερματικού πάντα) στον φάκελο που δημιουργήσαμε /etc/nfc με το όνομα libnfc.conf.

sudo mkdir /etc/nfc
sudo cp ./contrib/libnfc/pn532_via_uart2usb.conf.sample /etc/nfc/libnfc.conf

Θα πρέπει βέβαια να τροποποιήσουμε το αρχείο λίγο προσθέτοντας μια σειρά. Αυτό γίνεται απλά χρησιμοποιώντας τον αγαπημένο μας editor. Παρακάτω θα γίνει με το nano.

sudo nano /etc/nfc/libnfc.conf

Προσθέτουμε την σειρά στο τέλος του αρχείου:»allow_intrusive_scan = true» (χωρίς τα εισαγωγικά). Αποθηκεύουμε και κλείνουμε τον editor.

Εφόσον είμαστε ακόμα πίσω στο φάκελο που έχουμε αποσυμπιέσει (~/libnfc-1.7.0-rc7/), θα πρέπει να κάνουμε config και μετά το compile. Αυτό γίνεται με τις παρακάτω εντολές:

./configure --prefix=/usr --sysconfdir=/etc

Στην παραπάνω εντολή μπορούμε να δώσουμε και

--with-drivers=pn532_uart

για να εγκαταστήσουμε μόνο τον συγκεκριμένο driver του chip ενώ επίσης μπορούμε και να δώσουμε

--enable-debug

για να κάνουμε debugging και να λύσουμε τυχόν προβλήματα.

Αν όλα πάνε καλά θα μας δώσει στο τέλος:

Selected drivers:
 acr122_pcsc.....no
 acr122_usb......yes
 acr122s.........yes
 arygon..........yes
 pn53x_usb.......yes
 pn53x_uart......yes
 pn53x_spi.......yes

Αφού μας έχει βγάλει τα παραπάνω μπορούμε να κάνουμε compile:

sudo make clean
sudo make install all

Αν όλα έχουνε πάει όπως πρέπει, χωρίς να έχουμε Errors, τότε μπορούμε να διαβάσουμε NFC tags.(κάρτες, αυτοκόλλητα και μπρελόκ στα 13,56MHz)

Αρχικά συνδέουμε το NFC breakout board μέσω του FTDI Friend σε μια θύρα usb του υπολογιστή. Δίνουμε την παρακάτω εντολή:

dmesg | tail

Θα δούμε την συσκευή FTDI να εχει συνδεθεί. Για την ακρίβεια θα μας λέει κάτι τέτοιο:

usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0

Αυτό το ttyUSB0 μπορεί να διαφέρει σε εσάς. Αν ναι, θα πρέπει να κάνετε μια αλλαγή στο αρχείο που βρίσκεται στον κατάλογο /etc/nfc/ με την ονομασία libnfc.conf. Στη τρίτη σειρά θα πρέπει να αντικαταστήσετε το ttyUSB0 που βρίσκεται στο τέλος της γραμμής με αυτό που βλέπετε στη προηγούμενη εντολή (dmesg | tail).

Αν όχι, πηγαίνουμε στον υποκατάλογο ./utils που και εκτελούμε το script με όνομα nfc-list αφού έχουμε βάλει κάποιο nfc tag πάνω στον δέκτη.(απόσταση <10cm)

cd ./utils
sudo ./nfc-list

Εάν δεν υπάρχει κάποιο tag δίπλα στο NFC τότε θα μας δώσει κάτι σαν το παρακάτω:

/home/{username}/llibnfc-1.7.0-rc7/utils/.libs/lt-nfc-list uses libnfc 1.7.0-rc7
NFC device: pn532_uart:/dev/ttyUSB0 opened

Από την άλλη αν υπάρχει κάποιο tag θα μας δώσει τα στοιχεία του tag.

Αυτό ήταν!

Όλα τα παραπάνω λειτούργησαν με το Linux Mint 15, το libnfc-1.7.0-rc7 και τις βιβλιοθήκες libusb-dev, libpcsclite-dev.