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
Τροποποιούμε το σημείο που διαβάζει τις κάρτες και τοποθετούμε τις δικές μας
Αυτό είναι το συγκεκριμένο σημείο
if uid[0:4] == [244, 17, 103, 82]:
στο οποίο έχω σημειώσει τη συγκεκριμένη ταυτότητα κάρτας
244 17 103 82
Τοποθετείτε τις δικές σας κατάλληλα.
Αν τώρα τρέξετε το nabu.py, θα δείτε ότι περνώντας τις κάρτες ανάβουν και τα κατάλληλα λαμπάκια, όπως φαίνεται στο παρακάτω video.