Fachhochschule der Wirtschaft FHDW Mettmann Seminararbeit Industrie 4.0 – Sortierung eingehender Postpakete am Beispiel einer technikbasierten LEGO-Konstruktion Prüfer: Peter Tutt Verfasser: Steffen Schwarz Stettiner Straße 1 D-42489 Wülfrath Matrikelnummer: 9215767 Studiengang: Wirtschaftsinformatik Spezialisierungsbereich: IT-Consulting Abgabetermin: 11.05.2015 Danksagung I Danksagung Jede wissenschaftliche Arbeit trägt die Handschrift des Verfassers, doch ist sie niemals die Arbeit eines Einzelnen. An dieser Stelle möchte ich allen danken, die diese Seminararbeit durch ihre fachliche und persönliche Unterstützung begleitet und zu ihrem Gelingen beigetragen haben. Ganz besonders danke ich meinem Dozenten Peter Tutt für die interessanten und inspirierenden Gespräche im Verlauf des FHDW-Prüfungsmoduls sowie für die Betreuung und wissenschaftliche Unterstützung vor und während der Bearbeitungsphase. Gerne möchte ich meinem technikbegeisterten Bekannten Tobias van Ark danken, der sich insbesondere in der Programmierungsphase des Projekts mit seinem Fachwissen eingebracht und mich somit enorm unterstützt hat. Des Weiteren danke ich meiner Lebensgefährtin Joana Jantke und meinem Bekannten David Haase, die gemeinsam bei der Optimierung der LEGO-Konstruktion mitgewirkt haben. Weiterhin danke ich Janine van Ark, Tim Dierich und Denise Waligorski für ihre Unterstützung hinsichtlich der Bereitstellung von Räumlichkeiten, Verpflegung und Unterhaltung während der Projektarbeiten. Schließlich gebührt ganz besonderer Dank meiner Mutter Annette Schwarz, die mich während meines gesamten, beruflichen Werdegangs bis heute immer unterstützt und stets an mich geglaubt hat. Abschließend gilt mein Dank Wladimir Kremer. Als ich Anfang 2008 im Rahmen meines Fachoberschulreifeerwerbs ein Praktikum zum Fahrzeuglackierer bei der Firma Cron & Mainka e.K. absolvierte, empfahl der mir zugeteilte Betreuer, sich aus diversen Gründen anderweitig zu orientieren. Er nannte mir die IT-Branche und legte damit den Grundbaustein für meinen beruflichen Werdegang. Inhaltsverzeichnis II Inhaltsverzeichnis Danksagung ................................................................................................................. I Inhaltsverzeichnis....................................................................................................... II Abbildungsverzeichnis.............................................................................................. III 1 Einleitung .............................................................................................................. 1 1.1 1.2 2 Grundlagen und Technology Stack ..................................................................... 3 2.1 2.2 2.3 2.4 2.5 3 Erläuterung und Funktionsweise der LEGO-Konstruktion ...................... 8 Installation des Raspberry Pis ................................................................ 8 Programmierung des Steuerungsarms ................................................. 10 Kameramodul-Konfiguration und SimpleCV-Integration ....................... 12 Zusammenspiel zwischen Steuerungsarm und Kameramodul ............. 14 Modulbezogene Netzwerkinstallation................................................................ 15 4.1 4.2 5 Konstruktion aus LEGO-Bausteinen....................................................... 3 Kleincomputer „Raspberry Pi 2 Model B“ ............................................... 3 Programmiersprache Python.................................................................. 4 LEGO-Steuerungsarm und Servomotor „Tower Pro SG90“ .................... 5 Kameramodul „Raspberry Pi Camera Rev 1.3“ und Computer Vision mit SimpleCV ............................................................................................... 6 Praktische Umsetzung.......................................................................................... 8 3.1 3.2 3.3 3.4 3.5 4 Problemstellung und Vorgehensweise ................................................... 1 Industrie 4.0 und Projekt ........................................................................ 2 Installation des Apache-Webservers .................................................... 15 Auswertung der Glasmurmeldurchläufe ............................................... 15 Schlussbetrachtung ........................................................................................... 16 5.1 5.2 5.3 5.4 Persönliches Fazit ................................................................................ 16 Zusammenfassender Projektaufwand .................................................. 16 Probleme des Projekts ......................................................................... 17 Material-Einkaufsliste ........................................................................... 17 Quellenverzeichnis ................................................................................................... 19 Internetquellen ................................................................................................... 19 Eidesstattliche Erklärung ......................................................................................... 21 Abbildungsverzeichnis III Abbildungsverzeichnis Abbildung 1: Erfassungsbereich der Kamera ................................................................ 3 Abbildung 2: LEGO-Steuerungsarm.............................................................................. 5 Abbildung 3: Steuernder Servomotor ............................................................................ 6 Abbildung 4: Kameramodul Rev 1.3 ............................................................................. 6 Abbildung 5: Erkennung der Glasmurmeln mit SimpleCV ............................................. 7 Abbildung 6: Aufbewahrungskiste für Glasmurmeln ...................................................... 8 Abbildung 7: Interface des Installationsmanagers Noobs .............................................. 9 Abbildung 8: Steckplatine ........................................................................................... 10 Abbildung 9: Verwendung der GPIO-Pins ................................................................... 11 1 Einleitung 1 Einleitung 1.1 Problemstellung und Vorgehensweise 1 Der Verfasser der vorliegenden Seminararbeit absolviert das 5. Semester des Bachelor-Studiums der Wirtschaftsinformatik (mit Spezialisierung auf IT-Consulting) an der Fachhochschule der Wirtschaft (kurz: FHDW) und bearbeitet mit dieser Ausarbeitung das Prüfungsmodul „Netzwerke“. Hierzu stellt der Modulverantwortliche und FHDW-Dozent Peter Tutt in seinen Vorlesungen den Raspberry Pi vor und im Zuge dessen eine Reihe von Tutorials, um den besagten Kleincomputer kennenzulernen. Während die angehenden Hochschulabsolventen in Gruppen arbeiten und den Raspberry Pi „studieren“, erarbeiten sie mögliche Problemstellungen, die es zu bewältigen und in einer Seminararbeit schriftlich auszuarbeiten gilt. Durch Eigeninitiative und Recherchearbeit inspiriert schließlich ein YouTube-Video mit Namen „C# Lego ball sorter using a Raspberry Pi & OpenCV“. Es zeigt, wie ein Vater mit seinem Sohn ein Murmelsortiersystem aus LEGO-Steinen und dem Raspberry Pi baut. In Anlehnung an diverse Gespräche mit dem Modulverantwortlichen über das Thema „Industrie 4.0“ entsteht ein Seminararbeitsthema: Der genannte Verfasser bearbeitet das Thema „Industrie 4.0 – Sortierung eingehender Postpakete am Beispiel einer technikbasierten LEGO-Konstruktion“. Hierbei wird, einfacher ausgedrückt, die DHL-Zustellbasis nachgestellt, die im nachfolgenden anhand der Thematik Industrie 4.0 (Kapitel 1.2) ausführlicher erläutert wird. Zu berücksichtigen ist, dass ein Netzwerkbezug hergestellt wird, um dem Titel des Moduls gerecht zu werden (Kapitel 4). Der Dozent stellt den Großteil der Hardware. Der Student ist für die Beschaffung weiterer Bauteile selbst verantwortlich. Die Seminararbeit wird nach Rücksprache (wie vereinbart) am 11. Mai 2015 im FHDW-Studierendensekretariat eingereicht. Für die vorliegende Seminararbeit bzw. dessen Bestandteile werden Grundkenntnisse im Bereich Betriebssysteme (vorzugsweise UNIX/Linux-Systeme) vorausgesetzt. Sich logisch aus dem Kontext ableitende Befehle werden nicht gesondert genannt. 1 Einleitung 1.2 Industrie 4.0 und Projekt 2 Die in Kapitel 1.1 geschilderte Problematik lässt sich mit dem Begriff „Industrie 4.0“ in Verbindung bringen. Die Wirtschaft steht kurz vor der vierten industriellen Revolution. Durch das Internet getrieben, wachsen die reale und die virtuelle Welt immer mehr zusammen. Mit dem Zukunftsprojekt Industrie 4.0 soll dieser Prozess unterstützt werden. Das Projekt zielt darauf ab, die deutsche Industrie in die Lage zu versetzen, für die Zukunft der Produktion gerüstet zu sein (aus der Perspektive des Jahres 2025, mit Blick zurück auf die „Vergangenheit“ des Jahres 2012) und die für Industrie 4.0 notwendige Automatisierungstechnik intelligenter zu machen, um somit die Menschen bei ihren Tätigkeiten besser zu unterstützen.1 So zeigt das vorliegende Hochschulprojekt „Sortierung eingehender Postpakete“, wie Glasmurmeln (Darstellung der Postpakete) durch einen Parcours (Darstellung verschiedener Fließbänder) laufen, dabei von einer Kamera (Darstellung des Paketscanners) erfasst und gelesen werden, um die Objekte schließlich durch einen Steuerungsarm nach Farbe (Darstellung der Postleitzahlen) zu sortieren. Zu vergleichen ist dieser Prozess mit der DHL-Zustellbasis.2 1 Vgl. Bundesministerium für Bildung und Forschung (o. J.), Online im Internet. 2 Vgl. optel Media Services GmbH (o. J.), Online im Internet. 2 Grundlagen und Technology Stack 3 2 Grundlagen und Technology Stack 2.1 Konstruktion aus LEGO-Bausteinen Als Grundgerüst der Anlage gilt das zum größten Teil aus LEGO-Bausteinen bestehende Konstrukt. Es besitzt mehrere weiße und schwarze Steine, die die Bahn darstellen – eine exakte Anzahl von Steinen ist nicht zu definieren, da das Konstrukt zum einen ohne Bauanleitung erstellt wurde, aber zum anderen auch ständig (als fortlaufendes Projekt) erweitert wird. Besonders interessant ist der Erfassungsbereich der Kamera (Abbildung 1: Erfassungsbereich der Kamera). Die Konstruktion hätte auch in komplett bunten Steinen gebaut werden können, wie es anfangs im Rahmen der letzten Vorlesung an der Fachhochschule der Wirtschaft auch der Fall gewesen ist. Jedoch fiel dann im ersten Abbildung 1: Erfassungsbereich der Kamera Projektmeeting auf, dass das Kameramodul zum Einsehen der Glasmurmeln dessen Farbcodes benötigt. Bei beispielsweise roten Bausteinen im Erfassungsbereich und einer roten durchrollenden Murmel, käme es zu Komplikationen. Abschließende Empfehlung: Es wird eine feste Unterlage (hier: Sperrholzplatte) benötigt, auf der die Konstruktion ihren Platz findet, um dessen Stabilität sowie einen reibungslosen Transport zu gewährleisten. 2.2 Kleincomputer „Raspberry Pi 2 Model B“ Um die im Einleitungsteil erwähnte Problematik lösen und die LEGO-Konstruktion zum Leben erwecken zu können, kann der Kleincomputer Raspberry Pi Abhilfe schaffen. Der Raspberry Pi ist ein winziger Computer, dessen Grundfläche etwas größer als die einer Kreditkarte ist. Der trotz seiner Größe vollwertige und Linux-basierte Computer 2 Grundlagen und Technology Stack 4 dient u. a. der Steuerung elektrischer Geräte, wie es die vorliegende Ausarbeitung näher beschreibt. Im Hochschulprojekt wird die aktuellste Version des Raspberry Pis verwendet: der Raspberry Pi 2 Model B. Die größte Neuerung gegenüber dem im Juli 2014 vorgestellten Raspberry Pi Model B+, findet sich im Inneren: Statt eines einzelnen ARM-11Kernes mit maximal 700 Megahertz besitzt der Computer nun insgesamt vier CortexA7-Kerne mit bis zu 900 Megahertz. Für ein weiteres Leistungsplus sorgt der vergrößerte Arbeitsspeicher: Hier kommen statt 512 nun 1.024 Megabyte zum Einsatz. Die Grafikeinheit bleibt mit dem bis zu 250 Megahertz schnellen VideoCore-IV-Chip von Broadcom hingegen unangetastet.3 Der Kleincomputer eignet sich somit bestens, um das vorgestellte Projekt zu realisieren. Ein Punkt ist unbedingt zu beachten: Die Platine kommt ohne eigenes Betriebssystem – daher muss dieses vor der Verwendung des Geräts manuell nachgepflegt werden. Weitere Informationen zur Installation des Raspberry Pis sind dem Kapitel 3.2 zu entnehmen. Um den Raspberry Pi ordnungsgemäß und ohne Komplikationen nutzen zu können, empfiehlt es sich, das folgende Zubehör zu verwenden: Netzteil und Gehäuse für den Raspberry Pi, Kühlkörper für den Raspberry Pi, SD-Karte für den Raspberry Pi, HDMIKabel für den Monitoranschluss sowie Monitor, Maus, Tastatur und Netzwerkkabel. Funktionsweise und Nutzen der einzelnen Objekte sind bei Bedarf nachzulesen und werden im Rahmen dieser Ausarbeitung nicht weiter erläutert. 2.3 Programmiersprache Python Die in diesem Projekt verwendete Programmiersprache ist die Sprache Python und nicht C#, wie im erwähnten Tutorial gezeigt. Der Grund hierfür, ist die Komplexität der Heran- und Vorgehensweise, da nicht ausreichende Anleitinformationen vorliegen. Die Python-Skripte sind das eigentliche Herzstück des Projekts. Diese Skripte steuern die Kamera beziehungsweise kontrollieren das erfasste Bild. Entsprechend wird der Servomotor in Bewegung gesetzt – auch hierfür eignet sich Python bestens. 3 Vgl. Schmidt, Florian (2015), Online im Internet. 2 Grundlagen und Technology Stack 5 Python ist eine dynamische, also interpretierende Script-Programmiersprache, die einst vom Niederländer Guido van Rossum entwickelt wurde. Python unterstützt die wichtigsten Programmierparadigmen heutiger Software-Entwicklungsmethoden: strukturierte Programmierung, objektorientierte Programmierung (OOP) und aspektorientierte Programmierung (AOP). Die Stärke der Programmiersprache Python ist die schnelle Umsetzbarkeit von Ideen, die das sogenannte Rapid Prototyping (rasante Entwicklung) von Software möglich macht, wie es im Rahmen dieses Projekts realisiert wurde. Weitere Informationen hierzu sind den Kapiteln 3.3 und 3.4 zu entnehmen.4 2.4 LEGO-Steuerungsarm und Servomotor „Tower Pro SG90“ Zwei weitere wichtige Bestandteile des Projekts sind neben dem bereits genannten Raspberry Pi, Bauelementen auch der bestehende aus LEGO- Steuerungsarm sowie ein programmierbarer Servomotor. Der Steuerungsarm (Abbildung 2: LEGOSteuerungsarm) besteht aus diversen kleinen Bausteinen, die gemeinsam eine HebelfunktiAbbildung 2: LEGO-Steuerungsarm on darstellen – es liegt auch hier keine Bauanleitung vor. Es ist sicherzustellen, dass der Hebelarm nicht zu kurz und nicht zu lang ist, da er sonst die später definierten Drehungen nicht erfolgreich durchführen kann. Zusammengehalten werden die einzelnen Komponenten von einer typischen LEGOStange, die sich mit dem Servomotor verbinden beziehungsweise daran befestigen lässt. Hierzu muss selbstverständlich ein Loch im Bahnboden berücksichtigt werden. Richtet man nun seinen Blick nicht auf die Bahn, sondern unter die Bahn, ist die erwähnte LEGO-Stange zu sehen (Abbildung 3: Steuernder Servomotor). An dieser ist der Servomotor zu befestigen, damit eine erfolgreiche Verbindung zwischen den einzelnen Elementen gewährleitet werden kann. 4 Vgl. Python Software Verband e.V. (o. J.), Online im Internet. 2 Grundlagen und Technology Stack 6 In diesem Projekt wird der Servomotor „Tower Pro SG90“ verwendet. Er besitzt eine Operationsgeschwindigkeit von 0,12 Sekunden pro 60 Grad, eine Drehkraft von 2 Kilogramm pro Zentimeter, eine Arbeitstemperatur von -30 bis +60 Grad Celsius und eine Arbeitsspannung von 3,5 bis 8,4 Volt. Vergleichbare Modelle (wie beispielsweise der Servomotor „Hextronik HXT900“) können ebenfalls verwendet werden. Der Servomotor kommt selbstverständlich nicht LEGOAbbildung 3: Steuernder Servomotor kompatibel vom Hersteller. Daher empfiehlt es sich, ein LEGO-Rädchen mit Sekundenkleber an einem der kleinen Hebelarme zu befestigen. Die Praxis zeigt, wenn auch selbstverständlich, dass der Sekundenkleber unter keinen Umständen in den Innenraum gelangen darf – das führt automatisch zur Neubeschaffung. 2.5 Kameramodul „Raspberry Pi Camera Rev 1.3“ und Computer Vision mit SimpleCV Ein weiteres Herzstück des Projekts ist das Kameramodul „Raspberry Pi Camera Rev 1.3“ (Abbildung 4: Kameramodul Rev 1.3). Die Kamera wurde speziell für den Raspberry Pi entwickelt. Die hier verwendete Kamera ist das neueste Modell mit der aktuellen Version „Revision 1.3“. Sie ist mit 24 × 25 mm annähernd quadratisch, knapp 9 mm hoch und Abbildung 4: Kameramodul Rev 1.3 wiegt nur etwa 3 Gramm. Die inneren Werte entsprechen dem, was gängige Mobiltelefone bieten. Der Fokus ist fest und der Sensor liefert 5 Megapixel. Videos nimmt die Kamera in 1080p, 720p oder 640 × 480 Pixel mit maximal 30 Bildern pro Sekunde auf. Ton er- 2 Grundlagen und Technology Stack 7 fasst das Gerät nicht und Fotos haben eine maximale Auflösung von 2592 × 1944 Pixeln.5 Um das Kameramodul per Python-Code ansprechen zu können, wird die Technologie „Computer Vision“ benötigt, das sogenannte „Computer-Sehvermögen“: das Forschungsgebiet, das Computern und Robotern versucht, Sehvermögen beizubringen. Zur Umsetzung der bekannten Problematik, wird in diesem Projekt SimpleCV genutzt (Abbildung 5: Erkennung der Glasmurmeln mit SimpleCV), bei der es sich um eine umfangreiche Open-Source-Bibliothek zur Comuter Vision handelt. Mit SimpleCV ist es relativ einfach, Bilder von der Kamera auszulesen und auf dem Bildschirm anzuzeigen. Aber was SimpleCV wirkAbbildung 5: Erkennung der Glasmurmeln mit SimpleCV lich auszeichnet, sind seine Algorithmen zur Computer Vision. Neben grundlegenden Bildtransformationen können vor allem Objekte in Bild oder Video gefunden, erkannt und verfolgt werden.6 So wird in Kapitel 3.4 erläutert, wie die besagten Glasmurmeln während Echtzeitübertragung des Kamerabilds verarbeitet werden. 5 Vgl. Schmidt, Maik (2013), Online im Internet. 6 Vgl. Demmig, Thomas (2013), Online im Internet. 3 Praktische Umsetzung 8 3 Praktische Umsetzung 3.1 Erläuterung und Funktionsweise der LEGO-Konstruktion Nachdem nun alle Vorbereitungen auf Basis der erläuterten Grundlagen getroffen wurden und das Technology Stack bereitsteht, geht es an die praktische Umsetzung. Zu Beginn ist die LEGO-Konstruktion anzufertigen. Die Anlage muss im fallenden Modus erstellt werden, damit die Kugeln ins Rollen kommen. Die erste Phase der Konstruktion ist die Einwurfsphase. Hier wird die Glasmurmel in die Bahn geführt. Nach Möglichkeit ist im Anschluss eine Bahn anzufertigen, die, bevor die Kugel ihren Lauf nimmt, das Geschehen verlangsamt, damit das Kameramodul keine Geschwindigkeitsprobleme bekommt und die Glasmurmeln einfangen kann. Es folgt die zweite entscheidende Phase: die Rollphase. Hier sollen die Kugeln in guter Geschwindigkeit ihren Weg Richtung Ziel finden, bevor sie auf den bekannten Steuerungsarm stoßen. Dies ist die dritte und letzte Phase. Der Steuerungsarm entscheidet, in welcher Bahn die Kugeln ins Körbchen rollen. Das bedeutet Abbildung 6: Aufbewahrungskiste für Glasmurmeln folglich, dass es sich anbietet, die letzte Ebene aufzuteilen, damit die Kugeln nicht versehentlich ins falsche Körbchen fallen. Letztlich kann eine Aufbewahrungskiste für die Glasmurmeln gebaut werden (Abbildung 6: Aufbewahrungskiste für Glasmurmeln). Diese Umsetzung ist nicht „verpflichtend“, gibt der Konstruktion aber den letzten Schliff. 3.2 Installation des Raspberry Pis Das nachfolgende Kapitel behandelt die Installation des Raspberry Pis. Im Endeffekt hat der Raspberry Pi keine bestimmte Installation – er ist nach Anschluss direkt einsatzbereit. Jedoch gibt es zwei wesentliche Punkte, die zur bequemen Verwendung des Kleincomputers beitragen: das Betriebssystem und die statische IP-Adresse. 3 Praktische Umsetzung 9 Das verwendete Betriebssystem ist die offizielle Linux-Distribution für den Raspberry Pi, das sogenannte Raspbian. Es bietet eine grafische Benutzeroberfläche, einen vorinstallierten Webbrowser sowie passende Treiber für USB- und HDMI-Geräte. Über die Paketverwaltung lässt sich problemlos weitere Software für den Raspberry Pi nachinstallieren.7 Bei Problemen der Betriebssysteminstallation empfiehlt sich die Verwendung von Noobs (Abbildung 7: Interface des Installationsmanagers Noobs). Noobs ist ein Installationsmanager, der die einfache Installation eines Betriebssystems auf dem Raspberry Pi erlaubt. Der Prozess ist denkbar einAbbildung 7: Interface des Installationsmanagers Noobs fach: Noobs wird aus dem Internet heruntergeladen und auf eine formatierte SD-Karte kopiert. Die SD-Karte wird dann in den Raspberry Pi eingelegt, Maus und Tastatur sowie Monitor werden angeschlossen und zu guter Letzt sorgt der einzusteckende Netzstecker für den Startvorgang des Kleincomputers.8 Des Weiteren ist die Verwendung einer statischen IP-Adresse zu empfehlen: Der Raspberry Pi bekommt im Normalfall im internen Netzwerk mittels des DHCP-Servers des Routers automatisch eine IP-Adresse zugewiesen. Es gibt jedoch den Fall, dass der Router immer wieder eine andere IP-Adresse an den Raspberry Pi vergibt, sodass man nach jedem Neustart nachsehen muss, welche IP-Adresse der Raspberry Pi nun hat. Um genau das zu verhindern, muss der Editor Nano mit Admin-Rechten gestartet und die Daten „Interfaces“ im Ordner Networks editiert werden. Dort lässt sich dann die IP-Adresse von dynamisch (dhcp) in statisch (static) ändern. 7 Vgl. Humpa, Michael (2015), Online im Internet. 8 Vgl. Humpa, Michael (2015), Online im Internet. 3 Praktische Umsetzung 10 Network = Anwender-IP-Adresse nur mit einer 0 am Ende; Broadcast = Anwender-IPAdresse nur mit 255 am Ende; Gateway = Anwender-IP-Adresse mit einer 1 am Ende. Der erste Teil der Konfiguration ist damit erledigt. Die IP-Adresse über das Netzwerkkabel ist nun statisch.9 3.3 Programmierung des Steuerungsarms Ist der Kleincomputer korrekt installiert beziehungsweise konfiguriert und einsatzbereit, geht es an den nächsten Schritt: die Programmierung des Steuerungsarms. Als allererstes ist der Servomotor an eine Steckplatine (das sogenannte Breadboard) mittels Datenleitungen anzuschließen. Der verwendete Servomotor besitzt drei zusammengeführte Steckerleitungen: eine gelbe, eine rote und eine schwarze. Hier sind jeweils (der Einfachheit halber farblich passende) Datenleitungen anzuschließen. Die anderen Enden der Datenleitungen sind an die Steckplatine anzuschließen (Abbildung 8: Steckplatine). Nun wird ein weiterer Satz Datenleitungen auf die Platine gegengeschaltet. Abbildung 8: Steckplatine Im Falle eines Produktionsfehlers im Servomotor, kann es zu Überspannungen auf der Datenleitung kommen. Um den Raspberry Pi vor Schäden zu schützen, wird deshalb ein elektrischer Widerstand von 1kΩ zwischen die Datenleitung geschaltet. Die entsprechenden Gegenstücke der Leitungen werden nun an die GPIO-Pins des Raspberry Pis angeschlossen. Das rote Kabel ist an den Pin 2 zu stecken, das schwarze an Pin 6 und das gelbe an Pin 12 (GPIO 18, später im Quelltext weitere Informationen): 9 Vgl. Gevert, Jan (2014), Online im Internet. 3 Praktische Umsetzung 11 Abbildung 9: Verwendung der GPIO-Pins Nun wird nachfolgender Quelltext in eine Datei mit Namen Servo-0.py geschrieben, die den Servomotor auf seine Ausgangsposition stellt. Besonders interessant ist die letzte Codezeile, die das Tastverhältnis auf 2,5 ändert (englische Schreibweise beachten). Dieser Wert basiert auf logischen geometrischen Berechnungen. Servo-0.py from Tkinter import * import RPi.GPIO as GPIO from time import time GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 100) pwm.start(0) t = time() while time() < t + 1: pwm.ChangeDutyCycle(2.5) 3 Praktische Umsetzung 12 Das entsprechende Gegenstück mit Namen Servo-90.py dreht den Servomotor-Kopf schließlich um 90 Grad. Hier ändert sich lediglich das Tastverhältnis auf 11.5. Servo-90.py from Tkinter import * import RPi.GPIO as GPIO from time import time GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 100) pwm.start(0) t = time() while time() < t + 1: pwm.ChangeDutyCycle(11.5) In beiden Fällen gilt es, das Augenmerk besonders auf GPIO.setup(18, GPIO.OUT) zu richten. Diese Zeile zeigt die Zahl 18 als ersten Parameter der Methode. Diese Zahl steht für den verkabelten GPIO-Pin, wie in obiger Abbildung gezeigt. 3.4 Kameramodul-Konfiguration und SimpleCV-Integration Um das Kameramodul verwenden zu können, muss es zuerst korrekt an den Raspberry Pi angeschlossen werden. Die CSI-Schnittstelle befindet sich zwischen der HDMIund der Ethernet-Buchse. Um das 15-polige Flachbandkabel vom Kameramodul mit der Platine zu verbinden, zieht man den oberen Teil des CSI-Steckverbinders etwas nach oben, steckt dann das Flachbandkabel mit der blauen Markierung zum EthernetAnschluss hin ein und drückt den Verschluss wieder nach unten. Nun muss noch der Kamera-Support in Raspbian aktiviert werden, was sich am Einfachsten über das Konfigurationstools raspi-config erledigen lässt. Dort wird die Kamera dann auf „Enable“ gesetzt. Zum Abschluss muss der Raspberry Pi noch neugestartet werden, damit die Kamera einsatzbereit ist. Um nun im Anschluss daran die neueste Version von SimpleCV zu installieren, müssen folgende Befehle abgesetzt werden: sudo apt-get install git git clone git://github.com/sightmachine/SimpleCV.git cd SimpleCV python 3 Praktische Umsetzung 13 setup.py install Zum Testen könnte nun eine SimpleCV-Shell aufgerufen werden. Dazu wird simplecv in die Kommandozeile eingetragen. Jedoch wird ein einfacher Versuch zu einer Fehlermeldung führen. Das hat den Hintergrund, dass der UV4L-Treiber nachgerüstet werden muss. Ist das entsprechende Paket nachinstalliert, führt es zu einer weiteren Fehlermeldung: SimpleCV:1> camera = Camera() /bin/sh: 1: lsof: not found /dev/video0 does not support memory mapping munmap: Invalid argument munmap: Invalid argument munmap: Invalid argument munmap: Invalid argument Unable to stop the stream.: Bad file descriptor munmap: Invalid argument munmap: Invalid argument munmap: Invalid argument munmap: Invalid argument Doch hier haben die SimpleCV-Entwickler „gepatzt“. Die Praxis zeigt, dass ein einfacher Befehl, wie beispielsweise camera.getImage(), reibungslos funktioniert. Die angezeigte Fehlermeldung ist also zu ignorieren – denn strenggenommen ist es keine. Folglich kann nun die Programmierung mit Python angegangen werden. Als erstes wird das Kamerabild eingefangen und verarbeitet. Das Bild wird mehrfach editiert und umgekehrt, um schließlich alle nicht gewünschten Werte herauszufiltern. In dem nachfolgenden Beispiel wird alles, was sich im erfassten Bereich befindet, das nicht grün ist, verworfen. Der dann grüne Bereich wird mit einem gelben Kreis verdeutlicht. balls-green.py from SimpleCV import * cam = Camera() display = Display() while display.isNotDone(): image = cam.getImage() invert = image.invert() distance = invert.colorDistance(Color.GREEN) segmented = distance.stretch(230, 255).invert() 3 Praktische Umsetzung 14 binar = segmented.binarize(50) blobs = binar.findBlobs() if blobs: circles = blobs.filter([b.isCircle(1.0) for b in blobs]) if circles: image.drawCircle((circles[-1].x, circles[-1].y), 20, SimpleCV.Color.YELLOW, 3) image.show() Die Zeile distance = invert.colorDistance(Color.GREEN) beschreibt die oben genannte Thematik. Hier kann nun für GREEN die Eigenschaft RED eingetragen werden, um das gleiche Ergebnis für rote Elemente zu erhalten. Eine denkbare Erweiterung ist dann, bei gefundenen Kugeln entsprechende Folgeaktivitäten einzuleiten, wie beispielsweise das Speichern der Häufigkeiten. Hierzu wird im nachfolgenden Kapitel 3.5 weiter eingegangen. 3.5 Zusammenspiel zwischen Steuerungsarm und Kameramodul Um nun eine Verbindung zwischen dem Steuerungsarm und dem Kameramodul herzustellen, kann der in Kapitel 3.4 erläuterte Quelltext erweitert werden. Hierzu ist das Abfragestatement anzupassen. Immer dann, wenn eine rote Murmel durch das Kamerabild läuft, wird das PythonSkript Servo-0.py ausgeführt, dass den Servomotor dann in Bewegung bringt. Das gleiche Prinzip ist auch für grüne Erfassungen durchzuführen. Hierbei wird das Gegenstück, das Python-Skript Servo-90.py, ausgeführt. Parallel dazu werden Zählervariablen definiert und hochgezählt. Diese Werte können dann per PHP ausgewertet und auf einer Webseite dargestellt werden (Kapitel 4.2). 4 Modulbezogene Netzwerkinstallation 4 Modulbezogene Netzwerkinstallation 4.1 Installation des Apache-Webservers 15 Im nachfolgenden Kapitel wird allgemein der benötigte Webserver installiert. Damit der Apache-Webserver installiert werden kann, werden Nutzergruppen benötigen – ansonsten schlägt die Installation fehl. Mit den folgenden Befehlen können die Standardnutzergruppen für den Apachen angelegt werden: sudo groupadd www-data sudo usermod -a -G www-data www-data Mit dem folgenden Befehl wird der Apache installiert: sudo apt-get install apache2 apache2-doc apache2-utils Nachdem der Installationsvorgang erfolgreich beendet ist, kann zum Testen bzw. Anzeigen der Webseite der Webbrowser geöffnet und dort die IP-Adresse des Raspberry Pis eingegeben werden. Jetzt kann auf PHP, MySQL und phpMyAdmin zurückgegriffen werden. Es empfiehlt sich, WordPress zu installieren und mittels FTP-Zugang die Verwaltung des Webservers anzugehen. Das nachfolgende Kapitel beschreibt nun die Bereitstellung einer Webseite auf dem Apachen, die die Durchläufe der Glasmurmeln (Kapitel 4.2) aufzeigt. 4.2 Auswertung der Glasmurmeldurchläufe Um die Glasmurmeldurchläufe auswerten zu können, muss auf das Python-Skript zurückgegriffen werden, dass die Findung, Erkennung und Verfolgung der Kugeln abdeckt. Hier ist in entsprechende Abfragestatements eine Quelltextzeile zu ergänzen. Immer dann, wenn eine rote Murmel durch das Kamerabild läuft, muss ein Zähler iRED hochgezählt werden. Bei einer grünen Murmel wird iGREEN hochgezählt. Die Inputwerte werden gespeichert und mittels PHP auf die Webseite übertragen. Eine einfache Abfrage nach Häufigkeit zeigt nun auf, welche Kugelfarbe öfters vertreten war. Dazu sind die beiden Werte lediglich gegenüberzustellen. 5 Schlussbetrachtung 5 Schlussbetrachtung 5.1 Persönliches Fazit 16 Abschließend möchte ich meine persönliche Meinung zum Projekt(verlauf) beifügen. Das Prüfungsmodul „Netzwerke“ ist ein sehr interessantes Projekt gewesen. Von vornerein war klar, dass es durchaus möglich ist, mit einem einfachen Thema zu bestehen. Als motivierter Student hat mich dies jedoch weder zufriedengestellt, noch großartig gereizt. Mein persönliches Ziel war, da es sich bei der zu erbringenden Leistung schließlich um die letzte Prüfungsleistung in meinem Bachelor-Studium handelt, mich einer besonders kniffeligen Herausforderung anzunehmen. Für die vorgegebene Zeitspanne habe ich mir jedoch zu viel zugemutet. Trotz Unterstützung durch den Modulverantwortlichen und Freunde, kam es schließlich zu zeitlichem und wissenskomplexem Engpass. Das Projekt wurde zwar zum größten Teil abgeschlossen, jedoch schließlich nicht zu 100 Prozent beendet. Da das Projekt bei den FHDW-Dozenten Peter Tutt und Alexander Brändle für Interesse gesorgt hat, wird es als fortlaufendes Projekt weitergeführt und in Zusammenarbeit fertiggestellt. Kurz gesagt: Das Prüfungsmodul hat sehr viel Spaß gemacht. Es ist erstaunlich, wie viel Leistungspotenzial ein solcher Kleincomputer mit sich bringt. Einfache Problemstellungen, wie beispielweise die Fernsteuerung von Funksteckdosen oder die webbasierte Steuerung von LED-Lichtern, lassen sich deutlich einfacher umsetzen, als ein großes Projekt in Anlehnung an das Thema „Industrie 4.0“. Das zeigt uns, dass die Menschheit trotz technologischem Fortschritt noch viel lernen muss… 5.2 Zusammenfassender Projektaufwand Der gesamte Projektaufwand beläuft sich auf rund 44 Stunden. Diese setzen sich wie folgt zusammen: Aufwand Projektmeeting 1: 13:00 Uhr bis 23:30 Uhr (10 Stunden, 30 Minuten) Aufwand Projektmeeting 2: 14:00 Uhr bis 01:30 Uhr (11 Stunden, 30 Minuten) Aufwand Projektmeeting 3: 12:00 Uhr bis 24:00 Uhr (12 Stunden) Installation von OpenCV (Alternative zu SimpleCV) über Nacht: 10 Stunden Gesamtaufwand in Stunden: 44 Stunden 5 Schlussbetrachtung 5.3 Probleme des Projekts 17 Das Projekt brachte einige Komplikationen mit sich. Insbesondere die fehlenden Kenntnisse und eine zu komplexe Denkweise in Bezug auf die Verwendung eines PWM-Controllers (wie im Video gezeigt und schließlich doch nicht verwendet) sowie die Installation von OpenCV mit einem zeitlichen Aufwand von rund 10 Stunden, verursachten zeitliche und strapaziöse Probleme. Weitere (kleinere) Probleme werden nicht im Detail aufgezeigt. Die Erfahrung zeigt, dass ein fremdes Themengebiet und eine daraus resultierende neue Herausforderung im Informationstechnologiebereich durchaus Komplikationen mit sich bringen können. 5.4 Material-Einkaufsliste Die nachfolgende Einkaufsliste der Materialien gewährleistet eine erfolgreiche Nachstellung des genannten Projekts. Die Verfügbarkeit von Maus, Tastatur und Monitor wird hierbei vorausgesetzt. Es ist stets zu berücksichtigen, dass es insbesondere bei den LEGO-Bauelementen, aber auch bei allen anderen Komponenten, je nach Menge und Hersteller zu preislichen Abweichungen kommen kann. LEGO-Konstruktion beziehungsweise LEGO-Bauelemente ........................... 50,00 EUR Platine „Raspberry Pi 2 Model B“ sowie Netzteil und Gehäuse ...................... 61,99 EUR Kühlkörper für den Raspberry Pi ...................................................................... 4,29 EUR SD-Karte für den Raspberry Pi ........................................................................ 4,87 EUR Kameramodul „Raspberry Pi Camera Rev 1.3“ .............................................. 19,99 EUR Servomotor „Tower Pro SG90“ ........................................................................ 2,58 EUR Steckplatine ..................................................................................................... 5,90 EUR Satz Datenkabel .............................................................................................. 1,95 EUR Satz Widerstände ............................................................................................ 2,50 EUR HDMI-Kabel für Monitoranschluss ................................................................... 4,64 EUR Netzwerkkabel ................................................................................................. 3,95 EUR Satz Glasmurmeln ........................................................................................... 4,39 EUR Sperrholzplatte .............................................................................................. 11,49 EUR 5 Schlussbetrachtung 18 Zwischensumme ........................................................................................ 178,54 EUR Fehlinvestition 1: „PWM-Controller PCA9685“ zur Drehzahlregelung............. 23,95 EUR Fehlinvestition 2: Ersatzteil Servomotor „Hextronik HXT900“ ........................... 5,98 EUR Gesamtsumme ........................................................................................... 208,47 EUR Quellenverzeichnis 19 Quellenverzeichnis Internetquellen 1 Bundesministerium für Bildung und Forschung (o. J.) Zukunftsprojekt Industrie 4.0, Online im Internet: im Internet: http://www.bmbf.de/de/9072.php, Stand: 04.05.2015. 2 optel Media Services GmbH (o. J.) Bildergalerie: DHL Zustellbasis, Online http://www.posttip.de/artikel/20018/bildergalerie-dhl-zustellbasis.html, Stand: 04.05.2015. 3 Schmidt, Florian (2015) Raspberry Pi 2: Himbeeriger Mini-Rechner im Check, Online im Internet: http://www.computerbild.de/artikel/cb-Tests-PC-Hardware-Raspberry-Pi-211384246.html, Stand: 08.05.2015. 4 Python Software Verband e.V. (o. J.) Was ist Python?, Online im Internet: http://www.plone.de/dokumentation/faq/programmiersprache, Stand: 08.05.2015. 5 Schmidt, Maik (2013) Erste Experimente mit der Pi Camera, Online im http://www.heise.de/make/artikel/Angetestet-Pi-Camera-1874976.html, Internet: Stand: 09.05.2015. 6 Demmig, Thomas (2013) Raspberry Pi für Einsteiger – Installation und Test von SimpleCV, Online im Internet: https://goo.gl/3tM8I7, Stand: 09.05.2015. 7 Humpa, Michael (2015) Raspbian "wheezy" für Raspberry Pi, Online http://www.chip.de/downloads/Raspbian-wheezy-fuer-RaspberryPi_56691903.html, Stand: 09.05.2015. im Internet: Quellenverzeichnis 8 20 Humpa, Michael (2015) Noobs (New Out Of The Box Software) für Raspberry Pi, Online im Internet: http://www.chip.de/downloads/Noobs-New-Out-Of-The-Box-Software-fuerRaspberry-Pi_69333184.html, Stand: 09.05.2015. 9 Gevert, Jan (2014) Statische IP beim Raspberry Pi einrichten, Online im Internet: http://news.umtsonlinetarife.de/2014/08/statische-ip-beim-raspberry-pi-einrichten/, 10.05.2015. Stand: Eidesstattliche Erklärung 21 Eidesstattliche Erklärung Hiermit erkläre ich, dass ich die vorliegende Seminararbeit selbständig angefertigt habe. Es wurden nur die in dieser schriftlichen Ausarbeitung ausdrücklich benannten Quellen und Hilfsmittel benutzt. Wörtlich oder sinngemäß übernommenes Gedankengut habe ich als solches kenntlich gemacht. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. Ort, Datum Unterschrift
© Copyright 2024 ExpyDoc