Projekt 51: Cycle Chaser: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 6: | Zeile 6: | ||
<br/> <br/> | <br/> <br/> | ||
== Einleitung == | == Einleitung == | ||
Das hier vorgestellte Projekt wurde im Rahmen des Seminars Angewandte Elektrotechnik (Business and Systems Engineering) im | Das hier vorgestellte Projekt wurde bereits zweimal im Rahmen des Seminars Angewandte Elektrotechnik (Business and Systems Engineering) bearbeitet. | ||
Die Aufgabenstellung wurde jedoch unterschiedlich interpretiert, wodurch verschiedene Herangehensweisen und Lösungsansätze im Fokus standen. | |||
Durch die unterschiedliche Fokussierung wurden unterschiedliche und unabhängige Ergebnisse generiert. | |||
Nach Absprache mit [[Benutzer:Mirekgoebel| Prof. Göbel]] werden daher beide Projektabläufe in diesem Artikel behandelt. | |||
<br/> <br/> | |||
Der Bericht [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Fabian_Lehnert_WS_16/17 Fabian Lehnert WS 16/17] | |||
befasst sich mit der Aufgabe, von einem Fahrrad aus, eine Projektion auf die Straße zu werfen. | |||
Die Projektion soll sich, in Abhängigkeit des Radumlaufs, verändern. | |||
<br/> <br/> | |||
Der Bericht [http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Miladin_Ceranic_WS15/16 Miladin Ceranic WS15/16] | |||
befasst sich mit der Aufgabe, eine Geschwindigkeitsmäßung, in Abhängigkeit des Radumfangs und des zeitlichen Intervalls eines Radumlaufs, zu entwickeln. | |||
Die berechnete Geschwindigkeit kann dann an einem beliebigen Ort dargestellt werden. | |||
<br/> | <br/> | ||
=== Aufgabe === | === Aufgabe === | ||
Zeile 16: | Zeile 23: | ||
<br/> <br/> | <br/> <br/> | ||
Ziel dieses Projekts ist die Projektion einer bewegten Bilderfolge ausgehend von einem Fahrrad und in Abhängigkeit der Drehgeschwindigkeit eines Rades. | Ziel dieses Projekts ist die Projektion einer bewegten Bilderfolge ausgehend von einem Fahrrad und in Abhängigkeit der Drehgeschwindigkeit eines Rades. | ||
Für die Umsetzung sollen ein Raspberry Pi 2 sowie die Software Matlab/Simulink verwendet werden. | Für die Umsetzung sollen ein Raspberry Pi 2 sowie die Software Matlab/Simulink verwendet werden. | ||
<br/> | <br/> | ||
=== Erwartungen an die Projektlösung === | === Erwartungen an die Projektlösung === | ||
Zeile 27: | Zeile 34: | ||
* Test und wiss. Dokumentation | * Test und wiss. Dokumentation | ||
* Live Vorführung während der Abschlusspräsentation | * Live Vorführung während der Abschlusspräsentation | ||
== Fabian Lehnert WS 16/17 == | |||
== Benötigtes Material == | Dieser Projektteil befasst sich mit der Aufgabe, von einem Fahrrad aus, eine Projektion auf die Straße zu werfen. | ||
Die Projektion soll sich, in Abhängigkeit des Radumlaufs, verändern. | |||
=== Benötigtes Material === | |||
Für dieses Projekt werden folgende Materialien benötigt: | Für dieses Projekt werden folgende Materialien benötigt: | ||
* 1 x Raspberry | * 1 x Raspberry Pi 2 Model B | ||
* 1 x micro SDHC-Karte (min. 8 GB) | * 1 x micro SDHC-Karte (min. 8 GB) | ||
* 1 x Hall-Sensor | * 1 x Hall-Sensor | ||
Zeile 46: | Zeile 55: | ||
* Kabelbinder | * Kabelbinder | ||
* ggf. ein Netzteil (Näheres unter [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Entwicklungsaufbau Entwicklungsaufbau]) | * ggf. ein Netzteil (Näheres unter [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Entwicklungsaufbau Entwicklungsaufbau]) | ||
=== Systemaufbau === | |||
== Systemaufbau == | |||
Der Aufbau des Projekts lässt sich grob in zwei Bereiche unterteilen: [http://193.175.248.52/wiki/...#Hardware Hardware] und [http://193.175.248.52/wiki/...#Software Software]. | Der Aufbau des Projekts lässt sich grob in zwei Bereiche unterteilen: [http://193.175.248.52/wiki/...#Hardware Hardware] und [http://193.175.248.52/wiki/...#Software Software]. | ||
Diese lassen sich ebenfalls in kleinere Teilbereiche einteilen. | Diese lassen sich ebenfalls in kleinere Teilbereiche einteilen. | ||
<br/> | <br/> | ||
=== Hardware === | ==== Hardware ==== | ||
Der folgende Abschnitt erläutert die Umsetzung der Hardware. Diese wurde in zwei Schritten umgesetzt: [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Entwicklungsaufbau Entwicklungsaufbau] und [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Gesamtaufbau Gesamtaufbau]. | Der folgende Abschnitt erläutert die Umsetzung der Hardware. Diese wurde in zwei Schritten umgesetzt: [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Entwicklungsaufbau Entwicklungsaufbau] und [http://193.175.248.52/wiki/http://193.175.248.52/wiki/index.php/Projekt_51:_Cycle_Chaser#Gesamtaufbau Gesamtaufbau]. | ||
<br/> | <br/> | ||
==== Entwicklungsaufbau ==== | ===== Entwicklungsaufbau ===== | ||
[[Datei:CycleChaser_Entwicklungsaufbau.jpg|right|thumb|350px|Abbildung 2: Entwicklungsaufbau des Cycle Chasers]] | [[Datei:CycleChaser_Entwicklungsaufbau.jpg|right|thumb|350px|Abbildung 2: Entwicklungsaufbau des Cycle Chasers (Bezeichnungen der nummerierten Komponenten im Text)]] | ||
Der Entwicklungsaufbau ist dazu gedacht, den Raspberry Pi 2 mit dem Rechner zu verbinden, | |||
Der Entwicklungsaufbau ist dazu gedacht, den Raspberry Pi 2 mit dem Rechner zu verbinden, | um die entwickelte Software aufzuspielen und zu testen. Es empfiehlt sich ein Netzteil zum Betrieb des Raspberry Pi 2 zu verwenden. | ||
um die entwickelte Software aufzuspielen und zu testen. Es empfiehlt sich ein Netzteil zum Betrieb des Raspberry Pi 2 zu verwenden. | |||
Weitere Informationen finden sich unter [https://www.datenreise.de/raspberry-pi-stromversorgung-netzteil-empfehlung/ www.datenreise.de]. | Weitere Informationen finden sich unter [https://www.datenreise.de/raspberry-pi-stromversorgung-netzteil-empfehlung/ www.datenreise.de]. | ||
Alternativ kann auch ein USB-Slot am Entwicklungsrechner verwendet werden. | Alternativ kann auch ein USB-Slot am Entwicklungsrechner verwendet werden. | ||
Der Aufbau wird in Abbildung 2 dargestellt. Zum Empfangen von Daten wird ein Hall-Sensor (1) verwendet. | Der Aufbau wird in Abbildung 2 dargestellt. Zum Empfangen von Daten wird ein Hall-Sensor (1) verwendet. | ||
Dieser dient zur Generierung kontinuirlicher High- und Low-Signalen mittels radialer Bewegung. Pin 1 und Pin 3 des Hallsensors werden mittels Widerstand (10 kΩ) (2) verbunden ( | Dieser dient zur Generierung kontinuirlicher High- und Low-Signalen mittels radialer Bewegung. Pin 1 und Pin 3 des Hallsensors werden mittels Widerstand (10 kΩ) (2) verbunden (vergleiche Abb. 2). | ||
Die Verbindung des Hall-Sensors mit dem Raspberry Pi 2 (3) ist Tabelle 1 zu entnehmen (Für die Pinbelegung des Raspberry Pi 2 siehe [http://www.it-hellmann.de/wp-content/uploads/2015/07/GPIO_Pi2.png Pin-Belegung beim Raspberry Pi 2]). | Die Verbindung des Hall-Sensors mit dem Raspberry Pi 2 (3) ist Tabelle 1 zu entnehmen (Für die Pinbelegung des Raspberry Pi 2 siehe [http://www.it-hellmann.de/wp-content/uploads/2015/07/GPIO_Pi2.png Pin-Belegung beim Raspberry Pi 2]). | ||
<br/> | <br/> | ||
{| border="0" | {| border="0" | ||
! width="35%" | Hall-Sensor | ! width="35%" | Hall-Sensor | ||
! width="65%" | Raspberry Pi 2 | ! width="65%" | Raspberry Pi 2 | ||
|- | |- | ||
|Pin 1 | |Pin 1 | ||
Zeile 80: | Zeile 87: | ||
|- | |- | ||
|} | |} | ||
Tabelle 1: Verbindung der Pins zwischen Hall-Sensor und Raspberry Pi 2 | ''Tabelle 1: Verbindung der Pins zwischen Hall-Sensor und Raspberry Pi 2'' | ||
Außerdem werden folgende Komponenten mit dem Raspberry Pi 2 verbunden: | Außerdem werden folgende Komponenten mit dem Raspberry Pi 2 verbunden: | ||
* Entwicklungsrechner (mit Matlab/Simulink) mittels Patchkabel RJ45 / LAN Kabel (4) | * Entwicklungsrechner (mit Matlab/Simulink) mittels Patchkabel RJ45 / LAN Kabel (4) | ||
* mobiler Projektor mittels HDMI-Kabel (5) | * mobiler Projektor mittels HDMI-Kabel (5) | ||
* Stromzufuhr mittels MicroUSB-Kabel (Wahlweise Entwicklungsrechner oder Netzteil) (6) | * Stromzufuhr mittels MicroUSB-Kabel (Wahlweise Entwicklungsrechner oder Netzteil) (6) | ||
===== Gesamtaufbau ===== | |||
==== Gesamtaufbau ==== | Der Gesamtaufbau stellt die Realisierung als eigenständiges System dar. Dazu wird der Raspberry Pi 2 über einen Akku mit Strom versorgt, | ||
Der Gesamtaufbau stellt die Realisierung als eigenständiges System dar. Dazu wird der Raspberry Pi 2 über einen Akku mit Strom versorgt, | die Software ist als ausführbare Datei auf den Raspberry Pi 2 überspielt worden und alle Komponenten wurden an ein Fahrrad (o.Ä.) angebracht. | ||
die Software ist als ausführbare Datei auf den Raspberry Pi 2 überspielt worden und alle Komponenten wurden an ein Fahrrad (o.Ä.) angebracht. | |||
Der Gesamtaufbau empfiehlt sich erst, sobald alle Softwaretest erfolgreich abgeschlossen sind. | Der Gesamtaufbau empfiehlt sich erst, sobald alle Softwaretest erfolgreich abgeschlossen sind. | ||
Der konkrete Aufbau ist der folgenden Bilderstrecke zu entnehmen und gegebenenfalls anzupassen: | Der konkrete Aufbau ist der folgenden Bilderstrecke zu entnehmen und gegebenenfalls anzupassen: | ||
<gallery> | <gallery> | ||
Datei:CycleChaser_Aufbau.JPG|Abbildung 3: Aufbau auf dem Gepäckträger eines Fahrrads (Akku, Raspberry Pi 2, Projektor) | Datei:CycleChaser_Aufbau.JPG|Abbildung 3: Aufbau auf dem Gepäckträger eines Fahrrads (Akku, Raspberry Pi 2, Projektor) | ||
Datei:CycleChaser_Hallsensor.JPG|Abbildung 4: Hallsensor nahe der Radfelge und angebrachten Magneten (Hallsensor, Magnet) | Datei:CycleChaser_Hallsensor.JPG|Abbildung 4: Hallsensor nahe der Radfelge und angebrachten Magneten (Hallsensor, Magnet) | ||
Datei:CycleChaser_Gesamtaufbau.JPG|Abbildung 5: Gesamtaufbau des Cycle Chasers an einem Fahrrad | Datei:CycleChaser_Gesamtaufbau.JPG|Abbildung 5: Gesamtaufbau des Cycle Chasers an einem Fahrrad | ||
</gallery> | </gallery> | ||
==== Software ==== | |||
=== Software === | Der folgende Abschnitt erläutert die Umsetzung der Software. Es werden die Themen [http://193.175.248.52/wiki/...#RRR Raspberry Pi 2 konfigurieren und verbinden] und [http://193.175.248.52/wiki/...#MMM Matlabcode und Simulinkmodell] behandelt. | ||
Der folgende Abschnitt erläutert die Umsetzung der Software. Es werden die Themen [http://193.175.248.52/wiki/...#RRR Raspberry Pi 2 konfigurieren und verbinden] und [http://193.175.248.52/wiki/...#MMM Matlabcode und Simulinkmodell] behandelt. | |||
<br/> | <br/> | ||
==== Raspberry Pi 2 konfigurieren und verbinden ==== | ===== Raspberry Pi 2 konfigurieren und verbinden ===== | ||
Eine Anleitung zur Inbetriebnahme und Konfiguration des Raspberry Pi 2 wurde bereits in | Eine Anleitung zur Inbetriebnahme und Konfiguration des Raspberry Pi 2 wurde bereits in | ||
[http://193.175.248.52/wiki/index.php/Projekt_45:_Simulink_Bildverarbeitung Projekt 45: Simulink Bildverarbeitung] erstellt und kann | [http://193.175.248.52/wiki/index.php/Projekt_45:_Simulink_Bildverarbeitung Projekt 45: Simulink Bildverarbeitung] erstellt und kann | ||
[http://193.175.248.52/wiki/index.php/Projekt_45:_Simulink_Bildverarbeitung#Raspberry_Pi_2_einrichten_und_Verbindung_aufbauen hier] abgerufen werden. | [http://193.175.248.52/wiki/index.php/Projekt_45:_Simulink_Bildverarbeitung#Raspberry_Pi_2_einrichten_und_Verbindung_aufbauen hier] abgerufen werden. | ||
<br/> | <br/> | ||
==== Matlabcode und Simulinkmodell ==== | ===== Matlabcode und Simulinkmodell ===== | ||
'''Matlabcode: PNGs to Mat''' <br/> | '''Matlabcode: PNGs to Mat''' <br/> | ||
[[Datei:Cycle_Chaser_png_to_mat.png|right|thumb|150px|Abbildung 6: Programmablaufplan zum Matlab-Script (PNGs to Mat) für den Cycle Chaser]] | |||
Der zusätzlich erzeugte Matlab Code dient zur Konvertierung von Bilddateien (png, jpg, ...) in Matlabdateien (.mat). | Der zusätzlich erzeugte Matlab Code dient zur Konvertierung von Bilddateien (png, jpg, ...) in Matlabdateien (.mat). | ||
Dadurch ist es nicht mehr nötig, das Simulinkmodell anzupassen, wenn eine andere Bildfolge verwendet werden soll. | Dadurch ist es nicht mehr nötig, das Simulinkmodell anzupassen, wenn eine andere Bildfolge verwendet werden soll. | ||
Zeile 115: | Zeile 121: | ||
* 3. Dimension: Differenziere Farbwerte (RGB) | * 3. Dimension: Differenziere Farbwerte (RGB) | ||
* 4. Dimension: Differenziere Bilddateien | * 4. Dimension: Differenziere Bilddateien | ||
'''Simulinkmodell''' <br/> | '''Simulinkmodell''' <br/> | ||
[[Datei:CycleChaser_Simulinkmodell.png|right|thumb|350px|Abbildung | [[Datei:CycleChaser_Simulinkmodell.png|right|thumb|350px|Abbildung 7: Simulinkmodel zum Cycle Chaser]] | ||
Um das Simulinkmodell auf den Raspberry Pi 2 aufzuspielen wird zusätzliche Software benötigt. Weitere Informationen werden unter | Um das Simulinkmodell auf den Raspberry Pi 2 aufzuspielen wird zusätzliche Software benötigt. Weitere Informationen werden unter | ||
[http://193.175.248.52/wiki/index.php/Pi_meets_Simulink Pi meets Simulink] und | [http://193.175.248.52/wiki/index.php/Pi_meets_Simulink Pi meets Simulink] und | ||
[http://193.175.248.52/wiki/index.php/Bildverarbeitung_mit_Raspberry_Pi_und_Webcam#Einrichtung_von_Matlab.2FSimulink_und_des_Raspberry_Pi Einrichtung von Matlab/Simulink und des Raspberry Pi] | [http://193.175.248.52/wiki/index.php/Bildverarbeitung_mit_Raspberry_Pi_und_Webcam#Einrichtung_von_Matlab.2FSimulink_und_des_Raspberry_Pi Einrichtung von Matlab/Simulink und des Raspberry Pi] | ||
bereitgestellt. | bereitgestellt. | ||
Das Simulinkmodell ist eigenständig und benötigt (bis auf die konvertierten Bilddateien) keine weiteren vordefinierten Variablen. | Das Simulinkmodell ist eigenständig und benötigt (bis auf die konvertierten Bilddateien) keine weiteren vordefinierten Variablen. | ||
Die einzelnen Blöcke erfühlen folgende Aufgaben: | Die einzelnen Blöcke erfühlen folgende Aufgaben: | ||
* GPIO Read: Dient zum Empfangen von HIGH-/LOW-Signalen des Raspberry Pi. Der Block wurde konfiguriert, sodass Signale von Pin 11 (GPIO 17) empfangen werden können. | * GPIO Read: Dient zum Empfangen von HIGH-/LOW-Signalen des Raspberry Pi. Der Block wurde konfiguriert, sodass Signale von Pin 11 (GPIO 17) empfangen werden können. | ||
* Detect Rise Positiv: Verarbeitet die empfangenen Signale des GPIO Read, sodass ein (relativ) langes HIGH-Signal (steigende Flanke) in einen kurzen Impulsumgewandelt wird. | * Detect Rise Positiv: Verarbeitet die empfangenen Signale des GPIO Read, sodass ein (relativ) langes HIGH-Signal (steigende Flanke) in einen kurzen Impulsumgewandelt wird. | ||
* Memory, Constant, Produkt: Die Blöcke bilden eine funktionelle Gruppe. Mit dieser Blockgruppe wird die verstrichene Zeit gemessen. Dafür wird der Wert in Constant aufsumiert. Übergibt der Block MATLAB Function ein Signal (Wert 0) an den Product Block, wird die Zeitmessung zurückgesetzt. | * Memory, Constant, Produkt: Die Blöcke bilden eine funktionelle Gruppe. Mit dieser Blockgruppe wird die verstrichene Zeit gemessen. Dafür wird der Wert in Constant aufsumiert. Übergibt der Block MATLAB Function ein Signal (Wert 0) an den Product Block, wird die Zeitmessung zurückgesetzt. | ||
* MATLAB Function: Dieser Block führt eine Matlab Funktion aus, die sich nicht mit Simulink nachstellen ließ. Hier wird das empfangene Signal verarbeitet. In der Standardfunktion wird bei jedem HIGH-Impuls ein Funktionsteil ausgeführt, welcher das nächste Bild ausgibt. Dieses wird in drei Matrizen aufgeteilt, welche die Farbanteile für Rot, Grün und Blau beinhalten. | * MATLAB Function: Dieser Block führt eine Matlab Funktion aus, die sich nicht mit Simulink nachstellen ließ. Hier wird das empfangene Signal verarbeitet. In der Standardfunktion wird bei jedem HIGH-Impuls ein Funktionsteil ausgeführt, welcher das nächste Bild ausgibt. Dieses wird in drei Matrizen aufgeteilt, welche die Farbanteile für Rot, Grün und Blau beinhalten. | ||
* SDL Video Display: Dient zum Übertragen des Bildes an den Raspberry Pi 2. Empfangen wird das Bild durch drei Kanäle für die Rot-, Grün- und Blauanteile des Bildes. | * SDL Video Display: Dient zum Übertragen des Bildes an den Raspberry Pi 2. Empfangen wird das Bild durch drei Kanäle für die Rot-, Grün- und Blauanteile des Bildes. | ||
''' MATLAB Function 1 ''' <br/> | ''' MATLAB Function 1 ''' <br/> | ||
Eine Variante der MATLAB Function bewirkt, dass bei jedem HIGH-Impuls das nächste Bild ausgegeben werden soll. Ist bereits das letzte Bild erreicht, | Eine Variante der MATLAB Function bewirkt, dass bei jedem HIGH-Impuls das nächste Bild ausgegeben werden soll. Ist bereits das letzte Bild erreicht, | ||
wird wieder beim ersten Bild begonnen | wird wieder beim ersten Bild begonnen (vergleiche Abb. 8). | ||
''' MATLAB Function 2 ''' <br/> | ''' MATLAB Function 2 ''' <br/> | ||
Eine weitere Variante der MATLAB Function bezieht den Faktor Zeit mit ein. Abhängig von der verstrichenen Zeit zwischen zwei High-Impulsen, ändert sich das dargestellte Bild. | Eine weitere Variante der MATLAB Function bezieht den Faktor Zeit mit ein. Abhängig von der verstrichenen Zeit zwischen zwei High-Impulsen, ändert sich das dargestellte Bild (vergleiche Abb. 9). | ||
<gallery> | |||
Datei:Cycle_Chaser_Function_1.png|Abbildung 8: Programmablaufplan zum Matlab-Script (MATLAB Function 1) für den Cycle Chaser | |||
Datei:Cycle_Chaser_Function_2.png|Abbildung 9: Programmablaufplan zum Matlab-Script (MATLAB Function 2) für den Cycle Chaser | |||
</gallery> | |||
=== Fazit und Ausblick === | |||
Die in der Einführung definierten Ziele wurden erreicht und der Cycle Chaser funktioniert. Es ist möglich, mehrere Bilderstrecken für den Raspberry Pi 2 vorzubereiten. | |||
Dazu ändert man den Namen des Simulinkmodells und überspielt dieses mit einer anderen Bilderstrecke auf den Raspberry Pi 2. | |||
</ | |||
== Fazit und Ausblick == | |||
Die in der Einführung definierten Ziele wurden erreicht und der Cycle Chaser funktioniert. Es ist möglich, mehrere Bilderstrecken für den Raspberry Pi 2 vorzubereiten. | |||
Dazu ändert man den Namen des Simulinkmodells und überspielt dieses mit einer anderen Bilderstrecke auf den Raspberry Pi 2. | |||
Denkbare Erweiterungen des Projekts sind: | Denkbare Erweiterungen des Projekts sind: | ||
* Verwendung des Audioausganges zur Ausgabe von Geräuschen oder Musik passend zur gezeigten Bildstrecke | * Verwendung des Audioausganges zur Ausgabe von Geräuschen oder Musik passend zur gezeigten Bildstrecke | ||
* Verwendung von zusätzlichen Lichtquellen (beispielsweise als Bremslicht bei stark ansteigendem Zeitintervall zwischen zwei Signalen) | * Verwendung von zusätzlichen Lichtquellen (beispielsweise als Bremslicht bei stark ansteigendem Zeitintervall zwischen zwei Signalen) | ||
* Einbindung eines Dynamos (beispielsweise zum Aufladen des Akkus für den Raspberry Pi 2) | * Einbindung eines Dynamos (beispielsweise zum Aufladen des Akkus für den Raspberry Pi 2) | ||
* Entwicklung und Anfertigung | * Entwicklung und Anfertigung eines Gehäuse für die elektronischen Komponenten inkl. verstellbarer Halterung für den Projektor und anpassbarer Halterung für verschiedene Gepäckträger | ||
Denkbare Abwandlungen des Projekts sind: | Denkbare Abwandlungen des Projekts sind: | ||
Zeile 279: | Zeile 159: | ||
* Der Aufbau kann für ein reales Glücksrad mit elektronischen Komponenten verwendet werden. | * Der Aufbau kann für ein reales Glücksrad mit elektronischen Komponenten verwendet werden. | ||
== Youtube-Video == | === Youtube-Video === | ||
Zur Veranschaulichung wurde für dieses Projekt ein Video erstellt. Dieses wurde bei Youtube veröffentlicht und kann [https://youtu.be/Q9Ubl9zOZrA hier] angesehen werden. | Zur Veranschaulichung wurde für dieses Projekt ein Video erstellt. Dieses wurde bei Youtube veröffentlicht und kann [https://youtu.be/Q9Ubl9zOZrA hier] angesehen werden. | ||
== Miladin Ceranic WS15/16 == | == Miladin Ceranic WS15/16 == | ||
Die hier gesammelten Informationen wurden von [[Benutzer:Benutzer:Miladin_Ceranic|Miladin Ceranic]] übernommen. Lediglich die Nummerierung der Abbildungen wurde angepasst. | Nach Absprache mit [[Benutzer:Mirekgoebel| Prof. Göbel]] werden hier die Ergebnisse zum Cycle Chaser aus dem Wintersemester 15/16 dargestellt, | ||
Für den Informationsgehalt ist [[Benutzer:Benutzer:Miladin_Ceranic|Miladin Ceranic]] veranwortlich. | da sich diese stark von den Ergbnissen aus dem Wintersemester 16/17 unterscheiden. | ||
Dieser Projektteil befasst sich mit der Aufgabe, eine Geschwindigkeitsmäßung, in Abhängigkeit des Radumfangs und des zeitlichen Intervalls eines Radumlaufs, zu entwickeln. | |||
Die berechnete Geschwindigkeit kann dann an einem beliebigen Ort dargestellt werden. <br/> | |||
''Anmerkung von Fabian Lehnert: Die hier gesammelten Informationen wurden von [[Benutzer:Benutzer:Miladin_Ceranic|Miladin Ceranic]] übernommen. Lediglich die Nummerierung der Abbildungen wurde angepasst.'' | |||
''Für den Informationsgehalt ist [[Benutzer:Benutzer:Miladin_Ceranic|Miladin Ceranic]] veranwortlich.'' | |||
=== Benötigtes Material === | === Benötigtes Material === | ||
[[Datei:material.jpg|right|thumb|350px|Abbildung | [[Datei:material.jpg|right|thumb|350px|Abbildung 10: Verwendete Bauteile]] | ||
Das zur Lösung der Projektarbeit verwendete Material besteht aus: | Das zur Lösung der Projektarbeit verwendete Material besteht aus: | ||
* 1 x Malerroller (zur Fahrradsimulation) | * 1 x Malerroller (zur Fahrradsimulation) | ||
Zeile 303: | Zeile 187: | ||
=== Systemaufbau === | === Systemaufbau === | ||
Das Gesamt-System wird unterteilt in zwei Teilsysteme: Software und Hardware. Die Software wird im Kapitel Matlab/Simulinkmodell vorgestellt und der Hardwareaufbau kann der Abbildung | Das Gesamt-System wird unterteilt in zwei Teilsysteme: Software und Hardware. Die Software wird im Kapitel Matlab/Simulinkmodell vorgestellt und der Hardwareaufbau kann der Abbildung 11 entnommen werden. | ||
<gallery> | <gallery> | ||
Datei:Hardwareaufbau.jpg|Abbildung | Datei:Hardwareaufbau.jpg|Abbildung 11: Hardwareaufbau | ||
</gallery> | </gallery> | ||
=== Matlab/Simulinkmodell === | === Matlab/Simulinkmodell === | ||
[[Datei:simulink.jpg|right|thumb|350px|Abbildung | [[Datei:simulink.jpg|right|thumb|350px|Abbildung 12: Simulinkmodell]] | ||
Zum Starten des Simulinkmodells ist es erforderlich die „start.m“ Matlab-Datei zu öffnen und zu kompilieren. Die „start.m“ Matlab-Datei besteht im Wesentlichen aus drei Befehlen. Der Befehl black = zeros(1184, 624,3); generiert ein schwarzes Bild mit der Größe 1184 px x 624 px. In der Zeile 11 wird der halbe Umfang des Rades bestimmt. Der Aufruf des Simulinkmodells erfolgt in der Zeile 14. | Zum Starten des Simulinkmodells ist es erforderlich die „start.m“ Matlab-Datei zu öffnen und zu kompilieren. Die „start.m“ Matlab-Datei besteht im Wesentlichen aus drei Befehlen. Der Befehl black = zeros(1184, 624,3); generiert ein schwarzes Bild mit der Größe 1184 px x 624 px. In der Zeile 11 wird der halbe Umfang des Rades bestimmt. Der Aufruf des Simulinkmodells erfolgt in der Zeile 14. | ||
<gallery> | <gallery> | ||
Datei:uhr.jpg|Abbildung | Datei:uhr.jpg|Abbildung 13: Bestimmung der verstrichenen Zeit | ||
Datei:subsystem.jpg|Abbildung | Datei:subsystem.jpg|Abbildung 14: Berechnung der akt. Geschwindikeit | ||
Datei:bild.jpg|Abbildung | Datei:bild.jpg|Abbildung 15: Bildausgabe auf den Raspberry Pi | ||
</gallery> | </gallery> | ||
Das Simulinkmodell besteht, wie der Abbildung | Das Simulinkmodell besteht, wie der Abbildung 12 zu entnehmen ist, aus fünf verschiedenen Blöcken. | ||
Dabei ist der Cyan- und Magenta-Block Raspberry PI Blöcke. Der Cyan gefärbte Block ist ein Eingangssignal und der Magenta gefärbte Block ein Ausgangssignal des Raspberry Pi. | Dabei ist der Cyan- und Magenta-Block Raspberry PI Blöcke. Der Cyan gefärbte Block ist ein Eingangssignal und der Magenta gefärbte Block ein Ausgangssignal des Raspberry Pi. | ||
Die grün, gelb und rot eingefärbten Blöcke entsprechen Unterfunktionen des Simulinkmodells. | Die grün, gelb und rot eingefärbten Blöcke entsprechen Unterfunktionen des Simulinkmodells. | ||
Dabei, wie der Abbildung | Dabei, wie der Abbildung 13 zu entnehmen ist, ist der grün eingefärbte Block lediglich eine Hilfs-Uhr mit der die Zeit bestimmt wird. | ||
In dem Gelb eingefärbten Block wird die Geschwindigkeit bestimmt (siehe Abbildung | In dem Gelb eingefärbten Block wird die Geschwindigkeit bestimmt (siehe Abbildung 14). | ||
Das rot eingefärbte Subsystem (siege Abbildung | Das rot eingefärbte Subsystem (siege Abbildung 15) generiert aus dem zu Anfang erzeugten schwarzen Bild, ein Bild mit einer textuellen Animation. Bei der textuellen Animation handelt es sich um die im vorherigen Block berechnete Geschwindigkeit. | ||
=== Fazit und Ausblick === | === Fazit und Ausblick === | ||
Zeile 327: | Zeile 211: | ||
=== Youtube-Video === | === Youtube-Video === | ||
''Anmerkung von Fabian Lehnert: Im Rahmen dieses Projekts wurde ein Video erstellt und auf Youtube veröffentlicht, '' | |||
[https:// | ''dieses ist jedoch nicht mehr verfügbar. Zugriff auf das Video ist lediglich über den [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/51_Cycle_Chaser/Variation_Miladin_Ceranic SVN-Projektordner von Miladin Ceranic] möglich.'' | ||
== Weiterführende Links == | == Weiterführende Links == |
Aktuelle Version vom 16. Januar 2017, 18:56 Uhr
Autoren: Fabian Lehnert, Miladin Ceranic
Betreuer: Prof. Göbel, Prof. Schneider
Einleitung
Das hier vorgestellte Projekt wurde bereits zweimal im Rahmen des Seminars Angewandte Elektrotechnik (Business and Systems Engineering) bearbeitet.
Die Aufgabenstellung wurde jedoch unterschiedlich interpretiert, wodurch verschiedene Herangehensweisen und Lösungsansätze im Fokus standen.
Durch die unterschiedliche Fokussierung wurden unterschiedliche und unabhängige Ergebnisse generiert.
Nach Absprache mit Prof. Göbel werden daher beide Projektabläufe in diesem Artikel behandelt.
Der Bericht Fabian Lehnert WS 16/17
befasst sich mit der Aufgabe, von einem Fahrrad aus, eine Projektion auf die Straße zu werfen.
Die Projektion soll sich, in Abhängigkeit des Radumlaufs, verändern.
Der Bericht Miladin Ceranic WS15/16
befasst sich mit der Aufgabe, eine Geschwindigkeitsmäßung, in Abhängigkeit des Radumfangs und des zeitlichen Intervalls eines Radumlaufs, zu entwickeln.
Die berechnete Geschwindigkeit kann dann an einem beliebigen Ort dargestellt werden.
Aufgabe
Kurzbeschreibung: Projektion von Animationen vom Hinterrad des Fahrrades aus.
Ziel dieses Projekts ist die Projektion einer bewegten Bilderfolge ausgehend von einem Fahrrad und in Abhängigkeit der Drehgeschwindigkeit eines Rades.
Für die Umsetzung sollen ein Raspberry Pi 2 sowie die Software Matlab/Simulink verwendet werden.
Erwartungen an die Projektlösung
- Lesen Sie den Artikel auf makezine.com
- Planen Sie den Aufbau
- Sichten sie die vorhandenen Teile
- System aufbauen
- Nutzen Sie Simulink für die Programmierung
- Machen Sie spektakuläre Videos, welche die Funktion visualisieren
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Fabian Lehnert WS 16/17
Dieser Projektteil befasst sich mit der Aufgabe, von einem Fahrrad aus, eine Projektion auf die Straße zu werfen. Die Projektion soll sich, in Abhängigkeit des Radumlaufs, verändern.
Benötigtes Material
Für dieses Projekt werden folgende Materialien benötigt:
- 1 x Raspberry Pi 2 Model B
- 1 x micro SDHC-Karte (min. 8 GB)
- 1 x Hall-Sensor
- 1 x 10 kΩ Widerstand
- 4 x Permanent-Magnete
- 1 x Fahrrad o.Ä.
- 1 x mobiler Projektor
- 1 x USB-Maus
- 1 x USB-Tastatur
- 1 x Akku (Powerbank o.Ä.)
- 1 x Patchkabel RJ45 / LAN Kabel
- 1 x HDMI-Kabel
- 1 x MicroUSB-Kabel
- Leitungen
- Kabelbinder
- ggf. ein Netzteil (Näheres unter Entwicklungsaufbau)
Systemaufbau
Der Aufbau des Projekts lässt sich grob in zwei Bereiche unterteilen: Hardware und Software.
Diese lassen sich ebenfalls in kleinere Teilbereiche einteilen.
Hardware
Der folgende Abschnitt erläutert die Umsetzung der Hardware. Diese wurde in zwei Schritten umgesetzt: Entwicklungsaufbau und Gesamtaufbau.
Entwicklungsaufbau
Der Entwicklungsaufbau ist dazu gedacht, den Raspberry Pi 2 mit dem Rechner zu verbinden, um die entwickelte Software aufzuspielen und zu testen. Es empfiehlt sich ein Netzteil zum Betrieb des Raspberry Pi 2 zu verwenden. Weitere Informationen finden sich unter www.datenreise.de. Alternativ kann auch ein USB-Slot am Entwicklungsrechner verwendet werden.
Der Aufbau wird in Abbildung 2 dargestellt. Zum Empfangen von Daten wird ein Hall-Sensor (1) verwendet.
Dieser dient zur Generierung kontinuirlicher High- und Low-Signalen mittels radialer Bewegung. Pin 1 und Pin 3 des Hallsensors werden mittels Widerstand (10 kΩ) (2) verbunden (vergleiche Abb. 2).
Die Verbindung des Hall-Sensors mit dem Raspberry Pi 2 (3) ist Tabelle 1 zu entnehmen (Für die Pinbelegung des Raspberry Pi 2 siehe Pin-Belegung beim Raspberry Pi 2).
Hall-Sensor | Raspberry Pi 2 |
---|---|
Pin 1 | Pin 4 (DC Power 5V) |
Pin 2 | Pin 6 (Ground) |
Pin 3 | Pin 11 (GPIO 17) |
Tabelle 1: Verbindung der Pins zwischen Hall-Sensor und Raspberry Pi 2
Außerdem werden folgende Komponenten mit dem Raspberry Pi 2 verbunden:
- Entwicklungsrechner (mit Matlab/Simulink) mittels Patchkabel RJ45 / LAN Kabel (4)
- mobiler Projektor mittels HDMI-Kabel (5)
- Stromzufuhr mittels MicroUSB-Kabel (Wahlweise Entwicklungsrechner oder Netzteil) (6)
Gesamtaufbau
Der Gesamtaufbau stellt die Realisierung als eigenständiges System dar. Dazu wird der Raspberry Pi 2 über einen Akku mit Strom versorgt, die Software ist als ausführbare Datei auf den Raspberry Pi 2 überspielt worden und alle Komponenten wurden an ein Fahrrad (o.Ä.) angebracht. Der Gesamtaufbau empfiehlt sich erst, sobald alle Softwaretest erfolgreich abgeschlossen sind. Der konkrete Aufbau ist der folgenden Bilderstrecke zu entnehmen und gegebenenfalls anzupassen:
-
Abbildung 3: Aufbau auf dem Gepäckträger eines Fahrrads (Akku, Raspberry Pi 2, Projektor)
-
Abbildung 4: Hallsensor nahe der Radfelge und angebrachten Magneten (Hallsensor, Magnet)
-
Abbildung 5: Gesamtaufbau des Cycle Chasers an einem Fahrrad
Software
Der folgende Abschnitt erläutert die Umsetzung der Software. Es werden die Themen Raspberry Pi 2 konfigurieren und verbinden und Matlabcode und Simulinkmodell behandelt.
Raspberry Pi 2 konfigurieren und verbinden
Eine Anleitung zur Inbetriebnahme und Konfiguration des Raspberry Pi 2 wurde bereits in
Projekt 45: Simulink Bildverarbeitung erstellt und kann
hier abgerufen werden.
Matlabcode und Simulinkmodell
Matlabcode: PNGs to Mat
Der zusätzlich erzeugte Matlab Code dient zur Konvertierung von Bilddateien (png, jpg, ...) in Matlabdateien (.mat). Dadurch ist es nicht mehr nötig, das Simulinkmodell anzupassen, wenn eine andere Bildfolge verwendet werden soll. Die erzeugten Matlabdateien entsprechen einem vierdimensionalem Array mit den Werten:
- 1. Dimension: Aufspannen der y-Achse
- 2. Dimension: Aufspannen der x-Achse
- 3. Dimension: Differenziere Farbwerte (RGB)
- 4. Dimension: Differenziere Bilddateien
Simulinkmodell
Um das Simulinkmodell auf den Raspberry Pi 2 aufzuspielen wird zusätzliche Software benötigt. Weitere Informationen werden unter Pi meets Simulink und Einrichtung von Matlab/Simulink und des Raspberry Pi bereitgestellt.
Das Simulinkmodell ist eigenständig und benötigt (bis auf die konvertierten Bilddateien) keine weiteren vordefinierten Variablen. Die einzelnen Blöcke erfühlen folgende Aufgaben:
- GPIO Read: Dient zum Empfangen von HIGH-/LOW-Signalen des Raspberry Pi. Der Block wurde konfiguriert, sodass Signale von Pin 11 (GPIO 17) empfangen werden können.
- Detect Rise Positiv: Verarbeitet die empfangenen Signale des GPIO Read, sodass ein (relativ) langes HIGH-Signal (steigende Flanke) in einen kurzen Impulsumgewandelt wird.
- Memory, Constant, Produkt: Die Blöcke bilden eine funktionelle Gruppe. Mit dieser Blockgruppe wird die verstrichene Zeit gemessen. Dafür wird der Wert in Constant aufsumiert. Übergibt der Block MATLAB Function ein Signal (Wert 0) an den Product Block, wird die Zeitmessung zurückgesetzt.
- MATLAB Function: Dieser Block führt eine Matlab Funktion aus, die sich nicht mit Simulink nachstellen ließ. Hier wird das empfangene Signal verarbeitet. In der Standardfunktion wird bei jedem HIGH-Impuls ein Funktionsteil ausgeführt, welcher das nächste Bild ausgibt. Dieses wird in drei Matrizen aufgeteilt, welche die Farbanteile für Rot, Grün und Blau beinhalten.
- SDL Video Display: Dient zum Übertragen des Bildes an den Raspberry Pi 2. Empfangen wird das Bild durch drei Kanäle für die Rot-, Grün- und Blauanteile des Bildes.
MATLAB Function 1
Eine Variante der MATLAB Function bewirkt, dass bei jedem HIGH-Impuls das nächste Bild ausgegeben werden soll. Ist bereits das letzte Bild erreicht,
wird wieder beim ersten Bild begonnen (vergleiche Abb. 8).
MATLAB Function 2
Eine weitere Variante der MATLAB Function bezieht den Faktor Zeit mit ein. Abhängig von der verstrichenen Zeit zwischen zwei High-Impulsen, ändert sich das dargestellte Bild (vergleiche Abb. 9).
-
Abbildung 8: Programmablaufplan zum Matlab-Script (MATLAB Function 1) für den Cycle Chaser
-
Abbildung 9: Programmablaufplan zum Matlab-Script (MATLAB Function 2) für den Cycle Chaser
Fazit und Ausblick
Die in der Einführung definierten Ziele wurden erreicht und der Cycle Chaser funktioniert. Es ist möglich, mehrere Bilderstrecken für den Raspberry Pi 2 vorzubereiten. Dazu ändert man den Namen des Simulinkmodells und überspielt dieses mit einer anderen Bilderstrecke auf den Raspberry Pi 2.
Denkbare Erweiterungen des Projekts sind:
- Verwendung des Audioausganges zur Ausgabe von Geräuschen oder Musik passend zur gezeigten Bildstrecke
- Verwendung von zusätzlichen Lichtquellen (beispielsweise als Bremslicht bei stark ansteigendem Zeitintervall zwischen zwei Signalen)
- Einbindung eines Dynamos (beispielsweise zum Aufladen des Akkus für den Raspberry Pi 2)
- Entwicklung und Anfertigung eines Gehäuse für die elektronischen Komponenten inkl. verstellbarer Halterung für den Projektor und anpassbarer Halterung für verschiedene Gepäckträger
Denkbare Abwandlungen des Projekts sind:
- Durch Austausch des Hall-Sensors durch beispielsweise eine Lichtschranke kann die Änderung des Bildes beim durchlaufen eines Flurs erreicht werden
- Der Aufbau kann für ein reales Glücksrad mit elektronischen Komponenten verwendet werden.
Youtube-Video
Zur Veranschaulichung wurde für dieses Projekt ein Video erstellt. Dieses wurde bei Youtube veröffentlicht und kann hier angesehen werden.
Miladin Ceranic WS15/16
Nach Absprache mit Prof. Göbel werden hier die Ergebnisse zum Cycle Chaser aus dem Wintersemester 15/16 dargestellt,
da sich diese stark von den Ergbnissen aus dem Wintersemester 16/17 unterscheiden.
Dieser Projektteil befasst sich mit der Aufgabe, eine Geschwindigkeitsmäßung, in Abhängigkeit des Radumfangs und des zeitlichen Intervalls eines Radumlaufs, zu entwickeln.
Die berechnete Geschwindigkeit kann dann an einem beliebigen Ort dargestellt werden.
Anmerkung von Fabian Lehnert: Die hier gesammelten Informationen wurden von Miladin Ceranic übernommen. Lediglich die Nummerierung der Abbildungen wurde angepasst.
Für den Informationsgehalt ist Miladin Ceranic veranwortlich.
Benötigtes Material
Das zur Lösung der Projektarbeit verwendete Material besteht aus:
- 1 x Malerroller (zur Fahrradsimulation)
- 1 x Kabelrolle
- 4 x Permanent-Magnete
- 1 x Hall-Sensor
- 1 x DLP Projektor
- 1 x HDMI-Kabel
- 1 x micro SDHC-Karte (min. 8 GB)
- 1 x Powerbox (Akku)
- 1 x Raspberry Pis 2 Model B
- 1 x Flachbandkabel
- 1 x RJ45-Kabel
- 1 x MicroUSB-Kabel
Systemaufbau
Das Gesamt-System wird unterteilt in zwei Teilsysteme: Software und Hardware. Die Software wird im Kapitel Matlab/Simulinkmodell vorgestellt und der Hardwareaufbau kann der Abbildung 11 entnommen werden.
-
Abbildung 11: Hardwareaufbau
Matlab/Simulinkmodell
Zum Starten des Simulinkmodells ist es erforderlich die „start.m“ Matlab-Datei zu öffnen und zu kompilieren. Die „start.m“ Matlab-Datei besteht im Wesentlichen aus drei Befehlen. Der Befehl black = zeros(1184, 624,3); generiert ein schwarzes Bild mit der Größe 1184 px x 624 px. In der Zeile 11 wird der halbe Umfang des Rades bestimmt. Der Aufruf des Simulinkmodells erfolgt in der Zeile 14.
-
Abbildung 13: Bestimmung der verstrichenen Zeit
-
Abbildung 14: Berechnung der akt. Geschwindikeit
-
Abbildung 15: Bildausgabe auf den Raspberry Pi
Das Simulinkmodell besteht, wie der Abbildung 12 zu entnehmen ist, aus fünf verschiedenen Blöcken. Dabei ist der Cyan- und Magenta-Block Raspberry PI Blöcke. Der Cyan gefärbte Block ist ein Eingangssignal und der Magenta gefärbte Block ein Ausgangssignal des Raspberry Pi. Die grün, gelb und rot eingefärbten Blöcke entsprechen Unterfunktionen des Simulinkmodells. Dabei, wie der Abbildung 13 zu entnehmen ist, ist der grün eingefärbte Block lediglich eine Hilfs-Uhr mit der die Zeit bestimmt wird. In dem Gelb eingefärbten Block wird die Geschwindigkeit bestimmt (siehe Abbildung 14). Das rot eingefärbte Subsystem (siege Abbildung 15) generiert aus dem zu Anfang erzeugten schwarzen Bild, ein Bild mit einer textuellen Animation. Bei der textuellen Animation handelt es sich um die im vorherigen Block berechnete Geschwindigkeit.
Fazit und Ausblick
Das im Rahmen der Veranstaltung durchgeführte Projekt erfüllt die gestellten Anforderungen. Die Schwierigkeit des Projektes würde sich erhöhen, wenn statt dem Raspberry Pi ein handelsübliches Smartphone verwendet werden soll. Dabei liegt die Herausforderung bei der Erweiterung des Projektes, indem statt einer einfachen Animation, der Projektor zur Signalisierung der Fahrtrichtung bzw. Navigation dienen würde.
Youtube-Video
Anmerkung von Fabian Lehnert: Im Rahmen dieses Projekts wurde ein Video erstellt und auf Youtube veröffentlicht, dieses ist jedoch nicht mehr verfügbar. Zugriff auf das Video ist lediglich über den SVN-Projektordner von Miladin Ceranic möglich.
Weiterführende Links
- Originalartikel auf makezine.com
- YouTube: Implementierungsbeispiel
- Empfehlung von Netzteilen zum Betrieb eines Raspberry Pi
- Pin-Belegung beim Raspberry Pi 2
- SVN-Projektordner
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 16/17)