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> | ||