Winkerrätsel - Entschlüsselung der Signalcodes: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(192 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 113: Zeile 113:


== Funktionaler Systementwurf ==
== Funktionaler Systementwurf ==
[[Datei:Winkerrätsel Funktionsentwurf.png|250px|mini|alternativtext=Ablauf des Winkerrätsels|Bild 2: Ablauf des Winkerrätsels]]
Als Vorbereitung für das Winkerrätsel, zunächst durch die spielende Person, der Schwierigkeitsgrad gewählt werden.  Das Spiel beginnt bei dem Winkerrätsel nicht mit dem drücken eines Startbuttons oder ähnlichem, sondern in Escape-Room Manier mit dem erkennen des Problems selbst. Hierzu bekommt die Spielende Person nach einstellen des Schwierigkeitsgrades, lediglich die 2 Flaggen und Literatur über Signale ausgehändigt. Somit ergibt sich als erste Aufgabe für die Spielenden, unter zu Hilfenahme der Flaggen zu erkenne, dass es sich bei der geforderten Aufgabe um das Winkeralphabet handelt. Mit der Erkenntnis aus der Literatur und der Tatsache, dass die spielende Person bereits unweigerlich Feedback zur erkannten Position bekommen wird, sollte durch die spielende Person kombiniert werden, nun mittels Körperposition
Als Vorbereitung für das Winkerrätsel, zunächst durch die spielende Person, der Schwierigkeitsgrad gewählt werden.  Das Spiel beginnt bei dem Winkerrätsel nicht mit dem drücken eines Startbuttons oder ähnlichem, sondern in Escape-Room Manier mit dem erkennen des Problems selbst. Hierzu bekommt die Spielende Person nach einstellen des Schwierigkeitsgrades, lediglich die 2 Flaggen und Literatur über Signale ausgehändigt. Somit ergibt sich als erste Aufgabe für die Spielenden, unter zu Hilfenahme der Flaggen zu erkenne, dass es sich bei der geforderten Aufgabe um das Winkeralphabet handelt. Mit der Erkenntnis aus der Literatur und der Tatsache, dass die spielende Person bereits unweigerlich Feedback zur erkannten Position bekommen wird, sollte durch die spielende Person kombiniert werden, nun mittels Körperposition
den erhaltenen Rätselcode einzugeben.‎<br/>
den erhaltenen Rätselcode einzugeben.‎<br/>
Zeile 122: Zeile 121:
Der schwierigste Spielmodus, nur geeignet für Profis, fordert von der nutzenden Person die Eingabe kurzer Wörter, was gegebenen falls das Korrigieren der Eingabe nötig macht.
Der schwierigste Spielmodus, nur geeignet für Profis, fordert von der nutzenden Person die Eingabe kurzer Wörter, was gegebenen falls das Korrigieren der Eingabe nötig macht.
Der Ablauf des Winkerrätsels, wie er aus der Sicht des Anwenders dargestellt werden soll, kann dem Ablaufschema in Bild 2 entnommen werden.
Der Ablauf des Winkerrätsels, wie er aus der Sicht des Anwenders dargestellt werden soll, kann dem Ablaufschema in Bild 2 entnommen werden.
[[Datei:Winkerrätsel Funktionsentwurf.png|400px|center|thumb|Bild 2: Relevante, technische Komponenten des Winkerrätsels]]


== Technischer Systementwurf ==
== Technischer Systementwurf ==
[[Datei:Winkerraetsel Komponenten.png|500px|mini|alternativtext= Relevante, technische Komponenten des Winkerrätsels| Bild 3:  Relevante, technische Komponenten des Winkerrätsels]]
Da der im Arduino Uno R3 verwendete Atmega328-Mikrocontroller hinsichtlich Datenverarbeitung, RAM und Flash-Speicher begrenzt ist und somit für Bildverarbeitungsaufgaben ungeeignet, wird der Raspberry Pi 5B als Ersatz eingesetzt, um die Kernaufgaben der maschinellen Bildverarbeitung zu übernehmen. Das System wird über ein 5V 5A Netzteil mit Strom versorgt, um den stabilen Betrieb aller Geräte zu gewährleisten.
Da der im Arduino Uno R3 verwendete Atmega328-Mikrocontroller hinsichtlich Datenverarbeitung, RAM und Flash-Speicher begrenzt ist und somit für Bildverarbeitungsaufgaben ungeeignet, wird der Raspberry Pi 5B als Ersatz eingesetzt, um die Kernaufgaben der maschinellen Bildverarbeitung zu übernehmen. Das System wird über ein 5V 5A Netzteil mit Strom versorgt, um den stabilen Betrieb aller Geräte zu gewährleisten.


Zeile 134: Zeile 133:
Das gesamte System wird auf einer speziell angefertigten Leiterplatte integriert, um eine saubere und zuverlässige Verbindung der Leitungen sicherzustellen und das Gerät erfolgreich in ein Gehäuse von der Größe einer Schuhschachtel einzubauen.
Das gesamte System wird auf einer speziell angefertigten Leiterplatte integriert, um eine saubere und zuverlässige Verbindung der Leitungen sicherzustellen und das Gerät erfolgreich in ein Gehäuse von der Größe einer Schuhschachtel einzubauen.
Eine Gesamtübersicht über die beschriebenen Komponenten und ihre Verknüpfung ist in "Bild 3" dargestellt. <br/>
Eine Gesamtübersicht über die beschriebenen Komponenten und ihre Verknüpfung ist in "Bild 3" dargestellt. <br/>
[[Datei:Winkerraetsel Komponenten.png|frame|400px|center|Bild 3: Relevante, technische Komponenten des Winkerrätsels]]


== Material und Stückliste ==
== Material und Stückliste ==
Zeile 149: Zeile 150:
! style="font-weight: bold;" | Bezeichnung / Komponente
! style="font-weight: bold;" | Bezeichnung / Komponente
! style="font-weight: bold;" | technische Bezeichnung
! style="font-weight: bold;" | technische Bezeichnung
! style="font-weight: bold;" | Beschreibung
! style="font-weight: bold;" | Abbildung
! style="font-weight: bold;" | Abbildung
|-
|-
Zeile 158: Zeile 158:
|RASP PI 5B 4GB mit Ladegerät und Gehäuse
|RASP PI 5B 4GB mit Ladegerät und Gehäuse
|[https://www.reichelt.de/das-raspberry-pi-5-b-4gb-black-bundle-rpi5-bbdl-4gb-p362101.html?&nbc=1&trstct=lp_1358_155298 RPI5 BBDL 4GB Das Raspberry PI 5 B 4GB Black Bundle]
|[https://www.reichelt.de/das-raspberry-pi-5-b-4gb-black-bundle-rpi5-bbdl-4gb-p362101.html?&nbc=1&trstct=lp_1358_155298 RPI5 BBDL 4GB Das Raspberry PI 5 B 4GB Black Bundle]
|Der Raspberry Pi 5 ist ein fortschrittlicher Einplatinencomputer mit einem 2,4 GHz Quad-Core ARM Cortex-A76-Prozessor, Durch den schnelleren Prozessor und verbesserte GPU eignet sich der Raspberry Pi 5 hervorragend für rechenintensive Projekte wie Bildverarbeitung
|[[Datei:Raspberry pi 5B Gruppe.jpg|125px|mini|links|Bild 3: Raspberry pi 5 ]]<ref name"RPI5"> Raspberry Pi 5 Gruppe., [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/das-raspberry-pi-5-b-4gb-black-bundle-rpi5-bbdl-4gb-p362101.html?&nbc=1&trstct=lp_1358_155298</ref><br>  
|[[Datei:Raspberry pi 5B Gruppe.jpg|125px|mini|links|Bild 3: Raspberry pi 5 ]]<ref name"RPI5"> Raspberry Pi 5 Gruppe., [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/das-raspberry-pi-5-b-4gb-black-bundle-rpi5-bbdl-4gb-p362101.html?&nbc=1&trstct=lp_1358_155298</ref><br>  
|-
|-
Zeile 168: Zeile 167:
|Kurzhubtaster  
|Kurzhubtaster  
|[https://www.reichelt.de/kurzhubtaster-6x6-mm-hoehe-13-mm-12-v-vert--jtp-1130-p27894.html?&trstct=pos_0&nbc=1 JTP-1130 Kurzhubtaster 6x6 mm, Höhe: 13 mm, 12 V, vert]
|[https://www.reichelt.de/kurzhubtaster-6x6-mm-hoehe-13-mm-12-v-vert--jtp-1130-p27894.html?&trstct=pos_0&nbc=1 JTP-1130 Kurzhubtaster 6x6 mm, Höhe: 13 mm, 12 V, vert]
|Ein Kurzhubtaster 6x6 mm ist ein kleiner, mechanischer Taster mit einem standardisierten Gehäuse von 6x6 mm Größe und kurzem Hubweg
|[[Datei:Kurzhubtaster 6x6 mm.jpg|125px|mini|links|Bild 4:Kurzhubtaster 6x6 mm ]]<ref name"JTP-1130">  Kurzhubtaster 6x6 mm, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/kurzhubtaster-6x6-mm-hoehe-13-mm-12-v-vert--jtp-1130-p27894.html?&trstct=pos_0&nbc=1</ref><br>  
|[[Datei:Kurzhubtaster 6x6 mm.jpg|125px|mini|links|Bild 4:Kurzhubtaster 6x6 mm ]]<ref name"JTP-1130">  Kurzhubtaster 6x6 mm, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/kurzhubtaster-6x6-mm-hoehe-13-mm-12-v-vert--jtp-1130-p27894.html?&trstct=pos_0&nbc=1</ref><br>  
|-
|-
Zeile 178: Zeile 176:
| LCD128X64
| LCD128X64
|[https://www.reichelt.de/entwicklerboards-display-grafik-lcd-128x64-pixel-debo-lcd128x64-p335007.html?&trstct=pos_0&nbc=1 DEBO LCD128X64 Entwicklerboards - Display Grafik-LCD, 128x64 Pixel]
|[https://www.reichelt.de/entwicklerboards-display-grafik-lcd-128x64-pixel-debo-lcd128x64-p335007.html?&trstct=pos_0&nbc=1 DEBO LCD128X64 Entwicklerboards - Display Grafik-LCD, 128x64 Pixel]
|Das LCD-Display 128x64 Pixel aus dem verlinkten Angebot ist ein grafisches Displaymodul, das eine Auflösung von 128x64 Pixeln bietet. Es eignet sich ideal für Entwicklerprojekte, bei denen eine einfache Anzeige von Grafiken, Symbolen oder Texten erforderlich ist
|[[Datei:LCD 128x64.jpg|125px|mini|links|Bild 5: LCD128X64]]<ref name"LCD128X64"> LCD128X64, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/entwicklerboards-display-grafik-lcd-128x64-pixel-debo-lcd128x64-p335007.html?&trstct=pos_0&nbc=1</ref><br>  
|[[Datei:LCD 128x64.jpg|125px|mini|links|Bild 5: LCD128X64]]<ref name"LCD128X64"> LCD128X64, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/entwicklerboards-display-grafik-lcd-128x64-pixel-debo-lcd128x64-p335007.html?&trstct=pos_0&nbc=1</ref><br>  
|-
|-
Zeile 188: Zeile 185:
|Webcam
|Webcam
|[https://www.reichelt.de/webcam-720p-hdready-con-amdis03b-p292005.html?&trstct=pos_7&nbc=1CON AMDIS03B Webcam, 720p, HDready]
|[https://www.reichelt.de/webcam-720p-hdready-con-amdis03b-p292005.html?&trstct=pos_7&nbc=1CON AMDIS03B Webcam, 720p, HDready]
|720p HD Webcam (Modell: AMDIS03B) bietet eine Auflösung von 1280x720 Pixeln und ist ideal für einfache Videoanwendungen
|[[Datei:720p HD Webcam.jpg|125px|mini|links|Bild 6:720p HD Webcam]]<ref name"Webcam">  CON AMDIS03B Webcam, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/webcam-720p-hdready-con-amdis03b-p292005.html?&trstct=pos_7&nbc=1CON</ref><br>  
|[[Datei:720p HD Webcam.jpg|125px|mini|links|Bild 6:720p HD Webcam]]<ref name"Webcam">  CON AMDIS03B Webcam, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/webcam-720p-hdready-con-amdis03b-p292005.html?&trstct=pos_7&nbc=1CON</ref><br>  
|-
|-
Zeile 198: Zeile 194:
|Signalflaggen  
|Signalflaggen  
|[https://www.amazon.de/molinoRC-Deutschland-Fahne-Stockfahne-Kinder-Fahne-Deutschland-Flagge/dp/B079SL8MRD Kleine Fahne 20 x 14 cm]
|[https://www.amazon.de/molinoRC-Deutschland-Fahne-Stockfahne-Kinder-Fahne-Deutschland-Flagge/dp/B079SL8MRD Kleine Fahne 20 x 14 cm]
|Die Fahnen können selbst hergestellt werden
|[[Datei:Fahne.jpg|125px|mini|links| Bild 7: Signalflaggen ]] <ref name"Flagge">  Deutschland Flagge, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.amazon.de/molinoRC-Deutschland-Fahne-Stockfahne-Kinder-Fahne-Deutschland-Flagge/dp/B079SL8MRD</ref><br>  
|[[Datei:Fahne.jpg|125px|mini|links| Bild 7: Signalflaggen ]] <ref name"Flagge">  Deutschland Flagge, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.amazon.de/molinoRC-Deutschland-Fahne-Stockfahne-Kinder-Fahne-Deutschland-Flagge/dp/B079SL8MRD</ref><br>  
|-
|-
Zeile 208: Zeile 203:
|Map mit Flaggensignalen
|Map mit Flaggensignalen
|[https://www.irisluckhaus.de/2016/infografik-flaggensprache/ Flaggensprache oder Winkeralphabet]
|[https://www.irisluckhaus.de/2016/infografik-flaggensprache/ Flaggensprache oder Winkeralphabet]
|Das Map kann selbst hergestellt werden
|
|


Zeile 215: Zeile 209:


= Komponentenspezifikation =
= Komponentenspezifikation =
=== Technische Informationen der Hardware===
Im Folgenden werden die Spezifikationen der für dieses Projekt verwendeten wichtigen Komponenten kurz erläutert.
Die Abbildung?? zeigt hauptsächlich das Hardware-Design des Raspberry Pi 5 sowie die Anordnung seiner zahlreichen Schnittstellen und Funktionsmodule. Diese Hardware-Komponenten arbeiten zusammen und bilden das leistungsstarke Funktionssystem des Raspberry Pi. Für dieses Projekt ist der BCM2712-Prozessor des Raspberry Pi 5 von entscheidender Bedeutung. Dieser hochleistungsfähige Quad-Core-ARM-Cortex-A76-Prozessor ist verantwortlich für das Ausführen des Betriebssystems und die effiziente Verarbeitung komplexer Berechnungsaufgaben, insbesondere im Zusammenhang mit der Schlüsselanwendung von Bildverarbeitungsalgorithmen.
 
Darüber hinaus bietet der Raspberry Pi 5 eine Vielzahl an Schnittstellen. Raspberry Pi 5 ist mit 40 Pins ausgestattet  und eine Vielzahl von Schnittstellen bietet, darunter GPIO, I2C, SPI und UART. Darüber hinaus unterstützt der Raspberry Pi die Erzeugung von Hardware-PWM-Signalen, die eine präzise Steuerung von Peripheriegeräten ermöglichen. Aus der Abbildung?? <ref name"Raspberry-Pi- hardware">Raspberry Pi hardware - Raspberry Pi Documentation, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html</ref>.geht außerdem hervor, dass der Raspberry Pi 5 über die USB-Schnittstelle mit verschiedenen Kommunikationsgeräten verbunden werden kann, was seine Anwendungsbereiche erheblich erweitert.
=== Raspberry Pi 5 ===
[[Datei:GPIO Raspberry Pi 5.png|mini|338px|Abb.??: Pin Belegung Raspberry Pi 5]]
<gallery widths="460px" heights="280px" captionalign="center">
Datei:Hardware Raspberry Pi 5.jpg|Abb.??: Zusammensetzung der Hardware Raspberry Pi 5 <ref name"Technische-Daten-des Raspberry-PI-5">Technische Daten des Raspberry PI 5, [kein Datum]. [online]. [Zugriff am: 23 November 2024]. Verfügbar unter: https://www.nerdsheaven.de/raspberry-pi-5/</ref>
Datei:GPIO Raspberry Pi 5.png|Abb.??: Pin Belegung Raspberry Pi 5 <ref name"Raspberry-Pi- hardware">Raspberry Pi hardware - Raspberry Pi Documentation, [kein Datum]. [online]. [Zugriff am: 23 November 2024]. Verfügbar unter: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html</ref>
</gallery>
 
'''Prozessor''':
* Der Raspberry Pi 5 verwendet den BCM2712-Prozessor, einen Quad-Core-ARM-Cortex-A76-Chip mit bis zu 2,4 GHz. Er ermöglicht das Betriebssystem und die Verarbeitung anspruchsvoller Aufgaben, wie z. B. Bildverarbeitung.
 
'''Schnittstellen''':
* Der Raspberry Pi 5 bietet 40 Pins.
* Unterstützt Kommunikationsschnittstellen wie I2C, SPI und UART.
* Die Unterstützung von Hardware-PWM-Signalen.
* Ausgestattet mit 2x USB 3.0 und 2x USB 2.0.
* Die genaue Pin-Belegung ist in der Abbildung?? dargestellt.
 
'''Stromversorgung''':
* Über den USB-C-Anschluss mit einer empfohlenen Versorgung von 5,1 V und einem Strom von 5 A.
* Alternativ über die VCC- und GND-Pins, die für integrierte Anwendungen nützlich sind.
 
 
 
=== AMDIS03B Webcam ===
<gallery widths="460px" heights="280px" captionalign="center">
Datei:AMDIS03B Webcam.jpg|Abbildung??: AMDIS03B Webcam
</gallery>
'''Schnittstellen''': 
 
* Verwendet eine standardmäßige USB-3.0-Schnittstelle.
 
'''Systemkompatibilität''': 
 
* Kompatibel mit verschiedenen Betriebssystemen (wie Windows, Linux, macOS usw.), keine zusätzlichen Treiber erforderlich, sofort einsatzbereit.
 
'''Auflösungsunterstützung''': 
 
* Unterstützt eine Auflösung von bis zu 1080P (Full HD).
 
 
=== LCD 128x64 ===
<gallery widths="460px" heights="280px" captionalign="center">
Datei:ST7920.jpg|Abbildung??: Hauptcontoller ST7920
Datei:Pin Belegng.jpg.jpg|Abbildung??: Pin Belegng LCD 128x64
 
</gallery>
 
'''Display-Typ''': 
*  Monochromes LCD mit einer Auflösung von 128x64 Pixeln. 
* Unterstützt sowohl grafische als auch alphanumerische Darstellung.
 
'''Controller''': 
* Ausgestattet mit dem ST7920-Controller.
 
'''Betriebsspannung''': 
* Betriebsspannung: 5V DC. 
 
'''Kommunikationsschnittstellen''': 
* 8-Bit-Parallel-Modus. 
* Serieller SPI-Modus.(die entsprechenden Pins sind in der Abbildung als RS (CS), RW (MOSI) und E (SCK) gekennzeichnet)
* Der Pin PSB ist für die Auswahl des Kommunikationsmodus verantwortlich. Bei einem Low-Pegel wird SPI aktiviert, bei einem High-Pegel erfolgt die parallele Kommunikation.
 
=== Servo MG996R ===
<gallery widths="460px" heights="180px" captionalign="center">
Datei:MG996R Servo.jpg|Abbildung??: MG996R Servo
</gallery>
'''Servo Typ''': 
 
* Standardgröße Digitalservo
 
'''Drehbereich''': 
 
* 0° bis 180°
 
'''Steuersignal''': 
 
* PWM-Signal 
* Pulsweiten zwischen 500 µs bis 2500 µs, entsprechend einem Drehbereich von 0° bis 180°.
 
'''Betriebsspannung''':
* 4,8 V bis 7,2 V
 
 
----
 
= Umsetzung HW =
=== Visualisierung der Hardwareverbindung===
<gallery widths="300px" heights="300px" captionalign="center">
Datei:Verkabelungsplan Winkerrätsel.jpg|Abildung 1: Verkabelungsplan
Datei:Winkerrätsel Schaltplan.jpg|Abildung 2: Schaltplan
Datei:PCB.jpg|Abildung 3: PCB
</gallery>
Die obigen drei Abbildungen zeigen:
# Wie ein Modell auf einem Breadboard schnell aufgebaut werden kann.
# Die Verbindungen zwischen den Pins.
# Das spätere 3D-Modell, das erstellt werden soll.
 
===Beschreibung der Hardwareverbindung===
====LCD128x64 mit Raspberry Pi 5====
Die Hardwareverbindung basiert auf den in der ''Komponentenspezifikation'' beschriebenen Eigenschaften. Als erstes wird die Verbindung des wichtigsten Hardwareelements, dem LCD-Bildschirm, hergestellt. Da sowohl der LCD-Bildschirm als auch der Raspberry Pi die Hardware-SPI-Schnittstelle unterstützen, wird SPI-Kommunikation gewählt. Im Vergleich zur parallelen Kommunikation reduziert SPI die Verkabelungskomplexität erheblich und vermeidet die Verschwendung von GPIO-Ressourcen.
 
# Der digitale Pin '''GPIO25''' des Raspberry Pi 5 wird als Chip-Select-Pin verwendet und mit dem Chip-Select-Pin '''RS''' des LCD-Bildschirms verbunden. GPIO25 wurde gewählt, da es lediglich als I/O-Pin verwendet wird und keine anderen Funktionen erfüllt.
# Der SPI-Daten-Pin '''GPIO10 (MOSI)''' des Raspberry Pi wird mit dem '''RW (MOSI)'''-Pin des LCD-Bildschirms verbunden.
# Der SPI-Takt-Pin '''GPIO11 (SCK)''' des Raspberry Pi wird mit dem '''E (SCK)'''-Pin des LCD-Bildschirms verbunden.
# Der '''PSB'''-Pin des LCD-Bildschirms wird mit GND verbunden, um den Pegel auf Low zu setzen und damit die SPI-Kommunikation zu aktivieren.
 
Nachdem die SPI-Schnittstelle verbunden wurde, muss der LCD128x64-Bildschirm mit Strom versorgt werden. Der Bildschirm benötigt nicht nur Strom für das LCD-Modul und den Controller, sondern auch eine separate Stromversorgung für die Hintergrundbeleuchtung.
 
# Das LCD-Modul wird über die Pins '''GND (-)''' und '''VCC (+)''' mit 5V-Stromquelle versorgt.
# Die Hintergrundbeleuchtung wird über die Pins '''BLK (-)''' und '''BLA (+)''' mit 5V-Stromquelle versorgt.
 
====AMDIS03B Webcam mit Raspberry Pi 5====
Im Schaltplan wird der USB-Anschluss nicht dargestellt, da er nicht direkt in der Schaltung verbunden werden kann.
 
# Verbinden Sie den USB-Anschluss der '''AMDIS03B Webcam''' direkt mit einem beliebigen USB 3.0-Port des '''Raspberry Pi 5'''.
 
 
====Taste mit Raspberry Pi 5====
Basierend auf den Anforderungen dieses Projekts müssen zwei Tasten angeschlossen werden: 
Eine Taste dient zum Starten des Spiels, die andere zur Auswahl des Schwierigkeitsgrades. 
Da die Funktion der Tasten relativ einfach ist, sollten GPIO-Pins gewählt werden, die keine zusätzlichen Funktionen besitzen. Dies verhindert Portkonflikte und erleichtert die zukünftige Erweiterung für externe Geräte.
 
# Die erste Taste wird mit einer Seite an den '''GPIO23''' des Raspberry Pi und mit der anderen Seite an '''GND''' angeschlossen.
# Die zweite Taste wird mit einer Seite an den '''GPIO24''' des Raspberry Pi und mit der anderen Seite an '''GND''' angeschlossen.
 
 
====LED mit Raspberry Pi 5====
Zu Beginn des Projekts wurde nicht berücksichtigt, dass das Spiel möglicherweise nicht ordnungsgemäß funktioniert, wenn sich der Spieler außerhalb des Kamerabereichs befindet. Um dieses Problem zu lösen, wurde eine auffällige rote LED hinzugefügt, die anzeigt, ob der Spieler außerhalb des Bereichs ist. 
Leuchtet die LED, bedeutet dies, dass der Spieler nicht im Bereich ist. Dieses Prinzip wird vor Spielbeginn über den LCD-Bildschirm in den Spielhinweisen erläutert.
 
Beim Anschließen der LED muss sie mit einem GPIO verbunden werden, der keine zusätzlichen Funktionen hat. Außerdem ist aufgrund der geringen Vorwärtsimpedanz und des hohen Stromflusses einer LED ein geeigneter Vorwiderstand erforderlich.
 
# Der positive Pol der LED wird mit dem '''GPIO16''' des Raspberry Pi verbunden.
# Ein 150Ω-Widerstand wird zwischen den negativen Pol der LED und GND geschaltet.
 
====Servo MG996R mit Raspberry Pi 5====
Der Einsatz der MG996R-Servos ist zwar nicht Teil der aktuellen Projektanforderungen, jedoch wurden in der Hardwareverbindung bereits Anschlüsse für die Servos vorgesehen, um eine zukünftige Erweiterung zu ermöglichen. Falls zusätzliche Zeit zur Verfügung steht, soll ein doppelachsiges System aus zwei MG996R-Servos integriert werden, das mithilfe von PID-Regelung die Kamera in X- und Y-Richtung automatisch ausrichtet, um den Spieler optimal im Bild zu positionieren und die Spielerfahrung zu verbessern.
 
# Der erste MG996R wird mit dem '''GPIO12''' des Raspberry Pi verbunden, da dieser Pin ein präzises Hardware-PWM-Signal erzeugen kann.
# Der zweite MG996R wird mit dem '''GPIO13''' des Raspberry Pi verbunden, der ebenfalls ein präzises Hardware-PWM-Signal erzeugen kann.
# Beide MG996R-Servos werden mit ihren VCC- und GND-Pins an eine 5V-Stromquelle angeschlossen.
 
 
==== Stromversorgung für Raspberry Pi 5 und Peripheriegeräte ====
Da der Raspberry Pi 5 während des Betriebs einen hohen Strombedarf hat (mindestens 3A), wird eine Stromversorgung mit vier in Reihe geschalteten 3,7V-Akkus mit hoher Stromabgabe verwendet. Diese Akkus werden mit zwei MP1584-DC-DC-Abwärtswandlern kombiniert, um den Raspberry Pi 5 und die Peripheriegeräte separat mit Energie zu versorgen und einen stabilen Systembetrieb zu gewährleisten.
 
# Der erste MP1584-DC-DC-Wandler versorgt über seine Ausgänge '''OUT+''' und '''OUT-''' das LCD128x64-Display und die Servos mit '''VCC''' und '''GND'''.
# Der zweite MP1584-DC-DC-Wandler versorgt den Raspberry Pi 5, indem seine Ausgänge '''OUT+''' und '''OUT-''' mit den physischen Pins '''1 (VCC)''' und '''3 (GND)''' des Raspberry Pi 5 verbunden werden.
 
= Umsetzung SW =
 
==Betriebssysteminstallation==
<gallery widths="800px" heights="500px" captionalign="center">
Datei:Raspberry Pi 5 Start.jpg|mini|Abb.??: Raspberry Pi 5 Start
</gallery>
Bei der ersten Nutzung des Raspberry Pi 5 muss ein Betriebssystem installiert werden. Benutzer können das offizielle Tool Raspberry Pi Imager herunterladen und das empfohlene Betriebssystem Raspberry Pi OS auswählen. Dieses wird auf eine MicroSD-Karte geschrieben, die anschließend in den Raspberry Pi eingesetzt wird, um die Installation abzuschließen. Nach erfolgreicher Installation zeigt die Abbildung die Benutzeroberfläche des Betriebssystems, die für Desktop-Anwendungen, Programmierung und Hardwaresteuerung verwendet werden kann.
 
 
==LCD Modul==
===SPI Konfiguration bei Raspberry Pi 5===
<source lang="python">
# Definition Pins SPI und CS
SS_PIN = 25
cs = DigitalOutputDevice(SS_PIN)
spi = spidev.SpiDev()
 
def spi_init():
    spi.open(0, 0)  # Verwenden SPI Kanal 0
    spi.max_speed_hz = 2000000  # SPI Clock
    spi.mode = 0b11  # CPOL=1, CPHA=1 Modi 3
    spi.bits_per_word = 8
</source>
 
===Daten Übertragung===
<source lang="python">
def senden_zu_st7920(Auswahl, Daten):
    if Auswahl == 0:
      Start_Datei = 0xf8
    else:
      Start_Datei = 0xfa
   
    MSB = Daten & 0xF0
    LSB = (Daten << 4) & 0xF0
    cs.on()  # SPI KOmmunikation Start
    spi.writebytes([Start_Datei])
    spi.writebytes([MSB])
    spi.writebytes([LSB])
    cs.off()  # SPI KOmmunikation End
</source>
 
===LCD Konfiguration===
<source lang="python">
def Lcd_Konfiguration():
    senden_zu_st7920(0, 0x30)  # Funktion Einstellung 0x30 fuer Schriftdarstellung
    time.sleep(0.00072)  # 72 us Pause fuer Einstellung
    senden_zu_st7920(0, 0x0C)  # Cursor OFF
    time.sleep(0.00072)  # 72 us Pause fuer Einstellung 
    senden_zu_st7920(0, 0x01)  # Eliminierung der Inhalte in LCD
    time.sleep(0.0016) # Pause fuer Einstellung
</source>
 
===Zeichenkette Darstellung===
<source lang="python">
def Darstellung_Zeichenkette(Zeile,Spalte,Text_Eingeben):
    Erster_Lauf = 1;
    for Zeile in range(Zeile, 5):
        if Erster_Lauf==1:
          senden_zu_st7920(0, 0x01) # Eliminierung der Inhalte in LCD
          time.sleep(0.0016)  # 16ms Pause fuer Einstellung
          start_index = 0;
          end_index = 16-(2*(Spalte-1));
          Einstellung_cursor(Zeile, Spalte)         
          line = Text_Eingeben[start_index:end_index] 
          Erster_Lauf=0;
         
        else:
          start_index = end_index
          end_index = start_index+16
          Einstellung_cursor(Zeile, 1)             
          line = Text_Eingeben[start_index:end_index] 
 
       
        for char in line:
            senden_zu_st7920(1, ord(char))
</source>


== Ansatz ==
== Ansatz ==
Zeile 225: Zeile 442:
Die Idee ist, die Ausrichtung des Armes zur Körpermitte mit graphischen beziehungsweise geometrischen Methoden zu bestimmen.
Die Idee ist, die Ausrichtung des Armes zur Körpermitte mit graphischen beziehungsweise geometrischen Methoden zu bestimmen.


= Umsetzung (HW/SW) =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
----


= Komponententest =
= Komponententest =

Aktuelle Version vom 24. November 2024, 23:38 Uhr

Autor: Benedikt Lipinski und Weiran Wang

Strichfigürchen mit einer Kommunikationsaufforderung durch Flaggensignal
"Attention", darf ich um Ihre Aufmerksamkeit bitten - Mit dieser Flaggen bewegung wird in der Flaggen Semaphore eine Verbindung aufgebaut. Vorlage:Anker

Einleitung

Unter Flaggenwinken versteht man in der Nautik nicht das wilde Gestikulieren mit einer Fahne, sondern vielmehr ein komplexes System rein optischer Kommunikation. Während sich an Land schon früh die Kommunikation mittels optischer Telegrafie durchsetzte[1], wurde auch in der Schifffahrt die Kommunikation mittels Flaggenzeichen, den so genannten Semaphoren, immer populärer. Heute wird aufgrund der leistungsfähigen Funktechnik in der Regel nicht mehr mit Flaggen kommuniziert. Dennoch soll die Kommunikation via flaggen auch im Zeitalter der Elektronischen kommunikation zum Einsatz kommen, z.B. von der US Navy bei der Betankung von Schiff zu Schiff.[2]
Der Spieler soll nun selbst die Rolle eines Kommunikationspartners übernehmen und seinem Gegenüber (dem Spiel) eine geheime und verschlüsselte Nachricht zukommen lassen.

Theoretische Grundlagen

Flaggen Semaphore

Video 1: Demonstration Winkeralphabet

Eine Kommunikation über Flaggen ist, anders als man auf den ersten Blick vermuten könnte, gar nicht so weit von der Kommunikation entfernt, die uns Studierenden der 2020er Jahren in den Informatikmodulen gelehrt wird[3]. Denn die in dem "Video 1" zusehende und für Menschen lesbare Codierung einzelner Flaggenpositionen ist nichts anderes als die Codierung von Zeichen in eine Bitfolge, nur dass sich an dieser Stelle die Codierung der Nachricht und das Transportprotokoll unterscheiden[4]. Die Kommunikation mit den Flaggen beginnt mit der Aufforderung zum Verbindungsaufbau (Attention #Anker:AttentionMessage).

Tabelle 1: Semaphore Alphabet
#
1 A Buchstabe A im Semaphorealphabet 2 B Buchstabe B im Semaphorealphabet 3 C Buchstabe C im Semaphorealphabet 4 D

Buchstabe D im Semaphorealphabet

5 E Buchstabe E im Semaphorealphabet 6 F Buchstabe F im Semaphorealphabet 7 G Buchstabe G im Semaphorealphabet 8 H Buchstabe H im Semaphorealphabet
9 I Buchstabe I im Semaphorealphabet 10 J Buchstabe J im Semaphorealphabet 11 K Buchstabe K im Semaphorealphabet 12 L Buchstabe L im Semaphorealphabet
13 M Buchstabe M im Semaphorealphabet 14 N Buchstabe N im Semaphorealphabet 15 O Buchstabe O im Semaphorealphabet 16 P Buchstabe P im Semaphorealphabet
17 Q Buchstabe Q im Semaphorealphabet 18 R Buchstabe R im Semaphorealphabet 19 S Buchstabe S im Semaphorealphabet 20 T Buchstabe T im Semaphorealphabet
21 U Buchstabe U im Semaphorealphabet 22 V Buchstabe V im Semaphorealphabet 23 W Buchstabe W im Semaphorealphabet 24 X Buchstabe X im Semaphorealphabet
25 Y Buchstabe Y im Semaphorealphabet 26 Z Buchstabe Z im Semaphorealphabet

Bestehende Arbeiten

Die Eingabe von Flaggensignalen in ein Computersystem ist nicht nur als Rätsel für ein Escape-Game interessant, sondern auch in anderen Projekten ein nicht zu vernachlässigender Faktor. Beispielsweise kann die Abbildung des Flaggenalphabets auf die Arme eines Benutzers dazu verwendet werden, Tastenanschläge auf der Tastatur zu simulieren. Ein Beispiel dafür ist das GitHub-Projekt des Entwicklers everythingishacked, der eine vollständige Tastatursimulation mit Hilfe von Handsemaphoren in Python umgesetzt hat[5]. Auch in der Mathematiksoftware Matlab gibt es bereits Beispiele für Vorstufen einer Armpositionserkennung[6] In beiden Fällen führt der Weg zur Buchstabenerkennung über den Schritt einer Schätzung der Körperhaltung. Konkret ist in diesem Fall die Ermittlung mittels Deep Learning Algorithmen gemeint.

Anforderungen

Tabelle 2: Anforderungen an das Winkerrätsel
ID Inhalt Erstellt von: Erstellt am: Geprüft von: Geprüft am:
1 System Anforderungen
1.1 Das System muss eine Person durch bildbasierte Verfahren identifizieren. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.2 Das System muss die Armhaltung erkennen. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.3 Das System muss die Position der Arme in Winkel umwandeln. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.4 Das System muss die Winkel in Buchstaben einteilen. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.5 Das System muss eine Rückmeldung über den eingegebenen Buchstaben geben. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.6 Das System muss eine Rückmeldung über die richtige Eingabe signalisieren, wenn der Buchstabe richtig angezeigt wird. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.7 Das System muss bei korrekter Eingabe eine korrekte Stelle des Lösungswortes ausgeben. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.8 Zur Erkennung der menschlichen Körperhaltung ist die Open-CV-Bibliothek zu verwenden. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.9 Die verwendete Kamera muss eine Auflösung haben, bei der eine Person vollständig in das Bild passt. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.10 Das Spiel soll per Knopfdruck oder über eine angeschlossene Tastatur gestartet werden. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.11 Der Schwierigkeitsgrad muss über eine Taste oder eine angeschlossene Tastatur einstellbar sein. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.12 Im Profi-Spielmodus sollen nicht nur Buchstaben, sondern auch kurze Wörter oder Zahlen eingegeben werden. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.13 Im Profi-Spielmodus soll die bisherige Eingabe auf dem Bildschirm angezeigt werden. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.14 Im Spielmodus Profi muss das Löschen der letzten Ziffer durch ein Flaggensignal möglich sein. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.15 Das System soll nach Möglichkeit in Matlab realisiert werden; sollten gute Gründe gegen die Verwendung von Matlab sprechen, wird alternativ die Sprache Python verwendet. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
1.16 Im Anfängermodus soll die spielende Person eine Hilfestellung erhalten Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
2 Oganisatorische Anforderungen
2.1 Das Rätsel soll nach Erklärung innerhalb von 5 Minuten lösbar sein. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
2.2 Das Puzzle soll verschiedene Schwierigkeitsgrade haben. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
2.3 Das Material zum Verständnis des Puzzles sollte in nicht-elektrischer Hardware vorhanden sein. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024
2.4 Das System muss zur Aufbewahrung und zum Transport in einen Schuhkarton passen. Benedikt Lipinski 10.10.2024 Weiran Wang 10.10.2024

Funktionaler Systementwurf/Technischer Systementwurf

Funktionaler Systementwurf

Als Vorbereitung für das Winkerrätsel, zunächst durch die spielende Person, der Schwierigkeitsgrad gewählt werden. Das Spiel beginnt bei dem Winkerrätsel nicht mit dem drücken eines Startbuttons oder ähnlichem, sondern in Escape-Room Manier mit dem erkennen des Problems selbst. Hierzu bekommt die Spielende Person nach einstellen des Schwierigkeitsgrades, lediglich die 2 Flaggen und Literatur über Signale ausgehändigt. Somit ergibt sich als erste Aufgabe für die Spielenden, unter zu Hilfenahme der Flaggen zu erkenne, dass es sich bei der geforderten Aufgabe um das Winkeralphabet handelt. Mit der Erkenntnis aus der Literatur und der Tatsache, dass die spielende Person bereits unweigerlich Feedback zur erkannten Position bekommen wird, sollte durch die spielende Person kombiniert werden, nun mittels Körperposition den erhaltenen Rätselcode einzugeben.‎
Die spielende Person wird aufgrund des grafischen Feedbacks schnell verstehen, dass bei korrekter Eingabe eines Buchstabens, dieser umcodiert wird. Für den Spielmodus Profi, bei dem die spielende Person kleine Wörter aus der gängigen Sprache oder dem Internationalen Signal Kommunikation verwendet werden, bekommt die nutzende Person die bereits korrekt eingegebenen Buchstaben aufgelistet. Zudem wird der nutzenden Person aufgezeigt ob die eingegebene stelle korrekt oder falsch ist. Ziel ist es an dieser stelle, das Korrektur Signal zu benutzen. ‎
Mit der erfolgreichen Entschlüsselung der letzten Stelle, hat die spielende Person das Rätsel beendet und sich innerhalb des gesamten Spiels Schritt für schritt das Lösungswort erspielt. An dieser stelle ist nun auch das Winkerrätsel beendet. Grundsätzlich stehen der spielenden Person 3 Spielmodi zur Verfügung. Leicht: hier soll eine visuelle Hilfestellung für die spielende Person gegeben werden, diese muss durch die spielende Person nur noch Nach gemacht werden.
Im fortgeschrittenen Modus muss die Spielende Person, sich nun selbst an die Einzunehmende Position erinnern oder im Buch nachschlagen. Eingegeben werden müssen in diesem Modus auch nur einzelne Buchstaben. Der schwierigste Spielmodus, nur geeignet für Profis, fordert von der nutzenden Person die Eingabe kurzer Wörter, was gegebenen falls das Korrigieren der Eingabe nötig macht. Der Ablauf des Winkerrätsels, wie er aus der Sicht des Anwenders dargestellt werden soll, kann dem Ablaufschema in Bild 2 entnommen werden.

Bild 2: Relevante, technische Komponenten des Winkerrätsels

Technischer Systementwurf

Da der im Arduino Uno R3 verwendete Atmega328-Mikrocontroller hinsichtlich Datenverarbeitung, RAM und Flash-Speicher begrenzt ist und somit für Bildverarbeitungsaufgaben ungeeignet, wird der Raspberry Pi 5B als Ersatz eingesetzt, um die Kernaufgaben der maschinellen Bildverarbeitung zu übernehmen. Das System wird über ein 5V 5A Netzteil mit Strom versorgt, um den stabilen Betrieb aller Geräte zu gewährleisten.

In diesem Flaggen-Signal-Interaktionssystem fungiert eine Kamera als Sensor, die über das USB-Protokoll Bilddaten an den Raspberry Pi 5B überträgt. Der Raspberry Pi 5B verwendet vordefinierte Algorithmen, um die von den Spielern eingegebenen Flaggen-Signale zu erkennen, und gibt Rückmeldungen über ein 128x64 Pixel Display aus. Das Display ist über das SPI-Protokoll mit dem Raspberry Pi 5B verbunden, um eine effiziente Datenübertragung sicherzustellen.

Darüber hinaus ist das System mit einem Moduswahlknopf ausgestattet, der an die GPIO-Pins des Raspberry Pi 5B angeschlossen ist. Durch Überwachung der Spannungsänderungen an den Pins kann das System die Benutzereingaben erkennen und verarbeiten.

Das gesamte System wird auf einer speziell angefertigten Leiterplatte integriert, um eine saubere und zuverlässige Verbindung der Leitungen sicherzustellen und das Gerät erfolgreich in ein Gehäuse von der Größe einer Schuhschachtel einzubauen. Eine Gesamtübersicht über die beschriebenen Komponenten und ihre Verknüpfung ist in "Bild 3" dargestellt.

Bild 3: Relevante, technische Komponenten des Winkerrätsels

Material und Stückliste

ID Anzahl Kosten pro Stück € Summe Bezeichnung / Komponente technische Bezeichnung Abbildung
1 1x 104,50€ 104,50€ RASP PI 5B 4GB mit Ladegerät und Gehäuse RPI5 BBDL 4GB Das Raspberry PI 5 B 4GB Black Bundle
Bild 3: Raspberry pi 5
[7]
2 1x 0,2€ 0,2€ Kurzhubtaster JTP-1130 Kurzhubtaster 6x6 mm, Höhe: 13 mm, 12 V, vert
Bild 4:Kurzhubtaster 6x6 mm
[8]
3 1x 9,9€ 9,9€ LCD128X64 DEBO LCD128X64 Entwicklerboards - Display Grafik-LCD, 128x64 Pixel
Bild 5: LCD128X64
[9]
4 1x 14,95€ 14,95€ Webcam AMDIS03B Webcam, 720p, HDready
Bild 6:720p HD Webcam
[10]
5 2x 0 € 0 € Signalflaggen Kleine Fahne 20 x 14 cm
Bild 7: Signalflaggen
[11]
6 1x 0€ 0€ Map mit Flaggensignalen Flaggensprache oder Winkeralphabet
Bild 8: Map mit Flaggensignalen
[12]

Komponentenspezifikation

Im Folgenden werden die Spezifikationen der für dieses Projekt verwendeten wichtigen Komponenten kurz erläutert.

Raspberry Pi 5

Prozessor:

  • Der Raspberry Pi 5 verwendet den BCM2712-Prozessor, einen Quad-Core-ARM-Cortex-A76-Chip mit bis zu 2,4 GHz. Er ermöglicht das Betriebssystem und die Verarbeitung anspruchsvoller Aufgaben, wie z. B. Bildverarbeitung.

Schnittstellen:

  • Der Raspberry Pi 5 bietet 40 Pins.
  • Unterstützt Kommunikationsschnittstellen wie I2C, SPI und UART.
  • Die Unterstützung von Hardware-PWM-Signalen.
  • Ausgestattet mit 2x USB 3.0 und 2x USB 2.0.
  • Die genaue Pin-Belegung ist in der Abbildung?? dargestellt.

Stromversorgung:

  • Über den USB-C-Anschluss mit einer empfohlenen Versorgung von 5,1 V und einem Strom von 5 A.
  • Alternativ über die VCC- und GND-Pins, die für integrierte Anwendungen nützlich sind.


AMDIS03B Webcam

Schnittstellen:

  • Verwendet eine standardmäßige USB-3.0-Schnittstelle.

Systemkompatibilität:

  • Kompatibel mit verschiedenen Betriebssystemen (wie Windows, Linux, macOS usw.), keine zusätzlichen Treiber erforderlich, sofort einsatzbereit.

Auflösungsunterstützung:

  • Unterstützt eine Auflösung von bis zu 1080P (Full HD).


LCD 128x64

Display-Typ:

  • Monochromes LCD mit einer Auflösung von 128x64 Pixeln.
  • Unterstützt sowohl grafische als auch alphanumerische Darstellung.

Controller:

  • Ausgestattet mit dem ST7920-Controller.

Betriebsspannung:

  • Betriebsspannung: 5V DC.

Kommunikationsschnittstellen:

  • 8-Bit-Parallel-Modus.
  • Serieller SPI-Modus.(die entsprechenden Pins sind in der Abbildung als RS (CS), RW (MOSI) und E (SCK) gekennzeichnet)
  • Der Pin PSB ist für die Auswahl des Kommunikationsmodus verantwortlich. Bei einem Low-Pegel wird SPI aktiviert, bei einem High-Pegel erfolgt die parallele Kommunikation.

Servo MG996R

Servo Typ:

  • Standardgröße Digitalservo

Drehbereich:

  • 0° bis 180°

Steuersignal:

  • PWM-Signal
  • Pulsweiten zwischen 500 µs bis 2500 µs, entsprechend einem Drehbereich von 0° bis 180°.

Betriebsspannung:

  • 4,8 V bis 7,2 V



Umsetzung HW

Visualisierung der Hardwareverbindung

Die obigen drei Abbildungen zeigen:

  1. Wie ein Modell auf einem Breadboard schnell aufgebaut werden kann.
  2. Die Verbindungen zwischen den Pins.
  3. Das spätere 3D-Modell, das erstellt werden soll.

Beschreibung der Hardwareverbindung

LCD128x64 mit Raspberry Pi 5

Die Hardwareverbindung basiert auf den in der Komponentenspezifikation beschriebenen Eigenschaften. Als erstes wird die Verbindung des wichtigsten Hardwareelements, dem LCD-Bildschirm, hergestellt. Da sowohl der LCD-Bildschirm als auch der Raspberry Pi die Hardware-SPI-Schnittstelle unterstützen, wird SPI-Kommunikation gewählt. Im Vergleich zur parallelen Kommunikation reduziert SPI die Verkabelungskomplexität erheblich und vermeidet die Verschwendung von GPIO-Ressourcen.

  1. Der digitale Pin GPIO25 des Raspberry Pi 5 wird als Chip-Select-Pin verwendet und mit dem Chip-Select-Pin RS des LCD-Bildschirms verbunden. GPIO25 wurde gewählt, da es lediglich als I/O-Pin verwendet wird und keine anderen Funktionen erfüllt.
  2. Der SPI-Daten-Pin GPIO10 (MOSI) des Raspberry Pi wird mit dem RW (MOSI)-Pin des LCD-Bildschirms verbunden.
  3. Der SPI-Takt-Pin GPIO11 (SCK) des Raspberry Pi wird mit dem E (SCK)-Pin des LCD-Bildschirms verbunden.
  4. Der PSB-Pin des LCD-Bildschirms wird mit GND verbunden, um den Pegel auf Low zu setzen und damit die SPI-Kommunikation zu aktivieren.

Nachdem die SPI-Schnittstelle verbunden wurde, muss der LCD128x64-Bildschirm mit Strom versorgt werden. Der Bildschirm benötigt nicht nur Strom für das LCD-Modul und den Controller, sondern auch eine separate Stromversorgung für die Hintergrundbeleuchtung.

  1. Das LCD-Modul wird über die Pins GND (-) und VCC (+) mit 5V-Stromquelle versorgt.
  2. Die Hintergrundbeleuchtung wird über die Pins BLK (-) und BLA (+) mit 5V-Stromquelle versorgt.

AMDIS03B Webcam mit Raspberry Pi 5

Im Schaltplan wird der USB-Anschluss nicht dargestellt, da er nicht direkt in der Schaltung verbunden werden kann.

  1. Verbinden Sie den USB-Anschluss der AMDIS03B Webcam direkt mit einem beliebigen USB 3.0-Port des Raspberry Pi 5.


Taste mit Raspberry Pi 5

Basierend auf den Anforderungen dieses Projekts müssen zwei Tasten angeschlossen werden: Eine Taste dient zum Starten des Spiels, die andere zur Auswahl des Schwierigkeitsgrades. Da die Funktion der Tasten relativ einfach ist, sollten GPIO-Pins gewählt werden, die keine zusätzlichen Funktionen besitzen. Dies verhindert Portkonflikte und erleichtert die zukünftige Erweiterung für externe Geräte.

  1. Die erste Taste wird mit einer Seite an den GPIO23 des Raspberry Pi und mit der anderen Seite an GND angeschlossen.
  2. Die zweite Taste wird mit einer Seite an den GPIO24 des Raspberry Pi und mit der anderen Seite an GND angeschlossen.


LED mit Raspberry Pi 5

Zu Beginn des Projekts wurde nicht berücksichtigt, dass das Spiel möglicherweise nicht ordnungsgemäß funktioniert, wenn sich der Spieler außerhalb des Kamerabereichs befindet. Um dieses Problem zu lösen, wurde eine auffällige rote LED hinzugefügt, die anzeigt, ob der Spieler außerhalb des Bereichs ist. Leuchtet die LED, bedeutet dies, dass der Spieler nicht im Bereich ist. Dieses Prinzip wird vor Spielbeginn über den LCD-Bildschirm in den Spielhinweisen erläutert.

Beim Anschließen der LED muss sie mit einem GPIO verbunden werden, der keine zusätzlichen Funktionen hat. Außerdem ist aufgrund der geringen Vorwärtsimpedanz und des hohen Stromflusses einer LED ein geeigneter Vorwiderstand erforderlich.

  1. Der positive Pol der LED wird mit dem GPIO16 des Raspberry Pi verbunden.
  2. Ein 150Ω-Widerstand wird zwischen den negativen Pol der LED und GND geschaltet.

Servo MG996R mit Raspberry Pi 5

Der Einsatz der MG996R-Servos ist zwar nicht Teil der aktuellen Projektanforderungen, jedoch wurden in der Hardwareverbindung bereits Anschlüsse für die Servos vorgesehen, um eine zukünftige Erweiterung zu ermöglichen. Falls zusätzliche Zeit zur Verfügung steht, soll ein doppelachsiges System aus zwei MG996R-Servos integriert werden, das mithilfe von PID-Regelung die Kamera in X- und Y-Richtung automatisch ausrichtet, um den Spieler optimal im Bild zu positionieren und die Spielerfahrung zu verbessern.

  1. Der erste MG996R wird mit dem GPIO12 des Raspberry Pi verbunden, da dieser Pin ein präzises Hardware-PWM-Signal erzeugen kann.
  2. Der zweite MG996R wird mit dem GPIO13 des Raspberry Pi verbunden, der ebenfalls ein präzises Hardware-PWM-Signal erzeugen kann.
  3. Beide MG996R-Servos werden mit ihren VCC- und GND-Pins an eine 5V-Stromquelle angeschlossen.


Stromversorgung für Raspberry Pi 5 und Peripheriegeräte

Da der Raspberry Pi 5 während des Betriebs einen hohen Strombedarf hat (mindestens 3A), wird eine Stromversorgung mit vier in Reihe geschalteten 3,7V-Akkus mit hoher Stromabgabe verwendet. Diese Akkus werden mit zwei MP1584-DC-DC-Abwärtswandlern kombiniert, um den Raspberry Pi 5 und die Peripheriegeräte separat mit Energie zu versorgen und einen stabilen Systembetrieb zu gewährleisten.

  1. Der erste MP1584-DC-DC-Wandler versorgt über seine Ausgänge OUT+ und OUT- das LCD128x64-Display und die Servos mit VCC und GND.
  2. Der zweite MP1584-DC-DC-Wandler versorgt den Raspberry Pi 5, indem seine Ausgänge OUT+ und OUT- mit den physischen Pins 1 (VCC) und 3 (GND) des Raspberry Pi 5 verbunden werden.

Umsetzung SW

Betriebssysteminstallation

Bei der ersten Nutzung des Raspberry Pi 5 muss ein Betriebssystem installiert werden. Benutzer können das offizielle Tool Raspberry Pi Imager herunterladen und das empfohlene Betriebssystem Raspberry Pi OS auswählen. Dieses wird auf eine MicroSD-Karte geschrieben, die anschließend in den Raspberry Pi eingesetzt wird, um die Installation abzuschließen. Nach erfolgreicher Installation zeigt die Abbildung die Benutzeroberfläche des Betriebssystems, die für Desktop-Anwendungen, Programmierung und Hardwaresteuerung verwendet werden kann.


LCD Modul

SPI Konfiguration bei Raspberry Pi 5

# Definition Pins SPI und CS
SS_PIN = 25
cs = DigitalOutputDevice(SS_PIN)
spi = spidev.SpiDev()

def spi_init():
    spi.open(0, 0)  # Verwenden SPI Kanal 0
    spi.max_speed_hz = 2000000  # SPI Clock
    spi.mode = 0b11  # CPOL=1, CPHA=1 Modi 3
    spi.bits_per_word = 8

Daten Übertragung

def senden_zu_st7920(Auswahl, Daten):
    if Auswahl == 0:
       Start_Datei = 0xf8
    else:
       Start_Datei = 0xfa
    
    MSB = Daten & 0xF0
    LSB = (Daten << 4) & 0xF0
    cs.on()  # SPI KOmmunikation Start
    spi.writebytes([Start_Datei])
    spi.writebytes([MSB])
    spi.writebytes([LSB])
    cs.off()  # SPI KOmmunikation End

LCD Konfiguration

def Lcd_Konfiguration():
    senden_zu_st7920(0, 0x30)  # Funktion Einstellung 0x30 fuer Schriftdarstellung 
    time.sleep(0.00072)  # 72 us Pause fuer Einstellung
    senden_zu_st7920(0, 0x0C)  # Cursor OFF 
    time.sleep(0.00072)  # 72 us Pause fuer Einstellung  
    senden_zu_st7920(0, 0x01)  # Eliminierung der Inhalte in LCD 
    time.sleep(0.0016) # Pause fuer Einstellung

Zeichenkette Darstellung

def Darstellung_Zeichenkette(Zeile,Spalte,Text_Eingeben):
    Erster_Lauf = 1;
    for Zeile in range(Zeile, 5):
        if Erster_Lauf==1:
           senden_zu_st7920(0, 0x01) # Eliminierung der Inhalte in LCD 
           time.sleep(0.0016)   # 16ms Pause fuer Einstellung 
           start_index = 0;
           end_index = 16-(2*(Spalte-1));
           Einstellung_cursor(Zeile, Spalte)          
           line = Text_Eingeben[start_index:end_index]  
           Erster_Lauf=0;
           
        else:
           start_index = end_index
           end_index = start_index+16
           Einstellung_cursor(Zeile, 1)              
           line = Text_Eingeben[start_index:end_index]  

        
        for char in line:
            senden_zu_st7920(1, ord(char))

Ansatz

Ansatz für das Errechnen der Armposition
Ansatz für das Errechnen der Armposition

Da die Position der Arme beim Flaggenwinken in feste Bereiche mit einer festen Ausrichtung eingeteilt werden kann, ist die Idee, die Position der Arme mit grafischen oder geometrischen Verfahren zu bestimmen. Die Idee ist, die Ausrichtung des Armes zur Körpermitte mit graphischen beziehungsweise geometrischen Methoden zu bestimmen.















Komponententest

Ergebnis

Fehler

Zusammenfassung

Lessons Learned

Projektunterlagen

Projektplan

Projektdurchführung

YouTube Video

Quellen


→ zurück zur Übersicht: WS 24/25: Escape Game

  1. SELLERI, Stefano, 2017. Claude Chappe and the first telecommunication network (without electricity). URSI Radio Science Bulletin [online]. März 2017. Bd. 2017, Nr. 360, S. 96–101. [Zugriff am: 1 Oktober 2024]. DOI 10.23919/URSIRSB.2017.8113174. Verfügbar unter: https://ieeexplore.ieee.org/document/8113174/?arnumber=8113174
  2. Navy Seaman Ryan Ruona uses semaphore flags to signal another ship., [kein Datum]. [online]. [Zugriff am: 1 Oktober 2024]. Verfügbar unter: https://www.defense.gov/Multimedia/Photos/igphoto/2001244016/
  3. Codierung von Texten - Fakultät für Elektrotechnik, Informatik und Mathematik - Fakultäten - Kategorien - Videoportal der Uni Paderborn, [kein Datum]. [online]. [Zugriff am: 1 Oktober 2024]. Verfügbar unter: https://videos.uni-paderborn.de/category/video/codierung-von-texten/3a9cfca393633045f308a88c20e8ad82/7
  4. Education Codes and Communication, [kein Datum]. National Museum of the Marine Corps [online]. [Zugriff am: 1 Oktober 2024]. Verfügbar unter: https://www.usmcmuseum.com/uploads/6/0/3/6/60364049/nmmc_semaphore_flag_booklet_final_1.pdf
  5. EVERYTHINGISHACKED, [kein Datum]. Semaphore [online]. Verfügbar unter: https://github.com/everythingishacked/Semaphore
  6. Estimate Body Pose Using Deep Learning - MATLAB & Simulink - MathWorks Deutschland, [kein Datum]. [online]. [Zugriff am: 2 Oktober 2024]. Verfügbar unter: https://de.mathworks.com/help/deeplearning/ug/estimate-body-pose-using-deep-learning.html
  7. Raspberry Pi 5 Gruppe., [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/das-raspberry-pi-5-b-4gb-black-bundle-rpi5-bbdl-4gb-p362101.html?&nbc=1&trstct=lp_1358_155298
  8. Kurzhubtaster 6x6 mm, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/kurzhubtaster-6x6-mm-hoehe-13-mm-12-v-vert--jtp-1130-p27894.html?&trstct=pos_0&nbc=1
  9. LCD128X64, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/entwicklerboards-display-grafik-lcd-128x64-pixel-debo-lcd128x64-p335007.html?&trstct=pos_0&nbc=1
  10. CON AMDIS03B Webcam, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.reichelt.de/webcam-720p-hdready-con-amdis03b-p292005.html?&trstct=pos_7&nbc=1CON
  11. Deutschland Flagge, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.amazon.de/molinoRC-Deutschland-Fahne-Stockfahne-Kinder-Fahne-Deutschland-Flagge/dp/B079SL8MRD
  12. Flaggensignale, [kein Datum]. [online]. [Zugriff am: 11 Oktober 2024]. Verfügbar unter:https://www.irisluckhaus.de/2016/infografik-flaggensprache/
  13. Technische Daten des Raspberry PI 5, [kein Datum]. [online]. [Zugriff am: 23 November 2024]. Verfügbar unter: https://www.nerdsheaven.de/raspberry-pi-5/
  14. Raspberry Pi hardware - Raspberry Pi Documentation, [kein Datum]. [online]. [Zugriff am: 23 November 2024]. Verfügbar unter: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html