Raspberry Pi RFID KIT

Ähnliche Dokumente
Raspberry Pi Projekt LED Matrix Spiele Programmieren

Raspberry Pi Lüftersteuerung

RFID RC522. Ausgabe Copyright by Joy-IT 1

RFID RC522. Ausgabe Copyright by Joy-IT 1

RFID Modul basierend auf NXP MFRC-522

I2C Serial 2.6 LCD Modul. Verwendung mit einem Arduino

Arbeitsblatt Nr.19: RFID Kit

I2C Serial 2.6 LCD Modul

Raspberry Pi 3B Advanced-Set

Talking-Pi. Ausgabe Copyright by Joy-IT 1

Jugend Programmiert Die. Schlaue Pflanze.

LK-Baseboard für Raspberry Pi B+ / Pi 2

JOY-iT TFT-Display 1.8

DC 5V Stepper Motor 28BYJ-48. Verwendung mit einem Arduino

Willkommen! Verdrahten des Panels mit dem Raspberry Pi:

Raspberry Pi meets Pocket Code. Tutorial: Ampelschaltung

LCD Display 20x4 mit Buttons

Minecraft. Starte anschließend die Programmiersprache Python, indem du folgenden Befehl in das Terminalfenster eingibst:

Moto1. 28BYJ-48 Stepper Motor. Ausgabe Copyright by Joy-IT 1

Moto1. 28BYJ-48 Stepper Motor. Ausgabe Copyright by Joy-IT 1

Linkerkit OLED Raspberry Pi und Arduino

1,8 Display Bedienungsanleitung Raspberry Pi

Benötigte Teile für die Statusanzeige, Kosten und Beschaffungslinks:

MotoPi. Ausgabe Copyright by Joy-IT 1

Raspberry Pi Rezepte Teil 6 Das ADC des guten Geschmacks

Infrator Kit Der schlaue Schalter

Willkommen!

Wichtig zu erwähnen ist, dass es sich hier um ein SMD Bauteil handelt und für Lötanfänger nicht geeignet ist!

MotoPi. Ausgabe Copyright by Joy-IT 1

MotoPi. Ausgabe Copyright by Joy-IT 1

LCD Modul 84x48. Verwendung mit einem Arduino

3.2 / 3.5 Touch-Display

3,2 Touch-Display-V2 Bedienungsanleitung

LCD Modul 84x84 Nokia 5110

3,2 Touch-Display-V2 Bedienungsanleitung [Version (Raspberry Pi Linux-Kernel 4.4)]

LK-RB-Shield Ausgabe Copyright by Joy-IT

3,2 Touch-Display-V2 / 3,5 Touch-Display Bedienungsanleitung [Version ]

Python 3.6. Erste Schritte auf dem Mac. Syshack. 22. Juni 2017 Version 2.0. Python Erste Schritte auf dem Mac Syshack, 22.

< UNTERRICHTSMATERIAL /> Calliope mini. Maulwurfspiel

3,2 Touch-Display-V2 Bedienungsanleitung [Version (Raspberry Pi 3)]

Die Cloud LED an der Bridge blinkt. Was bedeutet dies? Die 'Power' LED der Bridge leuchtet, die anderen LEDs bleiben jedoch aus. Was bedeutet das?

Inhalt: Tipps rund um OWA (Outlook Web Access) (Stand: )

Rückgabewerte von Methoden

Wenn Du Deinen Rechner zum ersten Mal einschaltest, verlangt er von Dir einige Angaben. Wähle als Sprache Deutsch.

< UNTERRICHTSMATERIAL /> Calliope mini. Maulwurfspiel

Raspberry Sonden-Image von

SBC ButtonMatrix Bedienungsanleitung. Verwendung mit einem Arduino Schritt 1 Anschließen der Matrix

Bedienungsanleitung. Abb. 1 Abb. 2

Versuch 5: Linux embedded

Möge das Abenteuer beginnen!

Berührungslose Datenerfassung. easyident-usb Stickreader. Art. Nr. FS-0013-HDM

Verdrahten des GPS Empfängers mit dem Raspberry Pi:

Ziel ist das IPTV Signal zu entschlüsseln, um es auf verschiedene System zu schauen.

1)Login Funktion ohne Datenbank

INHALTSVERZEICHNIS. 1.8 TFT Display. 1. Einführung

GSM / GPRS Modul Täglicher Bericht und Fehlermeldung

In diesem Beispiel verwende ich einen Raspberry Pi 3 (wg. Ethernetanschluss) mit einem MMDVM Hat Klon.

Wie kann ich die Ausgabe als Excel speichern?

Übungszettel 2a - Python

RASPBERRY PI. Physical Computing

Anleitung Zusammenbau

GEVITAS MobileCatalog

Anleitung zum Umgang:

Talking-Pi. Installation der Sound-Module

Wie erstelle und installiere ich Bootscreens?

3.2 / 3.5 Touch-Display

3.2 / 3.5 Touch-Display

COMPUTERIA VOM

Kopieren / Klonen mit dem TS601 - Benutzer Anleitung Deutsch

3.2 / 3.5 Touch-Display

Startup, Shutdown und Reboot eines Raspberry Pi über die HomeMatic CCU

Auswerten der Startkontrolle mit OLEinzel

Windows 10 Terminal Anleitung Vorher eine Sicherheitskopie von der termsrv.dll (C:\Windows\System32) und der win.ini (C:\Windows) erstellen.

CargoDocs für Schiffsführer - Benutzeranleitung

Raspberry Pi Rezepte Teil 5

3.2 / 3.5 Touch-Display

Thema: Einrichtung einer neuen Bankverbindung per HBCI mit Sicherheitsdatei

EXP500. Ausgabe Copyright by Joy-IT 1

41.2 LUA Grundlagen - Funktionen

Einrichten des IIS für DataFlex WebApp Server. Einrichten des IIS (Internet Information Server) für DataFlex WebApp Server

Es kann Stand-Alone oder als Erweiterung einer µc Schaltung verwendet werden.

Manuelles Update eines DV4Mini-Raspberry Pis

Programmieren des ESP8266 mit OLED

LEGO-Mindstorms-Roboter im Informatikunterricht -mit Delphi-

Hinweise zum Programm Überprüfung des Betriebszustandes von Kläranlagen. Bitte prüfen Sie regelmäßig den aktuellen Stand der Software im Internet!

EleLa - Elektronik Lagerverwaltung. Hilfe. Installation auf einem Raspberry Pi

Kurzanleitung KABELMODEM HITRON CGNV4 FÜR INTERNET, TELEFON, TV 4.0

Übung Ionic ToDo-Liste erstellen

Neue Sensor AID Funktionen Ab Firmware V1.28

Kurzanleitung KABELMODEM TECHNICOLOR TC7230 FÜR INTERNET, TELEFON, TV 4.0

Bedienungsanleitung für das Info-Display

ABA-Navi-Tool 002. Bedienungsanleitung

Transkript:

Raspberry Pi RFID KIT Jugend Programmiert

Vorwort Alle Schaltungen, Programme und Bauteile wurden vorher von uns geprüft. Trotzdem können wir leider Fehler im Buch, den Schaltungen oder Programmen nicht ausschließen. Bei Fragen oder Problemen gibt es unten die Kontaktmöglichkeiten. Mehr Informationen findest du auch auf der Internetadresse der Seitenzahl. LEDs LEDs sollten nicht aus kurzer Distanz direkt angesehen werden. Ein direkter Blick kann zu Schäden an den Netzhäuten führen. Dies kann gefährlich sein, auch wenn die Verletzungen nicht sofort klar erkennbar sind. Die LEDs dürfen nur wie in den Anleitungen beschrieben verwendet werden, höhere Ströme oder Stromspannungen sind zu vermeiden. Dieses Produkt entspricht den geltenden Europäischen Richtlinien und trägt ein CE- Kennzeichen. Der richtige Gebrauch ist in dem beiliegenden Buch erklärt. Baue Schaltungen immer wie beschrieben auf, achte auch auf die verschiedenen GPIO Pins vom Raspberry Pi. Herausgeber Jugend Programmiert Coding World UG (haftungsbeschränkt) Homwer.com Obdrupstraße 23 A, 24986 Mittelangeln www.codingworld.io Support: support@cw42.de Feedback: feedback@cw42.de cw42.de/rfid/

Moin Moin und Willkommen In diesem Kit werden uns mit dem ganzen Themenkomplex RFID beschäftigen. Du wirst lernen was RFID überhaupt ist und wie du mithilfe deines Pis und einem RFID- Reader Karten auslesen und beschreiben kannst. Natürlich haben wir das ganze praxisorientiert und spaßig verpackt. Damit dein Projekt Tagebuch nicht leer ausgeht haben wir uns auch noch mehrere Anwendungsfälle ausgedacht bei denen wir mit RFID großartige Dinge machen können, aber das wirst du schon schnell genug erfahren. Damit du das alles machen kannst ist folgendes im Kit enthalten: RFID Reader RFID Karten (sehen aus wie weiße EC-Karten) RFID Schlüsselanhänger Inhalte Seite RFID Grundlagen Seite 2 RFID Reader am Pi Seite 5 Kontaktlos LEDs zum leuchten bringen Seite 3 Das RFID Soundboard Seite 7 cw42.de/rfid/2

RFID Grundlagen RFID für Anfänger Bevor wir direkt mit dem Pi und RFID anfangen brauchen wir erstmal ein paar Grundlagen für die Funktionsweise. RFID ist kurz für radio-frequency identification oder auf Deutsch Identifizierung mit Elektromagnetischen Wellen. Mit dieser Technik können Daten von einem Transponder mithilfe eines Schreib-/Lesegerät (wir werden die Abkürzung RFID-Reader benutzen) gelesen werden. Wie schon gesagt gehört zu einem RFID System immer der RFID-Reader und ein Transponder. Ein Transponder kann dabei in vielen verschiedenen Formen und Größen kommen. Wir benutzen in diesem Fall RFID-Karte, RFID-Anhänger und NFC Sticker (dazu später mehr). Alle davon sind Transponder. Die Transponder die wir benutzen sind alle gleich aufgebaut. Sie lassen sich in zwei verschiedene Komponenten aufteilen, einmal die Antenne, diese befindet sich an den Außenseiten und dem Speicher und der Logik in der Form eines Chips in der Mitte des Transponders cw42.de/rfid/3

Die Transponder die wir benutzen haben keine eigene Stromversorgung den diese kommt durch den RFID Reader. Wenn dieser angeschlossen ist, wird ein hochfrequentes elektromagnetisches Feld erzeugt. Wenn sich der Transponder in diesem Feld befindet wird dieser darüber mit Strom versorgt. Die Energie wird dabei durch die Antennen aufgenommen und dann an den Chip weitergegeben. Wenn die Stromversorgung sichergestellt startet die Komunikation zwischen dem RFID-Reader und dem Transponder. Die hier benutzen Transponder können beschrieben oder gelesen werden. Der Transponder erzeugt dabei kein eigenes Feld oder Wellen sondern manipuliert nur das Vorhandene Feld mithilfe der Antennen. Dieses kann dann der RFID-Reader interpretieren und auswerten. Der Vorteil ist das der Transponder keine eigene Stromversorgung braucht und deswegen sehr klein sein kann. Der Nachteil ist das bei diesem Verfahren der RFID-Reader und der Transponder nicht weit von einander entfernt sein dürfen damit die Übertragung funktioniert. NFC Jetzt haben wir schon viel über RFID geredet und dabei auch noch NFC erwähnt. Dieses steht für Near Field Communication oder Deutsch Nahfeldkommunikation. NFC ist eine unterart von RFID die nur mit 3,56 Mhz arbeitet. Wir können diese an unserem RFID Reader benutzen weil auch dieser, in diesem Frequenz Bereich arbeitet. NFC ist eine neuere Technik und erlaubt auch das zwei Geräte wie Smartphones mit einander Kommunizieren und Daten austauschen. Auch Kontaktloses Bezahlen ist dadurch häufig möglich. cw42.de/rfid/4

RFID am Raspberry Pi Jetzt haben wir genug Grundlagen gehabt und wollen jetzt diese Technik am Pi benutzen. Dafür müssen wir zuerst den RFID Reader an den Pi anschließen. Für die Komunikation zwischen dem Pi und dem Reader wird das SPI Protokoll benutzt. Wie du das einrichtest erfährst du unter http://cw42.de/spi (auch wenn du SPI schon aktiviert hast, musst du teilweise noch weitere Einstellungen treffen, das gilt vor allem bei älteren Rasobian Versionen). Bei allen Aktuellen Betriebssystem Versionen solltet ihr aber über sudo raspi-config -> 9 Advanced Options -> A5 SPI -> YES (alles bestätigen und dann neustarten) schon einfach SPI aktiviert haben. RC522 Modul Raspberry Pi - SDA GPIO8 CE0 2 - SCK GPIO SCKL 3 - MOSI GPIO0 MOSI 4 - MISO GPIO9 MISO 5 - IRQ 6 - GND GND 7 - RST 3.3V cw42.de/rfid/5

8-3.3V 3.3V Bibliotheken Hinzufügen Das Anschließen des Bauteils haben wir jetzt hinter uns und können uns jetzt wieder um die Softwareseite kümmern. Für die Kommunikation zwischen Pi und dem Reader wird das SPI Kommunikationsprotokoll benutzt. Im Gegensatz zum 550 Display, welches im Starterkit dabei ist, senden wir diesmal nicht einfach nur Daten an den Reader sondern müssen diese natürlich auch empfangen um die einzelnen Karten wieder auslesen zu können. Deswegen ist die Software auch ein wenig Komplizierter aber natürlich gibt es dafür auch schon eine Bibliothek die wir nur für unsere zwecke anpassen müssen. Dafür gibt zwei verschiedene Komponenten die wir runterladen müssen, zuerst die Bibliothek mit der Python über die GPIO Pins SPI Kommunizieren kann: $ git clone https://github.com/lthiery/spi-py.git $ cd SPI-PY $ sudo python setup.py install Und jetzt die Bibliothek für die Kommunikation für den Reader. 2 $ git clone https://github.com/coding-world/mfrc522-python.git $ cd MFRC522-python Wenn ihr jetzt Read.py ausführt und die RFID Karte oder den RFID Anhänger solltet ihr folgendes sehen: $ sudo python Read.py cw42.de/rfid/6

2 3 Card detected Card read UID: 29,60,58,23 Size: 8 Wenn nichts angezeigt wird obwohl ihr mit den RFID Transpondern auch ein wenig länger (-2 Sekunden) in der nähe der Vorderseite ist entweder etwas beim anschließen falsch gelaufen oder beim Aktivien/Installieren der Bibliotheken. Am besten versucht einfach erstmal alles nochmal. Arbeiten mit RFID Karten Dein RFID Reader sollte jetzt funktionieren. In diesem Teil zeigen wir dir, wie man das Read.py und Write.py Script so ändert dass wir eigene Namen oder ID's auf die Karten schreiben und diese später auch wider auslesen können. Alle RFID Karten haben eine eigene UUID, also eine eigene eingebaute Kennung, die auch auf der Karte gespeichert sind. Wir können aber auch noch weitere Daten auf die Karten schreiben und auslesen. So lassen sich zum Beispiel Karten für die Zeiterfassung bauen. Wenn jemand ins Büro kommt registriert er sich mit seiner RFID Karte. Wir steigen einfach ein. Als erstes modifizieren wir das Write.py und Read.py Programm so, dass wir eigene Daten auf die RFID Speicher schreiben und lesen können. Daten auf RFID Schreiben Unsere RFID Karten haben 6 Sektoren. In jedem Sektor können wir eine Zahlen von -255 Speichern. Wenn du das Script Read.py ausführst und eine RFID Karte vor den Leser hältst dann sollte die Ausgabe so aussehen. Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 6 Sektoren, die alle auf 0 stehen. Maschinencode ist zwar toll, aber wer kann sich das merken? Wir wollen lieber Buchstaben speichern. Wenn wir 0 als A nehmen und B als 2 und C als 3 dann sind wir schnell durch. Dazu kommt dann noch das kleine a,b,c die Zahlen und Sonderzeichen. Das klingt nach viel Mühe. Zum Glück haben andere das Problem schon gelöst. Es gibt den American Standard Code for Information Interchange, kurz ASCII. Da sind alle Zeichen enthalten die wir brauchen und das beste ist, Python kann das übersetzen (Nur auf die Deutschen Umlaute und cw42.de/rfid/7

Sonderzeichen müssen verzichten aber das ist ja auch nicht so schlimm ;) ). Mehr zu ASCII gibt es auch auf https://de.wikipedia.org/wiki/american_standard_code_for_information_interchange. Wir erstellen jetzt ein kleines Script das eine Eingabe in ASCII Code umwandelt. Diesen Code Speichern wir dann auf eine RFID Karte. Erstellt eine neue Datei und schreibt folgenden Inhalt hinein: nano ASCII.py 2 3 4 5 name=raw_input("gib einen Kartennamen ein: ") if len(name)>6: name=name[:6] data = [ord(x) for x in list(name)] print data Python Ok das sieht komplizierter aus als es ist. In der ersten Zeile holen wir uns die Eingabe des Nutzers und speichern diese in der Variable name. Mit ran_input("frage") können wir im Terminal dem Benutzers des Programmes eine Frage stellen, und die Antworten dann in einer Variable speichern und später weiterverwenden. Wir können 6 Sektoren also 6 Zahlen von 0-255 speichern. Falls der Nutzer aber mehr Zeichen eingegeben hat zum Beispiel 8 oder 20 dann ist das zu viel. In der zweiten Zeile prüfen wir das. if len(name)>6: Bedeutet, wenn die länge von name > (größer als) 6 dann mache folgendes, die länger ist dabei natürlich die Anzahl der Zeichen. Die Funktion len() gibt uns die Länge einer Variable aus. Das kannst du selbst testen mit print len( Das ist ein TEST ) Python Falls unsere Variable name länger ist als 6 Zeichen dann wird der eingerückte Teil ausgeführt und zwar: name=name[:6]. Übersetzt heißt das: Speichere in die Variable name nur die ersten 6 stellen aus der Variable name. Mit variable[anfangswert:endwert] können wir einzelne Zeichen aus einer Zeichenkette ausschneiden und ausgeben oder wieder in einer neuen oder der alten Variable speichen. Jetzt kommt der Kern des ganzen, das übersetzten der Zeichen in ASCII. data = [ord(x) for x in name] Python data ist die Variable in der nachher alle Zeichen gespeichert werden. [ord(x) for x in list(name)] besteht aus 2 Teilen. ord(x) und for x in name. Das erste cw42.de/rfid/8

ist eine Python Funktion die wir auch so aufrufen können mit print ord("a"), das zweite die for-schleife, ist ähnlich wie die while-schleife und lässt uns einzelne Elemente durchgehen. print ord( A ) gibt uns den ASCII Wert, also eine Zahl aus, bei A ist das 97 Jetzt bleibt der kryptische Teil for x in. Das bedeutet dass er für jedes Element in der Variable name ord(x) ausführt. Das x wird dabei durch den Wert aus der Liste ersetzt. Für unser ['h', 'a', 'l', 'l', 'o'] wäre das also ord( h ) ord( a ) ord( l ) usw. Ergibt zusammen: [04, 97, 08, 08, ] Jetzt haben wir schon erfolgreich die Buchstaben in ein Format umgewandelt welches wir auf der Karte speichern können, aber dafür müssen wir natürlich auch die Werte wirklich auf die Karte speichern. Um nicht alles neuschreiben zu müssen benutztn wir als Grundlage die Write.py Datei. Dazu kopieren wir diese erstmal in eine neue Datei. $ cp Write.py MyWrite.py Jetzt können wir MyWrite.py bearbeiten und immer noch auf die alte Datei zugreifen. Diese öffnen wir jetzt mit Nano und fügen unter `ìmport signal* also in Zeile 8 unser Voheriges Programm ein, die Datei müssten bei euch dann so aussehen: 2 3 4 5 6 7 8 9 0 2 3 #!/usr/bin/env python # -*- coding: utf8 -*- import RPi.GPIO as GPIO import MFRC522 import signal name=raw_input("gib einen Kartennamen ein: ") if len(name)>6: name=name[:6] data = [ord(x) for x in list(name)] continue_reading = True Python Dazu müssen wir noch Zeile 56 und 77 die neuen data Variablen auskommentieren, weil diese ansonsten unsere Variable die wir am Anfang definiert haben überschreiben. Das machen wir einfach in dem ihr vor diese Zeilen ein # schreibt. Wenn ihr nano als euren editor benutzt könntnt ihr mit Strg/Ctrl + w einen suchbegriff eingeben und dann mit Enter suchen, und nanao springt dann zu dieser cw42.de/rfid/9