Raspberry Pi και RFID (Nabu project)

Με την τεχνολογία RFID έχουμε τη δυνατότητα να διαβάζουμε κάρτες και βασιζόμενοι στο τι στοιχεία έχει η κάθε κάρτα να πραγματοποιούμε ενέργειες.

Για τη συγγραφή αυτού του άρθρου βασίστηκα στο παρακάτω άρθρο από το instructables.

https://www.instructables.com/id/Raspberry-Pi-3-Model-B-MIFARE-RC522-RFID-Tag-Readi/

Το βασικό μας στοιχείο είναι ο RFID controller. Σε αυτή την κατασκευή χρησιμοποίησα αυτόν.

https://grobotronics.com/mfrc-522-nfc-rfid-controller-breakout-board.html?sl=en

Συνδεσμολογία

Χρειάζεται soldering. Αφού κάνουμε τις κολλήσεις, τον συνδέουμε με το raspberry σύμφωνα με την παρακάτω συνδεσμολογία.

SDA –> 24
SCK –> 23
MOSI –> 19
MISO –> 21
GND –> 6
RST –> 22
3.3V –> 1

Η πρώτη στήλη είναι τα pins στον controller και η δεύτερη τα pins στο Raspberry.

SPI

Ο τρόπος που χρησιμοποιείται εδώ για να μιλήσει το Raspberry Pi με τον controller είναι το SPI. Αυτό το interface κανονικά είναι απενεργοποιημένο (και ορθώς είναι διότι έτσι αποδεσμεύει πολλά GPIO τα οποία κανονικά θα χρησιμοποιούσε). Για να το ενεργοποιήσουμε κάνουμε τα εξής:

1. Από τη γραμμή εντολών του raspberry δίνουμε
sudo raspi-config
2. Επιλέγουμε Interfacing Options (σε παλιότερες εκδόσεις Advanced Options)
3. Επιλέγουμε SPI
4. Επιλέγουμε Yes

Κάνουμε reboot το raspberry.

Όταν επανέλθει, για να ελέγξουμε αν όλα είναι εντάξει δίνουμε

1. more /boot/config.txt | grep dtparam
Πρέπει να βρούμε το εξής:
dtparam=spi=on
2. lsmod | grep spi
Πρέπει να βρούμε κάτι τέτοιο
spi_bcm2835 16384 0

Αν όλα είναι καλά, σημαίνει ότι το raspberry βλέπει τον controller και μπορεί να του μιλήσει μέσω SPI, οπότε προχωράμε.

Software

Αν δεν έχουμε ήδη πρέπει να εγκαταστήσουμε το παρακάτω package στο raspberry

sudo apt-get install python2.7-dev

Μετά πρέπει να κατεβάσουμε τα παρακάτω προγράμματα

Θα πάμε στον φάκελο που θέλουμε να τα εγκαταστήσουμε και θα πατήσουμε

git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
sudo python setup.py install
cd ..

git clone https://github.com/mxgxw/MFRC522-python.git

Μετά την εγκατάσταση ελέγχουμε αν το default πρόγραμμα δουλεύει.

cd MFRC522-python
python Read.py

Τώρα είμαστε έτοιμοι να κάνουμε τη δική μας παραλλαγή.

Διάβασμα καρτών

Θα χρησιμοποιήσουμε καταρχάς το παραπάνω πρόγραμμα για να διαβάσουμε τις κάρτες που ήδη έχουμε.

Ενώ τρέχει το πρόγραμμα περνάμε τις κάρτες από πάνω. Για παράδειγμα οι δύο δικές μου έγραψαν.

244 17 103 82
192 10 33 108

Οπότε αυτή είναι η ταυτότητά τους και την κρατάω για να την βάλω στον κώδικα.

LED

Συνδέουμε δύο λαμπάκια στα GPIO 7 και 11

Τροποποίηση προγράμματος

Γράφουμε τον παρακάτω κώδικα σε ένα αρχείο, πχ nabu.py

nabu_code

Τροποποιούμε το σημείο που διαβάζει τις κάρτες και τοποθετούμε τις δικές μας

Αυτό είναι το συγκεκριμένο σημείο
if uid[0:4] == [244, 17, 103, 82]:

στο οποίο έχω σημειώσει τη συγκεκριμένη ταυτότητα κάρτας

244 17 103 82

Τοποθετείτε τις δικές σας κατάλληλα.

Αν τώρα τρέξετε το nabu.py, θα δείτε ότι περνώντας τις κάρτες ανάβουν και τα κατάλληλα λαμπάκια, όπως φαίνεται στο παρακάτω video.