Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| 
                    computer:raspberrypi:rfid [2013/06/20 23:25] ristigl [Anschließen des Adapters]  | 
                
                    computer:raspberrypi:rfid [2018/03/16 21:11] (aktuell) | 
            ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== RFID lesen ====== | ====== RFID lesen ====== | ||
| + | {{wp>RFID}} | ||
| **Quellen:** | **Quellen:** | ||
| * http://pikiosk.tumblr.com/post/51812205794/07-reading-rfid-tags-with-the-raspberry-pi | * http://pikiosk.tumblr.com/post/51812205794/07-reading-rfid-tags-with-the-raspberry-pi | ||
| Zeile 13: | Zeile 14: | ||
| Zusammenführen der richtigen Pins: | Zusammenführen der richtigen Pins: | ||
| * 5V Raspi -> 5V RFID | * 5V Raspi -> 5V RFID | ||
| + | * nicht genutzt | ||
| * GND Raspi -> GDN RFID | * GND Raspi -> GDN RFID | ||
| - | * RX Raspi -> TX RFID ! | + | * nicht genutzt (TX Rasp) | 
| + | * RX Raspi -> TX RFID | ||
| + | |||
| + | Dieses Anschluss Format: **5v -- GND TX RX** scheint genormt zu sein. | ||
| Dazu das Datenblatt des RFID-Lesers betrachten und die Pinbelegung. | Dazu das Datenblatt des RFID-Lesers betrachten und die Pinbelegung. | ||
| Zeile 20: | Zeile 25: | ||
| <note warning>Achtung, die Datenleitung muss mit einer Spannungsteilung angeschlossen werden! | <note warning>Achtung, die Datenleitung muss mit einer Spannungsteilung angeschlossen werden! | ||
| - | Der Raspi arbeitet mit 3,3V der RFID-Leser mit 5V></note> | + | Der Raspi arbeitet mit 3,3V der RFID-Leser mit 5V</note> | 
| {{:computer:raspberrypi:raspi-pins.png|}} | {{:computer:raspberrypi:raspi-pins.png|}} | ||
| {{:computer:raspberrypi:rfid-spannungsteilung.jpg|}} | {{:computer:raspberrypi:rfid-spannungsteilung.jpg|}} | ||
| + | |||
| + | ===== Software ===== | ||
| + | **python-serial** installieren. | ||
| + | |||
| + | Kleine Änderung an der /etc/inittab (danach Neustart) mit **nano /etc/inittab** (Achtung, man muss dafür //root// sein ;-) ). | ||
| + | <code> | ||
| + | #Spawn a getty on Raspberry Pi serial line | ||
| + | T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 | ||
| + | </code> | ||
| + | |||
| + | ändern in: | ||
| + | |||
| + | <code> | ||
| + | #Spawn a getty on Raspberry Pi serial line | ||
| + | #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 | ||
| + | </code> | ||
| + | |||
| + | Testprogramm (http://kampis-elektroecke.de/wp-content/uploads/2013/02/RFID.py_.txt): | ||
| + | |||
| + | Nun mit **nano rfid.py** Programieroberfläche öffnen und das untere reinschreiben | ||
| + | |||
| + | <code python> | ||
| + | import serial | ||
| + | import sys | ||
| + | import time | ||
| + | from operator import xor | ||
| + | |||
| + | # UART | ||
| + | ID = "" | ||
| + | Zeichen = 0 | ||
| + | |||
| + | Checksumme = 0 | ||
| + | Tag = 0 | ||
| + | |||
| + | # Flags | ||
| + | Startflag = "\x02" | ||
| + | Endflag = "\x03" | ||
| + | |||
| + | # UART oeffnen | ||
| + | UART = serial.Serial("/dev/ttyAMA0", 9600) | ||
| + | UART.open() | ||
| + | |||
| + | while True: | ||
| + | |||
| + | # Variablen loeschen | ||
| + | Checksumme = 0 | ||
| + | Checksumme_Tag = 0 | ||
| + | ID = "" | ||
| + |  | ||
| + | # Zeichen einlesen | ||
| + | Zeichen = UART.read()  | ||
| + | |||
| + | # Uebertragungsstart signalisiert worden? | ||
| + | if Zeichen == Startflag: | ||
| + | |||
| + | # ID zusammen setzen  | ||
| + | for Counter in range(13): | ||
| + |  | ||
| + | Zeichen = UART.read()  | ||
| + | ID = ID + str(Zeichen) | ||
| + |  | ||
| + | # Endflag aus dem String loeschen | ||
| + | ID = ID.replace(Endflag, "" ); | ||
| + |  | ||
| + | # Checksumme berechnen | ||
| + | for I in range(0, 9, 2): | ||
| + | Checksumme = Checksumme ^ (((int(ID[I], 16)) << 4) + int(ID[I+1], 16)) | ||
| + | Checksumme = hex(Checksumme) | ||
| + |  | ||
| + | # Tag herausfiltern | ||
| + | Tag = ((int(ID[1], 16)) << 8) + ((int(ID[2], 16)) << 4) + ((int(ID[3], 16)) << 0) | ||
| + | Tag = hex(Tag) | ||
| + |  | ||
| + | # Ausgabe der Daten | ||
| + | print "------------------------------------------" | ||
| + | print "Datensatz: ", ID | ||
| + | print "Tag: ", Tag | ||
| + | print "ID: ", ID[4:10] | ||
| + | print "Checksumme: ", Checksumme | ||
| + | print "------------------------------------------" | ||
| + | </code> | ||