Kurzfassung Regionalwettbewerb Bremen-Mitte Das Zugangssystem, benannt nach dem nordischen Wächter der Götter Heimdall (altnordisch Heimdallr), arbeitet mit RFID-Chips zur Authentifizierung von Personen. Die RFID-Chips (RFID basiert auf dem englischen Begriff radio-frequency identification und heißt Identifizierung mit Hilfe elektromagnetischer Wellen) werden mit Hilfe eines Masterkeys berechtigt. Beim Einlesen eines berechtigten RFID-Chips, wird die Tür mit Hilfe eines Türsummer geöffnet. Außerdem löst ein Taster eine Klingel aus. Der Raum vor der Tür kann online mit Hilfe einer Kamera in Echtzeit überwacht und der Türsummer über das Internet ausgelöst werden. Der Eingangsbereich wird beim Betreten bei Dunkelheit automatisch beleuchtet. Nach Öffnen der Tür wird der Bereich hinter der Tür beleuchtet. Die Steuerung wird über den Mikrocontroller ARDUINO ausgeführt. Der Mikrocontroller ist mit dem Internet verbunden und kann darüber gesteuert werden. Seite 2/10
Inhaltsverzeichnis KURZFASSUNG... 2 EINLEITUNG... 4 THEORIE... 5 DIE ARDUINO-UMGEBUNG... 5 DIE HARDWARE... 5 DIE SOFTWARE... 6 ARDUINO... 6 XAMPP... 7 webcamxp 5... 7 ERGEBNISSE... 8 RFID-CODE (ARDUINO)... 8 BEWEGUNGSSENSOR-CODE (ARDUINO)... 9 WEBSERVER-CODE / ETHERNET-SHIELD (ARDUINO)... 9 XAMPP... 10 NETZWERK... 10 QUELLEN- UND LITERATURVERZEICHNIS... 11 Seite 3/10
Einleitung Das Ziel des Projektes war es, eine Tür mit Hilfe eines Türsummers öffnen zu lassen. Die Authentifizierung wird durch RFID-Chips, welche eine unverwechselbare Kennung haben, vorgenommen. Ein Taster an einem Bedienungsfeld löst eine Klingel aus, damit die Person, welche vor der Tür steht, auf sich aufmerksam machen kann. Wenn die Helligkeit vor der Tür zu gering ist, wird bei Bewegung oder öffnen der Tür eine Lampe angeschaltet, um den Bereich vor der Tür besser einsehen zu können. ARDUINO hat über ein Ethernet-Shield Verbindung zum Netzwerk, worüber das ARDUINO-Board auch gesteuert werden kann. Eine über der Tür angebrachte Webcam kann über das Netzwerk angesehen werden. Dies ist mit Hilfe der streaming-software webcamxp 5 möglich, welche auf einem lokalen Computer installiert ist. Auf diesem Computer ist auch die Software XAMPP installiert, welche einen Server erstellt und alles benutzerfreundlich auf einer Internetseite darstellt. Seite 4/10
Theorie Die ARDUINO-Umgebung Die ARDUINO-Plattform ist eine aus Soft- und Hardware bestehende Physical- Computing-Plattform. Beide Komponenten sind im Sinne von Open Source quelloffen, d.h. sie können von jedem Anwender benutzt und verändert werden. Die Hardware besteht aus einem einfachen I/O-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Das ARDUINO Board Mega Die Entwicklungsumgebung beruht auf der Programmiersprache Processing (einem Java- Dialekt), die vor allem für Nicht-Informatiker gedacht ist. ARDUINO kann benutzt werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren. Die Hardware Die Hardware des ARDUINO Mega basiert auf einem Atmel AVR-Mikrocontroller dem ATmega1280. Alle Boards werden entweder über USB oder eine externe Spannungsquelle mit 5-9 Volt versorgt und verfügen über einen 16 MHz-Quarzoszillator. Der Mikrocontroller ist mit einem Boot-Loader (spezielle, grundlegende Software zum Betrieb des ARDUINO-Boards) vorprogrammiert, wodurch die Programmierung direkt über die USB Schnittstelle, ohne externes Programmiergerät erfolgen kann. Die ARDUINO-Boards stellen die meisten I/O-Pins des Mikrocontrollers zur Nutzung für elektronische Schaltungen zur Verfügung. Die aktuell gängigen Boards bieten 54 digitale I/O-Pins und 16 analoge Ein- und Ausgänge. Für die Erweiterung werden vorbestückte oder teilweise unbestückte Platinen - sogenannte Shields - angeboten, die auf das ARDUINO-Board aufsteckbar sind. Es können aber auch z.b. Steckplatinen für den Aufbau von Schaltungen verwendet werden. Seite 5/10
Die Software ARDUNIO ARDUINO bringt eine eigene Integrierte Entwicklungsumgebung (Abkürzung: IDE, von englisch: integrated development environment) mit. Dabei handelt es sich um eine plattformunabhängige Java-Anwendung. Die Software läuft unter Windows, Mac und Linux. Die Programmiersprache Processing basiert auf der stark vereinfachten Programmierung in C/C++. Die ARDUINO-IDE bringt einen eigenen Code- Editor mit und verfügt über einen integrierten Compiler (Programmüber-setzer) zur Überprüfung des Programm-codes. Zusätzlich wird die Programmierung durch weitere ARDUINO-Libraries (Programmbibliotheken) stark vereinfacht. Der ARDUINO Code-Editor Für ein funktionstüchtiges Programm genügt es, zwei Funktionen zu definieren: void setup() - wird beim Start des Programms aufgerufen, nützlich um z.b. Pins als Eingang oder Ausgang zu definieren und void loop() - wird durchgehend durchlaufen, solange bis das ARDUINO-Board ausgeschaltet wird. XAMPP XAMPP ist eine Software welche mehrere freie Programme des LAMP-Systems verknüpft. Das LAMP-System ist eine Akronym auf auf Linux basierenden Programmen und setzt sich aus dem Worten Linux (Betriebssystem), Apache (Webserver), MySQL (Datenbanken) und PHP (serverseitige Scriptsprache) zusammen. Weitere nützliche Tools wie FileZilla (FTP-Server) oder Mercury (Mailserver) sind für Entwickler gedacht, damit diese ihre Seiten ohne Anmietung von Servern und unter Ausschluss der Öffentlichkeit testen können. Die Umgebung wird also nur auf dem Computer simuliert; die Server sind also nur virtuell vorhanden. XAMPP ist kostenlos verfügbar. webcamxp 5 webcamxp 5 simuliert einen Webserver, welcher ein Livebild sendet, also die einzelnen Bilder ständig aktualisiert. Somit können die Bilder im Netzwerk aufgerufen werden. Die Basisversion von webcamxp 5 ist kostenlos verfügbar. Seite 6/10
Ergebnisse Zur Umsetzung des Projektes haben wir ARDUINO ausgewählt, weil es sich für unsere Zwecke gut eignete und es sich um eine Open-Source-Plattform handelt. Dadurch war das Projekt nicht an ein Betriebssystem gebunden und frei erweiterbar mit zahlreichen Shields, welche dem ARDUINO weitere Funktionen ermöglichen. Der Türsummer, sowie die Lampe vor der Tür, werden wegen der großen Stromaufnahme mit einem Relais geschaltet. Relais werden wie LEDs bei ARDUINO als Ausgang definiert und können bei Bedarf an- und ausgeschaltet werden. Im folgenden Abschnitt werden Teile des Programmcodes dargestellt und ihre Funktionsweise beschrieben. RFID-Code (Arduino) Um die Codes des 125 khz Chips auszulesen wird ein 125 khz-empfänger benötigt. Die Chips müssen in die Nähe der Antenne gehalten werden, damit die Kennung ausgelesen werden kann. Der Abstand sollte kleiner als 20mm sein, um ein Ergebnis zu erzielen. Der Leservorgang geschieht innerhalb weniger Millisekunden. Der Code ist in einer Methode rcode() gespeichert, um eine geringe Kohäsion zu erreichen. Die Methode kann mit den Methodennamen im Programm aufgerufen werden. Hier ein Ausschnitt aus dem Programmcode: void rcode() {... if(bytesread >= 12) //Wenn die Zeichenkette vollständig ist String code="code:"; //der String wird definiert { Serial.print("Tag: ["); for(int i=0; code[i]!='\0' ; i++) /* i wird 0 gesetzt und immer um 1 erhöht solange es etwas an Stelle i des Strings gibt */ { Serial.print(code[i]); //Der eingelesene Code wird an Stelle i übergeben Serial.println("]"); Serial.println(code); Bewegungssensor-Code (Arduino) Der Bewegungssensor arbeitet mit infrarotem Licht und einem Erkennungswinkel von 110. Der Sensor registriert die Reflektion der Körper. Wenn sich etwas vor dem Sensor bewegt, verändert sich die Reflektion und der Sensor löst aus. Seite 7/10
Webserver-Code/Ethernet-Shield (Arduino) Das ARDUINO Ethernet-Shield ist über ein RJ45-LAN-Kabel mit dem Netzwerk (siehe Netzwerk) verbunden. Der ARDUINO verbindet sich mit dem Netzwerk über eine im Code festgelegt IP-Adresse, über die er erreichbar ist. Die Internetseite wird mit HTML erstellt. Zum Steuern des ARDUINO werden Button erstellt. Wenn diese gedrückt werden, wird der Name des Buttons die Variable und ARDUINO führt den Code der if-bedingung aus. #include <SPI.h> #include <Ethernet.h> //es werden packages eingefügt //der Server wird konfiguiert byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; byte ip[] = { 192,168,1, 177 ; byte gateway[] = { 192, 168, 178, 1 ; byte subnet[] = { 255, 255, 255, 0 ; Server server(80); //Port wird auf 80 gesetzt. void setup() { Ethernet.begin(mac, ip, gateway, subnet); //Serverkonfiguration wird übernommen server.begin(); //Server wird gestartet void loop { client.println("<td align='center' bgcolor='#222222'> <form method=get><input type=submit name=13 value='an'></form></td>"); //html-text eines Buttons in einer Tabelle XAMPP Auf dem Webserver befindet sich ein Template, worin Frames eingebunden sind. Ein Template ist eine Vorlage, die mit Inhalt gefüllt wird. Ein Frame ist ein Fenster auf einer Seite, die den Inhalt einer anderen Seite zeigt. Für die Darstellung der gestreamten Webcam wird javascript verwendet. Der Frame beinhaltet die Seite des ARDUINO Webservers über die der ARDUINO gesteuert werden kann. <html>... <iframe src="http://192.168.1.177" width="320" height="400" name="steuerung_iframe" style="border:none; float:right;" >.. </html> Seite 8/10
Netzwerk Um ein lokales Netzwerk einzurichten ist ein Netzwerkgerät notwendig. Bei einem Netzwerkgerät handelt es sich um einen Router, der die Geräte miteinander verbindet und somit ein Netzwerk schafft. Ein handelsüblicher DSL-Router kann genauso verwendet werden, wie ein Switch oder Netzwerk-Hub. Der XAMPP-Webserver wird über die statische IP-Adresse der Computers auf dem XAMPP installiert und geöffnet. Die IP kann manuell eingerichtet werden, kann aber auch von dem Anschluss-Port an dem der Computer angeschlossen ist abhängig sein. Die Geräte können mittels RJ45-LAN-Kabel oder über wireless lan (WLAN) mit dem Router verbunden sein. Seite 9/10
Quellen- und Literaturverzeichnis Kleine, Preiß, Prochnow: HEIMDALL - Der intelligente Türsteher http://markus-hoelzle.de/webcam-steuerung.html: 18.01.2012, Markus Hölzle, Ferngesteuerte Webcam http://de.wikipedia.org/wiki/arduino-plattform: 25.01.2012, Arduino Plattform http://static3.watterott.com/20091062-1.jpg: 24.01.2012, RFID Lesegerät http://arduino.cc/playground/learning/prfid: 23.01.2012, RFID Lesegerät Code http://jleopold.de/2010/08/10/arduino-als-webserver/arduino_webserver/: 20.01.2012, Raoul Hentschel, Arduino Webserver für Steuerung des Arduino http://www.webcamxp.com/home.aspx, 24.12.2011, Webcam im Netzwerk und Internet Manuel Odendahl, Julian Finn & Alex Wenger: Arduino Physical Computing für Bastler, Designer und Geeks, Köln 2010 Seite 10/10