htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Diplomarbeit gemäß Prüfungsverordnung BMHS und Bildungsanstalten §2 (4) und §7 (1) Thema: EduCard - Spindschloss HOLUB Max SOP Stefan Knr: 10 Knr: 19 Verfasser: Unterschrift:............................. Unterschrift:............................. Betreuer: Prof. Ernst Joksch Korrektur durchgeführt: ........................................................................ Datum Schuljahr: 2015/16 Jahrgang: 5AHET Unterschrift Wien, am 08.04.2016 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik EIDESSTATTLICHE ERKLÄRUNG Ich erkläre an Eides statt, dass ich die vorliegende Diplomarbeit selbständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und die den benutzten Quellen wörtlich und inhaltlich entnommenen Stellen als solche erkenntlich gemacht habe. Wien, am 08.04.2016 Verfasser: _____________________ Max HOLUB _____________________ Stefan SOP Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 2 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik ERKLÄRUNG DER KANDIDATEN ÜBER DIE THEMENWAHL GEMÄSS SCHUG §34 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 3 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik INHALTSVERZEICHNIS EIDESSTATTLICHE ERKLÄRUNG ............................................................... 2 s ERKLÄRUNG DER KANDIDATEN ÜBER DIE THEMENWAHL GEMÄSS SCHUG §34 ........................................................................................................ 3 DANKSAGUNG ....................................................................................... 7 1.PROJEKTIDEE ....................................................................................... 8 2. ZUSAMMENFASSUNG DES PROJEKTS .................................................. 9 2.1 ABSTRACT GEMÄß PRÜFUNGSORDNUNG BHMS UND BILDUNGSANSTALTEN §8 (5) ............................................................................................................... 10 3. ABLAUFBESCHREIBUNG EINER SPINDÖFFNUNG ................................ 11 3.1 PROCESS DOCUMENTATION OF A LOCKER OPENING ...................................... 12 3.2 ABLAUFDIAGRAMM/ EXPIRATION CHART .................................................... 13 4. EINLEITUNG ...................................................................................... 14 5. EINSTIEG IN DAS PROJEKT ................................................................. 15 5.1 EDU.CARD ............................................................................................ 16 5.2 AUFBAU .............................................................................................. 17 5.3 NFC ................................................................................................... 17 5.3.1 NFC Kartenleser Sunfounder PN532 ............................................ 18 5.4 RASPBERRY PI 2 .................................................................................... 22 5.4.1 Beschreibung .............................................................................. 23 5.4.2 (GPIO-) Pins des Raspberry Pi 2 ................................................... 24 5.4.3 Blockschaltdiagramm des Raspberry Pi 2 ................................... 27 6. DATENBANK ..................................................................................... 29 6.1 SQLITE ................................................................................................ 29 6.1.1 Verschiedene Datentypen ........................................................... 30 7. ERSTE SCHRITTE DER UMSETZUNG .................................................... 31 7.1 RASPBERRY PI – PN532 VERBINDUNG ...................................................... 32 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 4 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 7.1.1 Unsere Wahl ............................................................................... 33 7.1.2 Inbetriebnahme des Kartenlesers ............................................... 35 8. UNSER PROGRAMM ......................................................................... 39 8.1 WARUM C? ......................................................................................... 39 8.1.1 Was ist C? ................................................................................... 40 8.2 WARUM DEV-C++? .............................................................................. 40 8.3 EINBINDUNG DER BIBLIOTHEKEN INS PROGRAMM........................................ 41 8.3.1 Was sind Bibliotheken? ............................................................... 41 8.4 ERSTER ANLAUF .................................................................................... 42 8.5 DATENBANK ANSPRECHEN ....................................................................... 43 8.6 SELECT-BEFEHL ................................................................................... 45 8.7 RÜCKMELDUNGEN ................................................................................. 47 8.8 VERIFIZIERUNG ..................................................................................... 48 8.8.1 Durchführung& Einlesen der UID ................................................ 49 8.9 ANSTEUERUNG DER GPIO-PINS ............................................................... 50 8.9.1 WiringPi ...................................................................................... 50 8.10 EINBINDUNG DER GPIO-PINS INS PROGRAMM ......................................... 52 8.11 KOMPLETTES PROGRAMM..................................................................... 54 9. ERSTE ANGESPROCHENE LED ............................................................ 59 10. PLATINE .......................................................................................... 60 11. MÖGLICHER AUSBAU ...................................................................... 63 12. BEGLEITPROTOKOLL GEMÄß PRÜFUNGSORDNUNG BMHS UND BILDUNGSANSTALTEN §9 (2) ................................................................ 64 ALLE VORANGEGANGENEN ARBEITEN WURDEN VON BEIDEN PROJEKTKANDIDATEN IM TEAM DURCHGEFÜHRT. ................................. 67 13. QUELLENVERZEICHNIS .................................................................... 68 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 5 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik ABBILDUNGSVERZEICHNIS Abbildung 1: Ablaufdiagrammm................................................................ 13 Abbildung 2: edu.card: Ansicht von vorne (links) und hinten (rechts) ....... 16 Abbildung 3: Blockschaltdiagramm des Projekts ....................................... 17 Abbildung 4: PN532 NFC Kartenleser ........................................................ 18 Abbildung 5: Raspberry Pi 2 ...................................................................... 22 Abbildung 6: Pinbelegung am Raspberry Pi 2 ............................................ 25 Abbildung 7: Liste aller Pins inkl. Diverse Bezeichnungen ......................... 26 Abbildung 8: Blockschaltbild des Raspberry Pi 2 ....................................... 27 Abbildung 9: Grafik der UART Verbindung zwischen PN532 und Raspberry .................................................................................................................. 33 Abbildung 10: Raspberry Pi Konfigurationsmenü ...................................... 35 Abbildung 11: Grafik des PN532 mit Hauptaugenmerk auf die beiden Schalter Set0 und Set1 .............................................................................. 37 Abbildung 12: Ausgabe nach Einlesen einer edu.card ............................... 38 Abbildung 13: Logo Dev-C++ ..................................................................... 39 Abbildung 14: Programm des ersten Anlaufs ............................................ 42 Abbildung 15: Programmteil zum Ansprechen der Datenbank ................. 44 Abbildung 16: Bestandteile eines SELECT-Befehls ..................................... 45 Abbildung 17: Programmabschnitt mit dem SELECT-Befehl ...................... 46 Abbildung 18: Ausgabe des Programms .................................................... 47 Abbildung 19: Verifizierung der edu.card, Einlesen der UID ...................... 49 Abbildung 20: Tabelle der verwendeten Pins mit Pinnamen ..................... 50 Abbildung 21: Ansteuerung der GPIO-Pins ................................................ 51 Abbildung 22: Variablenvereinbarung von g_spindnr ............................... 52 Abbildung 23: Generieren des Binärcodes ................................................ 53 Abbildung 24: Unser Programm ................................................................ 57 Abbildung 25: Generieren eines zweiten Binärcodes ................................ 58 Abbildung 26: Schaltplan der Platine......................................................... 61 Abbildung 27: Bestückungsplan ................................................................ 61 Abbildung 28: Bohrplan ............................................................................. 62 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 6 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Danksagung Wir, Max Holub und Stefan Sop, möchten uns zuerst einmal bei allen Lehrkräften bedanken, die uns bei unserem Diplomprojekt unterstützt haben, indem sie uns ihr Fachwissen zur Verfügung gestellt und uns immer bei unseren Problemen geholfen haben. Dann möchten wir unserem Projektleiter Herrn Prof. Joksch für seine Unterstützung und Begleitung durch das Projekt danken. Besonderer Dank gebührt Herrn Prof. Dombacher, der uns trotz einiger Schwierigkeiten immer unterstützend zur Seite gestanden hat. Vielen Dank für die Zeit und Mühen! Außerdem danken wir Herrn Pühringer, der uns viele wertvolle Tipps für die Umsetzung unseres Projekts geben konnte. Weiters möchten wir unserer Klassenvorständin Frau Prof. Süßenbacher, sowie unseren Familien und Freunden, die uns all die Jahre immer aufs Neue motiviert und unterstützt haben unseren Dank aussprechen. Zu guter Letzt danken wir auch unseren Klassenkameraden, die uns so gut es ging bei einigen Problemen geholfen haben. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 7 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 1.Projektidee Das Abschlussprojekt war schon längere Zeit ein großes Thema für uns. Nach langem Überlegen wurden unser Interesse und unsere Begeisterung für NFC-Technik in Verbindung mit Spinden während eines Besuchs in unserem Fitness Center geweckt. In einem Gespräch mit unserem Abteilungsvortand sind wir zu dem Entschluss gekommen an der Idee, Spinde über die edu.card zu steuern, festzuhalten. Als alles mit dem Abteilungsvorstand abgeklärt war, haben wir uns auf die Suche nach Lehrern begeben, die uns in unserer Idee unterstützen können und möchten. Nach Zustimmung unseres Projektleiters haben wir zusammen den Umfang unseres Projektes besprochen und was in Bezug auf die zur Verfügung stehenden Zeit im Bereich des Möglichen liegt. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 8 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 2. Zusammenfassung des Projekts Mit unserem Projekt ist es möglich, dafür vorgesehene Spinde mittels NFCTechnik zu öffnen. Der Aufbau ist so realisiert, dass ein kompakter Minirechner, genannt Raspberry Pi 2, das Bindeglied zwischen einem NFC Kartenleser und den zu öffnenden Spinden darstellt. An diesem Raspberry Pi 2 ist der NFC Kartenleser auf Grundlage einer seriellen UART (oder auch RS232) Schnittstelle angeschlossen. Den größten Teil der erforderlichen Intelligenz stellt der Raspberry Pi 2 dar. Er enthält das von uns in der Programmiersprache C programmierte Hauptprogramm des Projekts sowie sämtliche Bibliotheken und Treiber, die wir extra installieren mussten. Die Spinde, die wir vorerst durch LEDs ersetzt haben, werden über sechs Leitungen an die GPIO Pins des Raspberry Pi 2 angeschlossen. Durch jeweilig verschiedenes Beschalten dieser Leitungen wird ein binärer Code generiert, durch den immer genau ein bestimmter Spind angesteuert und geöffnet wird. Außerdem haben wir eine SQLite - Datenbank erstellt, in der die einzelnen Spindnummern mit den zugehörigen IDs der edu.cards, die zum Öffnungsvorgang verwendet werden, verknüpft sind. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 9 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 2.1 Abstract gemäß Prüfungsordnung BHMS und Bildungsanstalten §8 (5) The aim of our project work is to automatically open specially constructed lockers using only a chip card. A compact minicomputer, named Raspberry Pi 2, represents the tie between a NFC - card reader and the lockers that we want to open. The NFC – card reader is attached to the Raspberry Pi 2 by a serial UART connection between two RS232 interfaces. The main part of the necessary intelligence is the Raspberry Pi 2. It contains our self-designed main program (programmed in C) and several libraries and drivers that we have installed. The lockers that we have for the beginning replaced by simple LEDs are connected to the GPIO pins of the Raspberry Pi 2 by 6 conductors. By varied coupling of these conductors binary codes get generated. This makes sure that always only one particular locker gets triggered and opened. Furthermore we provided a SQLite database, which contains the several numbers of the lockers plus the different corresponding IDs of the edu.cards that are used for the opening process. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 10 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 3. Ablaufbeschreibung einer Spindöffnung Theorie: Hält man eine NFC fähige Edu.card an den Kartenleser, wird die UID dieser Karte eingelesen. Andere Karten als die Edu.card werden vom System nicht akzeptiert. Anschließend öffnet das Programm die Datenbank und ermittelt durch einen SQL SELECT – Befehl die dazugehörige Spindnummer. Jeder dieser Spindnummern ist ein bestimmter Binärcode zugeordnet, welcher in weiterer Folge an die GPIO Pins des Raspberry Pi 2 gelegt wird. Durch diese bestimmte Codierung ist ganz genau definiert, welcher Spind angesteuert bzw. geöffnet wird. Jeder Spind ist mit einer Stromversorgung und einem Magnetschloss ausgestattet. Praxis: Der einzige Unterschied zwischen unserem Projekt und der Umsetzung in die Realität besteht darin, dass wir die echten Spinde mit LEDs simulieren. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 11 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 3.1 Process documentation of a locker opening Theory: If you hold an NFC able edu.card to the card reader, the UID of this card will be read. Other cards than edu.cards will not be accepted by the system. Then the program opens the database and identifies the corresponding locker number by a SELECT - command. Each locker number is assigned to a specific binary code, which is subsequently applied to the GPIO pins of the Raspberry Pi 2. By this specific encoding it is exactly defined which locker will be triggered respectively opened. Each locker is equipped with a power supply and a magnetic lock. Practice: The only difference between our project and the possible use in reality is that we simulated the real lockers by LEDs. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 12 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 3.2 Ablaufdiagramm/ expiration chart Abbildung 1: Ablaufdiagrammm Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 13 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 4. Einleitung Aufgabenstellung Die Spinde werden mit elektronischen Schlössern modifiziert. Jedes Schloss wird über die edu.cards der Schüler geöffnet. Der Spind schließt sobald er zugemacht wird automatisch. Wird die edu.card an den Sensor gehalten, öffnet sich der Spind erneut. Die Spinde einer Klasse sind miteinander vernetzt, somit wird verhindert, dass eine edu.card mehrere Spinde gleichzeitig öffnen kann. Die Versorgung erfolgt über das örtliche Stromnetz und wird dann auf die für die Schlösser erforderliche Betriebsspannung heruntergeregelt. Im Falle eines Stromausfalles bleiben alle Spinde geschlossen. Zielsetzung Ein elektronisch gesteuertes Magnetschloss soll an jedem Spind angebracht werden. Der NFC Sensor erfasst die edu.card und das Magnetschloss öffnet. Stromausfälle werden berücksichtigt und von uns simuliert. Die Funktion von mehreren miteinander kommunizierenden Spinden soll theoretisch durchgeplant, durchgeführt und getestet werden. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 14 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5. Einstieg in das Projekt Für den Einstieg in unser Projekt haben wir uns zuerst überlegt wie der Aufbau aussehen kann und welche Komponenten zum Einsatz kommen sollen. Am Anfang des Jahres haben wir uns daher hauptsächlich mit Recherchearbeiten beschäftigt, in denen wir mit Hilfe des Internets nach möglichen Einstiegen in unser Projekt gesucht haben. Sehr schnell sind wir auf die BHAK 10 Pernerstorfergasse gestoßen, die ein ähnliches System in ihrem Schulhaus verwendet. Wir durften uns freundlicherweise unter Führung von Herrn Prof. Hopfgartner eben jenes etwas genauer ansehen. Dieser gab uns den Rat eine Vergleichsstudie, anstelle eines eigenständigen Projektes, durchzuführen. Wir haben uns jedoch dagegen entschieden. Nach unserem Besuch bei Herrn Prof. Hopfgartner haben wir uns erkundigt wozu unsere Schülerausweise, so genannte edu.cards, fähig sind. Unsere erste Anlaufstelle hierbei war Herr Prof. Pühringer, der uns einige grundliegende Informationen dazu näher gebracht hat. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 15 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.1 edu.card Die an unserer und noch anderen Schulen gebräuchlichen Schülerausweise sind so genannte edu.cards. Jede edu.card ist mit einem Chip ausgestattet, um z.B. Geld hinaufzuladen. Die neuen EDU-Cards sind sogar mit der NFCTechnologie ausgestattet, welche wir uns zu Nutzen machen. Unsere EDU-Card verwendet Mifare Technologie in einem Frequenzbereich von 13,56 MHz. Mifare ist eine neue, immer beliebtere, Technologie um Datenaustausch vorzunehmen und hat eine Reichweite von bis zu 10cm. Die Geschwindigkeit bei NFC-Übertragungen beträgt maximal 424 KByte/s. Jede EDU-Card hat, wie uns später beim Einlesen aufgefallen ist, eine immer unterschiedliche „UID“, einen immer gleichbleibenden „ATQA“ Code und noch zwei zusätzliche Codes, die für uns jedoch ohne weitere Bedeutung sind. Für unser Projekt werden wir uns ausschließlich mit der „UID“ und dem „ATQA“ Code auseinandersetzen. Abbildung 2: edu.card: Ansicht von vorne (links) und hinten (rechts) Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 16 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.2 Aufbau Aufgrund der gesammelten Informationen haben wir uns in weiterer Folge dafür entschieden einen Raspberry Pi 2 als Hauptkomponente und einen NFC Kartenleser für das Einlesen der edu.cards zu verwenden. Unser erster Entwurf war folgendes Blockschaltdiagramm: Abbildung 3: Blockschaltdiagramm des Projekts Im nächsten Schritt haben wir nach einem passenden NFC Kartenleser gesucht. 5.3 NFC Die Nahfeldkommunikation (Near Field Communication, NFC) ist ein auf der RFID-Technik basierender internationaler Übertragungsstandard zum kontaktlosen Austausch von Daten per Funktechnik über kurze Strecken von wenigen Zentimetern und einer Datenübertragungsrate von maximal 424 kBit/s. Bisher kommt diese Technik vor allem in Lösungen für Micropayment zum Einsatz[1]. 1 „Near Field Communication“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 17 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.3.1 NFC Kartenleser Sunfounder PN532 Unsere Wahl fiel letztendlich auf einen Sunfounder PN532, da dieser alle notwendigen Eigenschaften mit sich brachte. Der Sunfounder PN532 wurde extra für die Zusammenarbeit mit dem Raspberry Pi entworfen. Es gibt eine sehr detaillierte und gute Beschreibung zur Verbindung und Inbetriebnahme des Kartenlesers mit einem Raspberry Pi. Abbildung 4: PN532 NFC Kartenleser [2] 2 „sunfounder“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 18 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Datenblatt/Datasheet Sunfounder PN532 [3] The PN532 is a highly integrated transceiver module for contactless communication at 13.56 MHz based on the 80C51 microcontroller core. It supports 6 different operating modes: • • • • ISO/IEC 14443A/MIFARE Reader/Writer FeliCa Reader/Writer ISO/IEC 14443B Reader/Writer ISO/IEC 14443A/MIFARE Card MIFARE Classic 1K or MIFARE Classic 4K card emulation mode • FeliCa Card emulation • ISO/IEC 18092, ECMA 340 Peer-to-Peer The PN532 implements a demodulator and decoder for signals from ISO/IEC 14443A/MIFARE compatible cards and transponders. The PN532 handles the complete ISO/IEC 14443A framing and error detection (Parity & CRC). The PN532 supports MIFARE Classic 1K or MIFARE Classic 4K card emulation mode. The PN532 supports contactless communication using MIFARE Higher transfer speeds up to 424 kbit/s in both directions. The PN532 supports the following host interfaces: • SPI 2 • I C • High Speed UART (HSU) An embedded low-dropout voltage regulator allows the device to be connected directly to a battery. In addition, a power switch is included to supply power to a secure IC. 3 alldatasheet.com, „PN532 datasheet(2/27 Pages) NXP | Near Field Communication (NFC) controller“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 19 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Features and benefits 80C51 microcontroller core with 40 KB ROM and 1 KB RAM Highly integrated demodulator and decoder Buffered output drivers to connect an antenna with minimum number of external components Integrated RF level detector Integrated data mode detector Supports ISO/IEC 14443A/MIFARE Supports ISO/IEC 14443B (Reader/Writer mode only) Typical operating distance in Reader/Writer mode for communication to ISO/IEC 14443A/MIFARE, ISO/IEC 14443B or FeliCa cards up to 50 mm depending on antenna size and tuning Typical operating distance in NFCIP-1 mode up to 50 mm depending on antenna size, tuning and power supply Typical operating distance in ISO/IEC 14443A/MIFARE or FeliCa card emulation mode of approximately 100 mm depending on antenna size, tuning and external field strength Supports MIFARE Classic 1K or MIFARE Classic 4K encryption in Reader/Writer mode and MIFARE higher transfer speed communication at 212 kbit/s and 424 kbit/s Supports contactless communication according to the FeliCa protocol at 212 kbit/s and 424 kbit/s Integrated RF interface for NFCIP-1 up to 424 kbit/s Possibility to communicate on the RF interface above 424 kbit/s using external analog components Supported host interfaces SPI interface I2C interface High-speed UART Dedicated host interrupts Low power modes Hard-Power-Down mode (1 A typical) Soft-Power-Down mode (22 A typical) Automatic wake-up on I2C, HSU and SPI interfaces when device is in Power-down mode Programmable timers Crystal oscillator 2.7 to 5.5 V power supply operating range Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 20 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 1. NXP Semiconductors Power switch for external secure companion chip Integrated antenna detector for production tests PN532/C1 Near Field Communication (NFC) controller Dedicated IO ports for external device control ECMA 373 NFC-WI interface to connect an external secure IC 2. Applications Mobile and portable devices Consumer applications 3. Quick reference data Table 1. Quick reference data Symbol Parameter VBAT Battery supply voltage LDO output voltage ICVDD Conditions VBAT > 3.4 V VSS = 0 V VSS = 0 V Min 2.7 [1] 2.7 PVDD Supply voltage for host interface SVDD Output voltage for secure IC interface Hard-Power-Down current consumption VSS = 0 V (SVDD Switch Enabled) VBAT = 5 V DVDD -0.5 - DVDD V - - 2 A ISPD Soft-Power-Down current consumption VBAT = 5 V, RF level detector on - - 45 A IDVDD Digital supply current 25 - mA ISVDD SVDD load current - - 30 mA IAVDD Analog supply current Transmitter supply current VBAT = 5 V, SVDD switch off VBAT = 5 V, SVDD switch on VBAT = 5 V - 6 - mA [3] 150 [4] mA - 0.5 W - +85 C IHPD ITVDD Ptot Continuous total power dissipation Tamb Operating temperature range Datum 08.04.2016 Diplomarbeit: 1.6 Typ Max Unit 5.5 V 3 3.4 V [1] - During RF transmission, VBAT = 5 V [2] Tamb = -30 to +85 C Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss -30 HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 - 60 3.6 Projektleiter Prof. Joksch Signum: V [1] DVDD, AVDD and TVDD must always be at the same supply voltage. [2] The total current consumption depends on the firmware version (different internal IC clock speed) [3] With an antenna tuned at 50 at 13.56 MHz [4] The antenna should be tuned not to exceed this current limit (the detuning effect when coupling with another device must be taken into account) Seite 21 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.4 Raspberry Pi 2 Der Entschluss einen Raspberry als zentrale Recheneinheit zu verwenden entstand nach einem Gespräch mit Herrn Prof. Pühringer. Wir haben den Raspberry Pi 2 für unser Projekt ausgewählt, da dieser zum damaligen Zeitpunkt das neueste Modell auf dem Markt und mit der neuesten Technik ausgestattet war. Abbildung 5: Raspberry Pi 2 [4] 4 „Raspberry Pi 2.pdf“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 22 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.4.1 Beschreibung Der Raspberry Pi ist ein Einplatinencomputer, der von der britischen Raspberry Pi Foundation entwickelt wurde. Der Rechner enthält ein Ein-Chip-System von Broadcom mit einem ARMMikroprozessor, die Grundfläche der Platine entspricht etwa den Abmessungen einer Kreditkarte. Der Raspberry Pi 2 wird mit einem auf Linux basierendem Betriebssystem betreiben [5]. Xenon Empfindlichkeit Der Raspberry Pi 2 Model B stürzt ab, wenn er mit einem XenonBlitz fotografiert wird. Die Raspberry Pi Foundation bestätigte dieses Verhalten. Verursacht wird es durch ein Bauteil das für die interne Spannungsversorgung zuständig ist. Dieses erzeugt aus den 5 V des MicroUSB-Anschlusses die intern benötigten Spannungen. Dazu wurde ein Chip ohne Gehäuse gewählt und direkt auf die Platine gelötet. Wird der Chip angeblitzt, bringt der im freiliegenden Silizium auftretende photoelektrische Effekt die Spannungsregelung aus dem Takt. Die Folge ist eine Spannungsschwankung, die zum Absturz des Raspberry Pi führt. Problematisch ist dabei die durch einen Xenon-Blitz oder auch einen Laserpointer hervorgerufene rapide Helligkeitsänderung und die enorme Lichtmenge. Andere helle Lichtquellen bereiten keine Probleme[5]. Dieses Problem kann nichtig gemacht werden, indem man den Raspberry Pi 2 mit einem Gehäuse versieht, das den Einfluss von Licht verhindert. 5 „Raspberry Pi“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 23 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.4.2 (GPIO-) Pins des Raspberry Pi 2 Um Spinde ansteuern zu können muss der Raspberry Pi Daten an den jeweiligen Spind übermitteln. Für die Übertragung haben wir die GPIO-Pins angesteuert. Arten und Nutzen der Pins Die verbauten Pins haben verschiedene Funktionen. Neben den allgemein verwendbaren Kontakten (GPIO-Pins genannt) gibt es auch solche für die Versorgungsspannung (3,3V bzw. 5V) wie auch Masse Pins (auch Ground genannt; 0V). Mit den, auf dem B+ und neueren Modell vorhandenen, 14 Zusatz-Pins wurden weitere bislang nicht verfügbare Funktionen des System-on-a-Chip (B+: BCM2835; 2 Model B: BCM2836) zugänglich. Damit sind wir dabei, dass es Pins gibt, die vorkonfigurierte Funktionen erfüllen. Alle Pins sind jedoch frei programmierbar, auch solche, die eigentlich spezielle Eigenschaften haben[6]. 6 „Raspberry Pi: GPIO-Schnittstelle erklärt » Jan Karres“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 24 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Anordnung der Pins: Abbildung 6: Pinbelegung am Raspberry Pi 2 [7] 7 „Introducing the Raspberry Pi B+ » DesignSpark“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 25 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Tabelle aller Pins (mit verschiedenen Bezeichnungen) WiringPi Pin-Namen – + 3,3 V 8 (SDA1) GPIO 2 9 (SCL1) GPIO 3 7 (GPIO_GCLK) GPIO 4 – GND 0 (GPIO_GEN0) GPIO 17 2 (GPIO_GEN2) GPIO 27 3 (GPIO_GEN3) GPIO 22 – + 3,3 V 12 (SPI_MOSI) GPIO 10 13 (SPI_MISO) GPIO 9 14 (SPI_SLCK) GPIO 11 – GND 30 (nur für I2C) ID_SD 21 GPIO 5 22 GPIO 6 23 GPIO 13 24 GPIO 19 25 GPIO 26 GND Pin Pin Pin-Namen 1 2 +5V 3 4 +5V 5 6 GND 7 8 GPIO 14 (TXD0) 9 10 GPIO 15 (RXD0) 11 12 GPIO 18 (GPIO_GEN1) 13 14 GND 15 16 GPIO 23 (GPIO_GEN4) 17 18 GPIO 24 (GPIO_GEN5) 19 20 GND 21 22 GPIO 25 (GPIO_GEN6) 23 24 GPIO 8 (SPI_CE0_N) 25 26 GPIO 7 (SPI_CE1_N) 27 28 ID_SC (nur für I2C) 29 30 GND 31 32 GPIO 12 33 34 GND 35 36 GPIO 16 37 38 GPIO 20 39 40 GPIO 21 Abbildung 7: Liste aller Pins inkl. Diverse Bezeichnungen [8] 8 WiringPi – – – 15 16 1 – 4 5 – 6 10 11 31 26 27 28 29 „Raspberry Pi: GPIO-Schnittstelle erklärt » Jan Karres“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 26 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 5.4.3 Blockschaltdiagramm des Raspberry Pi 2 Abbildung 8: Blockschaltbild des Raspberry Pi 2 [9] 9 „Einplatinen-Computer: Raspberry Pi für Profi-Anwendungen - Seite 2 - crn.de“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 27 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Datenblatt/Datasheet Raspberry PI 2 Model B[10] Product Name Raspberry Pi 2, Model B Product Description The Raspberry Pi 2 delivers 6 times the processing capacity of previous models. This second generation Raspberry Pi has an upgraded Broadcom BCM2836 processor, which is a powerful ARM Cortex-A7 based quad-core processor that runs at 900MHz. The board also features an increase in memory capacity to 1Gbyte. RS Part Number 832-6274 Specifications Chip Broadcom BCM2836 SoC Memory Operating System Dimensions Power DMA infrastructure 1GB LPDDR2 Boots from Micro SD card, running a version of the Linux operating system 85 x 56 x 17mm Micro USB socket 5V, 2A Core architecture CPU GPU Connectors: Ethernet Video Output Audio Output USB GPIO Connector Camera Connector JTAG Display Connector Memory Card Slot 10 Quad-core ARM Cortex-A7 900 MHz Dual Core VideoCore IV® Multimedia Co-Processor Provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode Capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and 10/100 BaseT Ethernet socket HDMI (rev 1.3 & 1.4) Composite RCA (PAL and NTSC) 3.5mm jack, HDMI 4 x USB 2.0 Connector 40-pin 2.54 mm (100 mil) expansion header: 2x20 strip Providing 27 GPIO pins as well as +3.3 V, +5 V and GND supply lines 15-pin MIPI Camera Serial Interface (CSI-2) Not populated Display Serial Interface (DSI) 15 way flat flex cable connector with two data lanes and a clock lane Micro SDIO „Raspberry Pi 2, Model B.pdf“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 28 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 6. Datenbank Nachdem wir uns für den Sunfounder PN532 und den Raspberry PI2 entschieden haben, dachten wir über die Zuordnung der EDU-Card an die Spinde nach. Wir kamen zu dem Entschluss eine Datenbank für diese Organisation zu verwenden. Eine Datenbank, auch Datenbanksystem (DBS) genannt, ist ein System zur elektronischen Datenverwaltung. Ein DBS besteht aus zwei Teilen: der Verwaltungssoftware und der Menge der zu verwaltenden Daten. Zur Abfrage und Verwaltung der Daten bietet ein Datenbanksystem eine Datenbanksprache an [11]. 6.1 SQLite Unsere Datenbank haben wir in SQLite realisiert. Dafür haben wir ein AddOn des Web-Browsers Mozilla Firefox verwendet. SQLite ist eine Programmbibliothek, die ein relationales Datenbanksystem enthält. SQLite unterstützt einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle. Unter anderem implementiert SQLite Transaktionen, Unterabfragen (subselects), Sichten (views), Trigger und benutzerdefinierte Funktionen. Das System ist vor allem für den Einsatz in eingebetteten Datenbanksystemen entworfen, daher fehlen Funktionen wie die Möglichkeit, Objektberechtigungen zu verwalten [12]. 11 12 „Datenbank“. „SQLite“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 29 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 6.1.1 Verschiedene Datentypen Es gibt in der Informatik eine Reihe von Datentypen zwischen denen man je nach Gebrauch wählen kann, wie z.B.: „Character“, „Integer“, „Float“, „Varchar“ und viele mehr. Wir haben uns in unserer Datenbank für die Datentypen „Character“ und „Integer“ entschieden. Zu diesem Entschluss kamen wir jedoch erst, als wir die erste edu.card eingelesen und gesehen haben, wie die Codes aufgebaut sind. Die IDs, die durch Hexadezimalcodes repräsentiert werden, haben wir als Datentyp „Character“ (char, Zeichen) und die Spindnummern als „Integer“ (int, ganze Zahl) vereinbart. a) Integer Mit „Integer“ wird in der Informatik ein Datentyp bezeichnet, der ganzzahlige Werte speichert. Der Wertebereich ist endlich. Berechnungen mit Integern sind in der Regel exakt, lediglich ein Überlauf kann durch Überschreiten des zulässigen Wertebereichs auftreten. Als grundlegender arithmetischer Datentyp sind Integer in der Hardware fast aller Rechenanlagen vorhanden und in nahezu jeder Programmiersprache verfügbar [13]. 13 „Integer (Datentyp)“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 30 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik b) Char Char oder Character ist ein Datentyp für Datenbereiche/Felder, deren Elemente jeweils ein Zeichen repräsentieren. Char als Datentyp legt fest, dass die einzelnen Zeichen eines Speicherbereichs aus je (i. d. R.) 8 Bits bestehen, die je ein darstellbares Zeichen (Buchstabe, Ziffer, Sonderzeichen ...) repräsentieren. Welches Zeichen dies ist, ergibt sich aus dem Inhalt der Speicherstelle [14]. 7. Erste Schritte der Umsetzung Nachdem wir alle Einzelheiten geklärt haben, die Datenbank funktionsfähig war, erste Testprogramme liefen und unsere Teile angekommen waren, konnten wir mit dem Aufbau beginnen. Nachdem wir den Raspberry Pi 2 erfolgreich mit dem mitgekauften Touch-Display verbunden und es infolge darauf geschafft hatten einen externen Bildschirm über HDMI anzuschließen, konnten wir uns um das Anschließen des Kartenlesers kümmern. 14 „Char (Datentyp)“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 31 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 7.1 Raspberry Pi – PN532 Verbindung Wie schon aus dem Datenblatt des Kartenlesers (PN532) herauszulesen ist, hat man zum Anschließen drei verschiedene Varianten zur Auswahl: 1. UART (auch als serielle Schnittstelle RS-232 bekannt): Recht langsame Verbindung (115,2 kbps) Für die Verbindung mit dem Raspberry Pi werden vier Leitungen benötigt 2. I²C: Etwas schnellere Verbindung (400 kbps) Für die Verbindung mit dem Raspberry Pi werden vier Leitungen benötigt 3. SPI: Sehr schnelle Verbindung (>4 mbps) Für die Verbindung mit dem Raspberry Pi werden sechs Leitungen benötigt Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 32 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 7.1.1 Unsere Wahl Wir haben uns im Internet über Vor- und Nachteile der einzelnen Verbindungen informiert und sind zum Entschluss gekommen, die UART Verbindung zu verwenden. Die SPI Verbindung wäre zwar die schnellste gewesen, hätte jedoch zwei Leitungen mehr gefordert. Da in unserem Projekt die Geschwindigkeit aber keine allzu große Bedeutung hat, haben wir die UART Verbindung gewählt. Des Weiteren zeigten Erfahrungsberichte[15], dass die I²C Verbindung nicht stabil mit dem Raspberry Pi zusammenarbeitet. Abbildung 9: Grafik der UART Verbindung zwischen PN532 und Raspberry [16] 15 16 „NFC auf Raspberry Pi: PN532 Breakout Board“. „sunfounder“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 33 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik UART über RS-232 UART ist die Abkürzung für Universal Asynchronous Receiver Transmitter. Die Besonderheit besteht darin, dass bei der asynchronen Betriebsweise kein eigenes Taktsignal auf einer Übertragungsleitung verwendet wird. Stattdessen synchronisiert sich der Empfänger über die Länge des Rahmens, vermittelt durch die Schaltflanke von Start- und Stopp-Bit, sowie die eingestellte Baudrate (welche in diesem Fall der Bitrate entspricht). Da der Beginn einer Übertragung mit dem Start-Bit zu beliebigen Zeitpunkten erfolgen kann, wird diese serielle Schnittstelle als asynchron bezeichnet. Um eine Synchronisation gewährleisten zu können, ist die Anzahl der übertragbaren Bits eingeschränkt. Bei einem längeren Datenstrom könnte die Synchronisation verloren gehen, was zu Fehlinterpretationen des Datenstromes und somit zu einer fehlerhaften Übertragung führen kann. Die asynchrone Übertragung findet in der Datenkommunikation bei der RS-232-Schnittstelle Verwendung. Diese Schnittstelle weist eine vergleichsweise große Verbreitung auf. Ein UART erzeugt die auf der RS232-Schnittstelle zu übertragenden Datenbits und den dazu notwendigen Datenrahmen. Die eigentliche RS-232-Schnittstelle besteht zusätzlich noch aus Pegelumsetzern und weiteren Bauelementen wie Steckern, welche nicht mehr Teil eines UART sind [17]. 17 „Universal Asynchronous Receiver Transmitter“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 34 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 7.1.2 Inbetriebnahme des Kartenlesers Wie bereits erwähnt haben wir die RS232 Schnittstelle des Kartenlesers verwendet, um eine Verbindung zum Raspberry Pi aufzubauen. Um den Kartenleser verwenden zu können mussten wir vorerst einige kurze Installationen und Konfigurationen am Rapsberry Pi vornehmen. Die folgende Beschreibung zur Inbetriebnahme ist nur für die UART Verbindung geeignet. Während der Konfiguration des Raspberry Pi haben wir uns an die Anleitung des Herstellers des Sunfounders PN532 (Kartenleser) gehalten. Als erstes mussten wir den „Serial Port“ am Raspberry deaktivieren. Dies haben wir über das Konfigurationsmenü erledigt. Um in das Konfigurationsmenü zu gelangen war folgende Eingabe im „Terminal“ notwendig: „sudo raspi-config“. Im Menü ist „Advanced Options“ auszuwählen, als nächstes der Punkt „Serial“ und dort dann „Disable“. Abbildung 10: Raspberry Pi Konfigurationsmenü Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 35 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Um die Änderung zu übernehmen musste der Raspberry neugestartet werden. Dies geschah über die Eingabe „sudo reboot“. Im nächsten Schritt haben wir die benötigte Software heruntergeladen und installiert. Die Installation von „autoconf“, „libtool“, „libpcsclite-dev“ und „libusb-dev“ erfolgt durch folgende Eingabe: „sudo apt-get install autoconf libtool libpcsclite-dev libusb-dev autoreconf –vis” Der letzte Schritt, der zur Installation notwendig bleibt, ist die Bibliothek „libnfc”. Diese erlangt man durch nachstehende Eingaben: „cd ~ git clone https://github.com/nfc-tools/libnfc.git” Die Installation und Konfiguration erfolgt folgendermaßen: “ cd libnfc sudo mkdir /etc/nfc sudo mkdir /etc/nfc/devices.d sudo cp contrib/libnfc pn532_uart_on_rpi.conf.sample /etc/nfc/devices.d/pn532_uart_on_rpi.conf sudo echo “allow_intrusive_scan = true” > /etc/nfc/devices.d/pn532_uart_on_rpi.conf ” Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 36 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Wenn alle Schritte abgeschlossen sind, kann nun die Konfiguration durchgeführt werden: “ ./configure --with-drivers=pn532_uart --sysconfdir=/etc --prefix=/usr ” Die letzte Eingabe zur Fertigstellung sorgt für die Übernahme des gesamten Vorgangs: “ sudo make clean sudo make install all ” Nun können der Kartenleser und der Raspberry Pi über die RS-232 Schnittstelle, wie in der auf Seite 32 dargestellten Grafik, verbunden werden. Vor der Inbetriebnahme des Kartenlesers ist zu beachten, dass die beiden Schalter Set0 und Set1 auf die Stellungen „L“ und „UART“ geschalten sind. Abbildung 11: Grafik des PN532 mit Hauptaugenmerk auf die beiden Schalter Set0 und Set1 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 37 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Mit dem Befehl „sudo nfc-poll“ wird das Programm gestartet. Wird nun eine NFC-fähige Karte an den Leser geführt, erscheinen im „Terminal“ alle Daten, die die Karte preisgibt, z.B.: die UID. Beispiel: Abbildung 12: Ausgabe nach Einlesen einer edu.card Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 38 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8. Unser Programm Für unser Programm, welches zur Ermittlung und zum Vergleich der ID mit der Datenbank und zum Ansprechen des richtigen Spindes dient, haben wir uns für die Programmsprache C entschieden. Geschrieben haben wir das Ganze mit der Software „Dev-C++“ von „BloodshedSoftware [18]“. Abbildung 13: Logo Dev-C++ 8.1 Warum C? Für die Programmiersprache C haben wir uns zum einen aufgrund von Vorkenntnissen durch die Schule und zum anderen aufgrund unserer Meinung, dass unser Projekt am besten mit C durchzuführen sei, entschieden. Des Weiteren liegen in C alle Bibliotheken, alle Examples und Programme vor, die wir in unserem Projekt verwendet haben. C ist außerdem die Sprache für UNIX und da unser Raspberry Pi 2 auf UNIX basiert, hatten wir auch viel weniger Probleme beim Kompilieren. 18 „Bloodshed Software - Dev-C++“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 39 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.1.1 Was ist C? C ist eine imperative Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories für die Systemprogrammierung des Betriebssystems Unix entwickelte. Seitdem ist sie auf vielen Computersystemen verbreitet. Die Anwendungsbereiche von C sind sehr vielfältig. Sie wird zur Systemund Anwendungsprogrammierung eingesetzt. Die grundlegenden Programme aller Unix-Systeme und die Systemkernel vieler Betriebssysteme sind in C programmiert. Zahlreiche Sprachen, wie C++, Objective-C, C#, D, Java, JavaScript, PHP, Vala oder Perl orientieren sich an der Syntax und anderen Eigenschaften von C [19]. 8.2 Warum Dev-C++? Dev-C++ haben wir gewählt, da wir in der Schule bereits öfters damit gearbeitet haben. Ein weiterer Grund war die Tatsache dass es sich um eine Freeware Software handelt. 19 „C (Programmiersprache)“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 40 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.3 Einbindung der Bibliotheken ins Programm Der Erste Schritt in unserem Programm war das Einfügen sämtlicher Bibliotheken die wir benötigten. 8.3.1 Was sind Bibliotheken? In Bibliotheken stehen Funktionen für verschiedenste Bereiche. Diese Funktionen sind schon vorprogrammiert und als Bibliothek abgespeichert. Dadurch wird es dem Benutzer einfacher gemacht, verschiedenste Funktionen zu verwenden, wie zum Beispiel mathematische Aufgaben oder simple Ein-& Ausgaben. Include Die ersten Zeilen gehören zum sogenannten Rumpfprogramm und sind wie bei jedem anderen in C geschriebenen Programm mit mehreren „#include<……….>“-Befehlen gefüllt. Diese Befehle bestimmen im Vorhinein welche Bibliotheken für das aktuelle Programm verwendet werden. In „Dev-C++“ sind bereits viele Bibliotheken vorinstalliert, jedoch gibt es trotzdem einige, die man selbst installieren muss. In unserem Fall war das die „sqlite3“ Bibliothek, die wir benötigen, um mit der Datenbank kommunizieren zu können. ist der Befehl, der vorgibt, dass bestimmte Bibliotheken verwendet werden. Welche Bibliothek dabei verwendet wird steht zwischen den eckigen Klammern (z.B.: #include<sqlite3.h>, hier ist „sqlite3.h“ der Name der verwendeten Bibliothek). #include<> Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 41 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.4 Erster Anlauf Da wir bis zu einem gewissen Zeitpunkt noch nicht im Besitz eines Kartenlesers waren und auch noch keine Datenbank erstellt hatten, haben wir als erstes einfache Textdokumente, welche unseren Kartenleser vorerst ersetzten, verwendet. In das Textdokument, welches unseren Kartenleser repräsentiert, wird vor Programmstart eine ID hineingeschrieben. Im ersten Programmabschnitt wird die Kommunikation zu dieser Datei hergestellt und der Inhalt in eine Variable gespeichert. Da wir zu dieser Zeit noch keinen Datenvergleich herstellen konnten, haben wir den Wert dieser Variable direkt ausgeben lassen: Abbildung 14: Programm des ersten Anlaufs Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 42 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.5 Datenbank ansprechen Als wir unsere erste Datenbank zur Verfügung hatten, kümmerten wir uns in unserem ersten Programmabschnitt darum, diese anzusprechen. Mithilfe der von uns zusätzlich installierten Sqlite-Bibliothek ist dies nun möglich. Als erstes haben wir hierbei mit dem „include-Befehl“, die notwendigen Bibliotheken hinzugefügt. Die darauf folgenden Befehle sind Standardbefehle zur Herstellung einer Verbindung zwischen Datenbank und Programm. Wir haben uns dabei an die Anleitung [20] der Seite www.tutorialspoint.com, gehalten. Bei erfolgreicher Herstellung des Datenstromes zwischen unserem Programm und der Datenbank, erhalten wir eine positive Rückmeldung: „Opened database successfully“. Gelingt dies nicht, erfolgt eine negative Rückmeldung: „Can’t open database“. 20 tutorialspoint.com, „SQLite C/C++ Tutorial“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 43 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Abbildung 15: Programmteil zum Ansprechen der Datenbank Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 44 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.6 SELECT-Befehl Nachdem dies erledigt war, haben wir unsere Aufmerksamkeit darauf gerichtet, Daten aus der Datenbank abfragen zu können. Mit einem einfachen „SELECT-Befehl“ werden jene Daten, die bestimmte Eigenschaften aufweisen, herausgefiltert. SELECT [ DISTINCT | ALL ] <select list> FROM <table reference list> [ <where clause> ] [ <group by clause> ] [ <having clause> ] [ UNION [ALL] <query specification> ] [ <order by clause> ] Abbildung 16: Bestandteile eines SELECT-Befehls [21] Diese Bestandteile setzen sich je nach Situation aus weiteren einfachen oder komplexen Bestandteilen zusammen und werden in den folgenden Abschnitten erläutert. Unbedingt erforderlich sind: das Schlüsselwort SELECT eine Liste von Spalten das Schlüsselwort FROM mit einem oder mehreren Verweisen auf Tabellen Alle anderen Bestandteile sind optional, können also auch weggelassen werden. Wenn sie benutzt werden, müssen sie in genau der genannten Reihenfolge verwendet werden [21]. 21 „Ausführliche SELECT-Struktur – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher“. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 45 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik In unserem Fall lautet der Befehl folgendermaßen: "SELECT SpindNr from Spinde WHERE id = x“ x stellt in diesem Beispiel einen Platzhalter für die ID der eingelesenen EDU-Card dar. In unserem Programm ist dies mit Einsatz von Variablen gelöst worden. Die Schwierigkeit hinter dem Ganzen lag darin, die Abfrage über unser C-Programm durchzuführen. Nach dem die Abfrage bezüglich der Datenbank erfolgt, wird ermittelt, ob diese erfolgreich war oder gescheitert ist. Bei erfolgreicher Ausführung des Befehls erhalten wir eine positive Rückmeldung: "Operation done successfully“. Scheitert die Ausführung jedoch, erhalten wir eine standardisierte negative Rückmeldung, die je nach dem welches Problem vorliegt anders ausfällt. Abbildung 17: Programmabschnitt mit dem SELECT-Befehl Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 46 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.7 Rückmeldungen Abbildung 18: Ausgabe des Programms Rückmeldung zum SELECT-Befehl. Rückmeldung zum Ansprechen der Datenbank. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 47 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.8 Verifizierung Das nächste Ziel, das wir uns gesetzt haben, lag darin, unser Programm so anzupassen, dass das System nur edu.cards akzeptiert. Es erschien uns wichtig nur edu.cards zuzulassen, da es passieren könnte, dass irgendeine andere NFC-fähige Karte zufällig die gleiche ID wie die edu.card eines Schülers vorweist. Außerdem ist es theoretisch möglich mit bestimmten Kenntnissen eine leere NFC-Karte mit einer beliebigen ID zu beschreiben. Nach dem ersten Einlesen der edu.card ist uns aufgefallen, dass es nicht nur eine ID, sondern noch drei weitere Codes, die die Karte liefert, gibt. Für die Zuweisung der Spinde haben wir uns für die „UID“ der Karte entschieden, da dies die beste und sinnvollste Möglichkeit ist, alle Karten voneinander zu unterscheiden. Um nun sicher zu stellen, dass nur edu.cards zur Öffnung der Spinde verwendet werden können, haben wir uns den „ATQA“ - Code zu Nutzen gemacht. Dieser Code besteht aus vier Ziffern und zwei Leerstellen und ist bei jeder edu.card identisch. Noch bevor die UID eingelesen wird, vergleicht das Programm den ATQA Code der zugeführten Karte mit jenem in unserem Programm. Erst wenn dieser Vorgang korrekt durchgeführt wurde, wird im Programm der nächste Punkt abgearbeitet. Werden andere Karten als edu.cards an den Leser gehalten, erscheint folgende Fehlermeldung: „Falsche Karte“ Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 48 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.8.1 Durchführung& Einlesen der UID Um nun die Verifizierung durchführen und letztendlich die UID einlesen zu können, mussten wir die Länge der beim Einlesen der edu.card erhaltenen Ausgabe abzählen. Nachdem wir wussten wie viele Stellen vorhanden sind und an welcher Stelle sich welches Zeichen der UID und des ATQA-Codes befinden, konnten wir den ATQA - Code und die UID ganz einfach in Variablen speichern. Abbildung 19: Verifizierung der edu.card, Einlesen der UID Ist der Wert der eingelesenen Karte an den Stellen 21,22 und 25 „0“ und an der Stelle 26 „2“, dann stimmt der ATQA - Code überein und es handelt sich um eine edu.card, welche vom System akzeptiert wird. Befehl: „if (card[21] == '0' && card[22] == '0' && card[25] == '0' && card [26] == '2')” In weiterer Folge werden dann 14 Werte ab der 50. Stelle (da die meisten vorhergegangenen Stellen für unsere Spindöffnung nicht relevant sind) in eine Variable „uid“ zwischengespeichert. Befehl: „strncpy(uid,&card[50],14);“ Es sind 14 Werte, da die UID genau 14 Stellen (mit den Leerstellen) hat und bei der Stelle 50 beginnt. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 49 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.9 Ansteuerung der GPIO-Pins Wie schon zuvor ((GPIO-) Pins des Raspberry Pi 2) erwähnt, benötigen wir die GPIO-Pins zur Ansteuerung der Spinde. Um die Pins mit unserem Programm ansprechen zu können muss eine weitere Bibliothek hinzugefügt werden, die „WiringPi“ Bibliothek. 8.9.1 WiringPi WiringPi ist eine weitere Bibliothek, die zur einfacheren Ansteuerung und Programmierung der GPIO-Pins dient. Jedoch ist bei der Verwendung von WiringPi darauf zu achten, dass die Nummern der einzelnen Pins sich dadurch ändern. Wir haben die WiringPi – Bibliothek installiert, darum haben wir folgende Pins für den ersten Probedurchlauf mit unserer LED verwendet: Pin-Name GPIO 5 GPIO 6 GPIO 13 GPIO 19 GPIO 26 GPIO 21 Pin 29 31 33 35 37 40 WiringPi 21 22 23 24 25 29 Abbildung 20: Tabelle der verwendeten Pins mit Pinnamen Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 50 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Nachdem die Bibliothek eingebunden ist können die Pins angesteuert werden. Die Pins werden über einen einfachen Befehl in C angesteuert. Beispiel der Ansteuerung eines Pins: #include <wiringPi.h> #include<stdio.h> int main() if (wiringPiSetup() == -1) return 1; pinMode( 21, OUTPUT); digitalWrite(21, 0); Folgendes Bild zeigt den Programmabschnitt, der die Ansteuerung aller von uns verwendeten Pins enthält: Abbildung 21: Ansteuerung der GPIO-Pins Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 51 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.10 Einbindung der GPIO-Pins ins Programm Die Ansteuerung der richtigen GPIO-Pins und somit die Ansteuerung der jeweiligen Spinde, haben wir an das Ende unseres bisherigen Programmes geschrieben. Wir haben für die Ansteuerung eine neue Variable definiert „g_spindnr“. In diese Variable wird nun die Spindnummer eingeschrieben, die nachdem Einlesen der UID der edu.card von der Datenbank ausgegeben wird. Abbildung 22: Variablenvereinbarung von g_spindnr Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 52 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Dies geschieht natürlich automatisch. Nachdem die Spindnummer in der Variable steht, kann der Binärcode, der auf diese Spindnummer zutrifft, an die GPIO-Pins gesendet werden. Dies haben wir über if-Abfragen realisiert. Die GPIO-Pins werden nun angesprochen und der Spind öffnet (in unserem Fall leuchtet die LED). Abbildung 23: Generieren des Binärcodes Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 53 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 8.11 Komplettes Programm Die Zusammenführung der einzelnen Teile gestaltete sich nicht ganz so einfach wie erhofft. Als allererstes mussten wir alle Bibliotheken, deren Notwendigkeit sich mit den einzelnen Abschnitten angesammelt hat, einbinden. Das eigentliche Programm hat durch den Aufbau einer Verbindung zur Datenbank begonnen. In diesem Programmabschnitt haben wir außerdem die Variable „g_spindnr“ definiert. Der nächste Abschnitt ist die Einbindung des Kartenlesers, der Verifizierung und des Einlesens der UID. Die Beendung der Kommunikation mit der Datenbank war der nächste Schritt. Die Kommunikation mit der Datenbank darf erst beendet werden, nachdem die Abfrage der Spindnummer für die eingelesene UID erfolgt ist. Der letzte Schritt war es nun die GPIO-Pins des Raspberry Pi 2 richtig anzusteuern. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 54 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Programm: Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 55 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 56 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Die Länge des „ATS“ wurde für die Darstellung verändert, ebenso wurden einige Leerstellen entfernt um alles auf einer Seite darstellen zu können. Abbildung 24: Unser Programm Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 57 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Der folgende und zugleich auch letzte Abschnitt, wiederholt sich je nach Anzahl der Spinde. In unserem Fall haben wir uns für vier Wiederholungen entschieden und können somit vier verschiedene LEDs ansteuern. Abbildung 25: Generieren eines zweiten Binärcodes Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 58 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 9. Erste angesprochene LED Hier ist unser erster gelungener Versuch eine LED über den Raspberry PI anzusteuern. Hierbei wurde noch keine binäre Codierung verwendet sondern nur einen GPIO-Pin und Ground. Der Vorwiderstand zur LED beträgt 640 Ohm und wird durch einen 560 Ohm Widerstand mit 5% Toleranz und einen 86 Ohm Widerstand mit 1% Toleranz umgesetzt. In den Bildern: „Bild 1“ und „Bild 2“, ist der GPIO auf 0 gesetzt und die LED ist aus. In den Bildern: „Bild 3“ und „Bild 4“, wurde GPIO auf 1 gesetzt und die LED leuchtet (Spind öffnet). Bild 1 Bild 2 Bild 4 Bild 3 Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 59 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 10. Platine Der Aufbau unserer Platine für die Ansteuerung der einzelnen Spinde wurde so realisiert, dass der Code, der von den GPIO-Pins des Raspberry Pi 2 generiert wird, mit dem am jeweiligen Spind eingestellten Code verglichen wird. Dieser Vorgang geschieht mithilfe einer „Decoder – Schaltung“: Vom Raspberry Pi 2 kommen sechs Leitungen, deren Spannungspegel entweder auf logisch 0 oder 1 liegt, und werden an die Pins eines PIC angeschlossen. Insgesamt entsteht somit ein binärer Code, den der PIC mit einem anderen, voreingestellten Code vergleicht. Der zweite Code, der die Basis des Vergleiches darstellt, wird durch sechs Schalter bestimmt. Diese Schalter können entweder auf +5V (entspricht logisch 1) oder auf Masse (0V; entspricht logisch 0) geschalten werden. Stimmen die beiden Codes überein, wird der Ausgang, der in weiterer Folge mit den Spinden verbunden wird (in unserem Fall die LED), angesteuert. Sind die Codes nicht ident, passiert nichts weiter und der Spind bleibt geschlossen (hier: die LED leuchtet nicht). In dieser Schaltung fehlt jedoch noch die Leistungselektronik für den 12V Ausgang, der für die Ansteuerung unserer Spinde verwendet wird. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 60 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Abbildung 26: Schaltplan der Platine Abbildung 27: Bestückungsplan Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 61 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Abbildung 28: Bohrplan Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 62 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 11. Möglicher Ausbau Da uns für unser Projekt nur begrenzt Zeit zur Verfügung stand, wurden bei weitem nicht alle Möglichkeiten ausgeschöpft. Wir haben alle unsere gesetzten Ziele erreicht und diese umgesetzt. Trotz allem hatten wir im Hinterkopf eine klare Vorstellung davon wie unser Projekt verbessert werden kann. Zum einen scheitert unser Programm bei der Übersetzung auf den Raspberry Pi, da die Bibliothek für diesen, einen Fehler aufweist. Diesen Fehler zu suchen und zu beheben war uns in der vorgegebenen Zeit nicht möglich. Als ersten Schritt zur Erweiterung, sehen wir die Behebung dieses Problems als Priorität. Als nächstes Problem sehen wir die Tatsache, dass es keine Möglichkeit gibt die UID der edu.card direkt in die Datenbank zu übertragen. Diese muss beim momentanen Stand des Projektes zunächst ausgelesen und dann händisch eingetragen werden. Dazu wäre ein Programm zu schreiben, welches es ermöglicht, die UID direkt beim Zuführen der Karte auf den Kartenleser in die Datenbank einzutragen. Ein etwas komplexerer Schritt wäre es, eine Kommunikation zwischen mehreren Klassenräumen aufzustellen. Dadurch wird die Doppelverwendung einer Karte ausgeschlossen. Das gesamte System könnte außerdem auch ausgebaut werden, sodass nicht nur Spinde geöffnet werden, sondern auch Klassenräume. Die Klassenräume sollten nur von den Schülern der jeweiligen Klasse und von Lehrkräften geöffnet werden können. Des Weiteren könnte auch ein elektronisches Klassenbuch geführt werden. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 63 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 12. Begleitprotokoll gemäß Prüfungsordnung BMHS und Bildungsanstalten §9 (2) Datum 15.09.2015 22.09.2015 29.09.2015 02.10.2015 03.10.2015 06.10.2015 07.10.2015 Datum 13.10.2015 20.10.2015 Datum 08.04.2016 Diplomarbeit: Tätigkeit Bei Herrn Prof.Hopfgartner (HAK Wien 1100) Informationen eingeholt. Informationen mit Herrn Prof. Pühringer ausgetauscht Internetrecherche Internetrecherche Schloss Überlegungen zum Aufbau, Internetrecherche Informationen mit Herrn Prof. Pühringer ausgetauscht / Teile gesucht Bestellung der Teile durchgegangen Tätigkeit Über Programme für Raspberry Pi informiert, Kontakt zu Firma Gantner aufgenommen Erste Teile erhalten, Betriebssystem für Raspberry Pi auf SD-Card gespielt Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 64 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 27.10.2015 Internetrecherche zu Datenbanken 28.10.2015 Internetrecherche zu Datenbanken 01.11.2015 Elektrischen Türöffner gesucht, Überlegungen zum Spind dokumentiert 03.11.2015 04.11.2015 Mit Herrn Prof. Loibner Datenbank besprochen Internetrecherche zu Datenbanken Datum 06.11.2015 Tätigkeit Erste Datenbank erstellt und getestet 10.11.2015 Internetrecherche zu C , erste Übungsbeispiele zu C, Datenbank bearbeitet 07.11.2015 11.11.2015 13.11.2015 17.11.2015 Datum 08.04.2016 Diplomarbeit: Datenbankbefehle getestet, Überlegungen zur weiteren Bearbeitung angestellt C Programm, fopen C Programm erweitert , Daten aus einem Dokument werden ausgelesen und in ein neues Dokument eingefügt. Download von SQLite-Bibliothek für C, Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 65 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 24.11.2015 Verbindungsversuch zwischen Raspberry Pi & Laptop (erfolglos) Arbeit am C Programm Datum 01.12.2015 Tätigkeit Sqlite Datenbank in C mit Programm verbunden 14.12.2015 Arbeiten am C Programm 15.12.2015 Verbindung zwischen Raspberry Pi 2 und TouchDisplay eingerichtet 16.12.2015 Verbindung des Raspberry Pi 2 mit einem HDMIMonitor zur erleichterten Bearbeitung 12.01.2016 RFID reader an Raspberry Pi angeschlossen, einlesen der edu.cards - erste Versuche 19.01.2016 Befehle zur automatischen Weiterverarbeitung ins C Programm eingefügt 26.01.2016 Datum 08.04.2016 Diplomarbeit: SQLite-Bibliothek auf den Raspberry Pi geladen Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 66 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik Datum 02.02.2016 Tätigkeit nfc-poll Programm umgeschrieben 16.02.2016 Verknüpfung der einzelnen Programme am Raspberry, Probleme mit der SQLite-Bibliothek 23.02.2016 Ansteuerung der GPIO Pins des Raspberry Pi 2 01.03.2016 Layout der Platinen (Spinde) entworfen 08.03.2016 Zuordnung der binären Codes zu den einzelnen Spinden (in extra Programm) 09.02.2016 15.03.2015 nfc-poll Programm umgeschrieben zur Weiterverarbeitung der Daten Programm mit den Binärcodes in unser Hauptprogramm eingefügt Alle vorangegangenen Arbeiten wurden von beiden Projektkandidaten im Team durchgeführt. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 67 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik 13. QUELLENVERZEICHNIS alldatasheet.com. „PN532 datasheet(2/27 Pages) NXP | Near Field Communication (NFC) controller“. Zugegriffen 23. März 2016. http://html.alldatasheet.com/htmlpdf/595327/NXP/PN532/110/2/PN532.html. „Ausführliche SELECT-Struktur – Wikibooks, Sammlung freier Lehr-, Sachund Fachbücher“. Zugegriffen 23. März 2016. https://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_Ausf%C3 %BChrliche_SELECT-Struktur. „Bloodshed Software - Dev-C++“. Zugegriffen 23. März 2016. http://www.bloodshed.net/devcpp.html. „Char (Datentyp)“. Wikipedia, 13. Mai 2014. https://de.wikipedia.org/w/index.php?title=Char_(Datentyp)&oldid= 130356613. „C (Programmiersprache)“. Wikipedia, 5. März 2016. https://de.wikipedia.org/w/index.php?title=C_(Programmiersprache) &oldid=152193367. „Datenbank“. Wikipedia, 2. März 2016. https://de.wikipedia.org/w/index.php?title=Datenbank&oldid=15208 7252. „Einplatinen-Computer: Raspberry Pi für Profi-Anwendungen - Seite 2 crn.de“. Zugegriffen 23. März 2016. http://www.crn.de/themenwelt/windows-10/artikel-109191-2.html. „Integer (Datentyp)“. Wikipedia, 28. Jänner 2016. https://de.wikipedia.org/w/index.php?title=Integer_(Datentyp)&oldi d=150772542. „Introducing the Raspberry Pi B+ » DesignSpark“. Zugegriffen 23. März 2016. http://www.rsonline.com/designspark/electronics/eng/blog/introducing-theraspberry-pi-b-plus. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 68 von 69 htl donaustadt Donaustadtstraße 45 1220 Wien Abteilung für Elektrotechnik „Near Field Communication“. Wikipedia, 25. Februar 2016. https://de.wikipedia.org/w/index.php?title=Near_Field_Communicat ion&oldid=151917472. „NFC auf Raspberry Pi: PN532 Breakout Board“. Zugegriffen 23. März 2016. http://www.schnatterente.net/technik/nfc-raspberry-pipn532-breakout-board. „Raspberry Pi“. Wikipedia, 17. März 2016. https://de.wikipedia.org/w/index.php?title=Raspberry_Pi&oldid=152 586412. „Raspberry Pi 2, Model B.pdf“. Zugegriffen 23. März 2016. http://docseurope.electrocomponents.com/webdocs/1392/0900766b8139232d .pdf. „Raspberry Pi 2.pdf“. Zugegriffen 23. März 2016. http://docseurope.electrocomponents.com/webdocs/144c/0900766b8144c4bc. pdf. „Raspberry Pi: GPIO-Schnittstelle erklärt » Jan Karres“. Zugegriffen 23. März 2016. http://jankarres.de/2015/02/raspberry-pi-gpioschnittstelle-erklaert/. „SQLite“. Wikipedia, 8. März 2016. https://de.wikipedia.org/w/index.php?title=SQLite&oldid=15228837 6. „sunfounder“. Zugegriffen 23. März 2016. http://www.sunfounder.com/index.php?c=downloadscs&a=Manuald etails&id=99&name=Raspberry%20Pi. tutorialspoint.com. „SQLite C/C++ Tutorial“. www.tutorialspoint.com. Zugegriffen 23. März 2016. http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm. „Universal Asynchronous Receiver Transmitter“. Wikipedia, 23. November 2015. https://de.wikipedia.org/w/index.php?title=Universal_Asynchronous _Receiver_Transmitter&oldid=148329749. Datum 08.04.2016 Diplomarbeit: Bearbeiter Max Holub Stefan Sop EduCard - Spindschloss HTBLA Wien 22 Jahrgang: 5AHET Schuljahr: 2015/16 Projektleiter Prof. Joksch Signum: Seite 69 von 69