Morsecode: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 48: | Zeile 48: | ||
|10 || Nach erkennen des Magnets wird der Morsecode in Form von optischen Signalen abgespielt. || Sichtprüfung und Kontrolle der Übereinstimmung des Morsecodes. || 1 || Tim Hane || 10.10.2024 || Philipp Wahl || 10.10.2024 | |10 || Nach erkennen des Magnets wird der Morsecode in Form von optischen Signalen abgespielt. || Sichtprüfung und Kontrolle der Übereinstimmung des Morsecodes. || 1 || Tim Hane || 10.10.2024 || Philipp Wahl || 10.10.2024 | ||
|- | |- | ||
|11 || Das | |11 || Das Rätsel muss in 5 Minuten zu lösen sein. || Überprüfung durch stoppen der Zeit. || 1 || Tim Hane || 10.10.2024 || Philipp Wahl || 10.10.2024 | ||
|- | |- | ||
|12 || Nach Ablauf der | |12 || Nach Ablauf der 4 Morsecodes blinken alle LEDs gleichzeitig in rot. || Optische Überprüfung des blinken des LEDs. || 1 || Tim Hane || 10.10.2024 || Philipp Wahl || 10.10.2024 | ||
|- | |- | ||
|13 || Ergebnisse müssen in SVN gesichert werden. || Überprüfung der Ergebnisse in SVN. || 2 || Tim Hane || 11.10.2024 || Philipp Wahl || 11.10.2024 | |13 || Ergebnisse müssen in SVN gesichert werden. || Überprüfung der Ergebnisse in SVN. || 2 || Tim Hane || 11.10.2024 || Philipp Wahl || 11.10.2024 | ||
Zeile 141: | Zeile 141: | ||
<br> | <br> | ||
[[Datei:Finale Zeichnung.JPG|mini|links|Abb. 03: CAD-Zeichnung]] | [[Datei:Finale Zeichnung.JPG|mini|links|Abb. 03: CAD-Zeichnung, Original | ||
[[Datei:Finale_Zeichnung.SLDPRT|mini]]]] | |||
<br> | <br> | ||
Zeile 191: | Zeile 192: | ||
[[Datei:Schaltungssimulation MTR 2.jpg|mini|links|Abb. 05: Schaltungssimulation in Multisim]] | [[Datei:Schaltungssimulation MTR 2.jpg|mini|links|Abb. 05: Schaltungssimulation in Multisim, Original | ||
[[Datei:LEDSchaltung.zip|mini]]]] | |||
<br> | <br> | ||
<br> | <br> | ||
Zeile 257: | Zeile 259: | ||
'''Sensor:''' | '''Sensor:''' | ||
<br> | <br> | ||
Um das Magnetfeld zu detektieren wurde ein Hall-Magnetsensor verwendet. Dieser beruht | Um das Magnetfeld zu detektieren wurde ein Hall-Magnetsensor verwendet. Dieser beruht auf dem Hallprinzip und erkennt eine Hallspannung beziehungsweise eine Spannungsdifferenz, welche aus dem gerichteten Magnetfeld entsteht. Im Sensor ist ein Analog-Digital Wandler enthalten, weshalb der Sensor ein digitales Signal ausgibt. Wenn kein Magnetfeld erkannt wird, gibt er eine logische 1 aus. Sobald sich ein Magnetfeld nähert und beziehungsweise detektiert wird, wird eine logische 0 ausgegeben. Dieses Signal wird anschließend mit dem Arduino Uno R3 verarbeitet. | ||
<br> | <br> | ||
<br> | <br> | ||
Zeile 264: | Zeile 266: | ||
Verwendet wurden sogenannte RGB-LEDs. Diese LEDs haben jeweils eine rot, grün und blau Anteil. Durch eine Ansteuerung mittels Pulsweitenmoduliertem Signal, kann man die Farben mischen und somit jede beliebige Farbe erzeugen. In diesem Fall wurde die LED nicht mit einem Pulsweitenmoduliertem Signal angesteuert, da nur die Farben grün und rot benötigt werden, weshalb der blaue Anschluss-Pin nicht verwendet wird. | Verwendet wurden sogenannte RGB-LEDs. Diese LEDs haben jeweils eine rot, grün und blau Anteil. Durch eine Ansteuerung mittels Pulsweitenmoduliertem Signal, kann man die Farben mischen und somit jede beliebige Farbe erzeugen. In diesem Fall wurde die LED nicht mit einem Pulsweitenmoduliertem Signal angesteuert, da nur die Farben grün und rot benötigt werden, weshalb der blaue Anschluss-Pin nicht verwendet wird. | ||
<br> | <br> | ||
== Umsetzung ( | == Umsetzung (Software) == | ||
<br> | <br> | ||
Im folgenden Teil ist sowohl die anfängliche Planung des Software durch den Programm Ablauf Plan, als auch die finale Software, welche mit Simulink erstellt wurde, zu sehen. | |||
<br> | |||
[[Datei:PAP Hauptprogramm MTR 2.png|mini|links|Abb. 08: Voraussichtliches Hauptprogramm Ablaufplan]] | [[Datei:PAP Hauptprogramm MTR 2.png|mini|links|Abb. 08: Voraussichtliches Hauptprogramm Ablaufplan]] | ||
<br> | <br> | ||
Zeile 327: | Zeile 332: | ||
<br> | <br> | ||
<br> | <br> | ||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
[[Datei:Simulink Programm Gesamt.jpg|1000px|thumb|links|Abb. 11: Software Morsecode, Original | |||
[[Datei:Programm.zip|mini]]]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
[[Datei:Enabled Subsystem.jpg|500px|thumb|links|Abb. 12: Enabled Subsystem aus Software Morsecode]] | |||
<br> | <br> | ||
<br> | <br> | ||
Zeile 344: | Zeile 401: | ||
<br> | <br> | ||
<br> | <br> | ||
'''Quelltext des I/O Device Builder:''' | |||
#include "C:\Users\noname\Desktop\Programm\Morsecode.h" | |||
static int state = 0; // Zustand für die Sequenz der LEDs | |||
static int counter = 0; // Zähler für die Verzögerung | |||
const int onTime = 1900; | |||
void setupFunctionMorsecode(){ | |||
} | |||
// Led1 logical [1,1] | |||
// Led2 logical [1,1] | |||
// Led3 logical [1,1] | |||
// Led4 logical [1,1] | |||
// Led5 logical [1,1] | |||
// Sensor logical [1,1] | |||
void stepFunctionMorsecode(boolean_T * Led1,int size_vector_1,boolean_T * Led2,int size_vector_2,boolean_T * Led3,int | |||
size_vector_3,boolean_T * Led4,int size_vector_4,boolean_T * Led5,int size_vector_5,boolean_T Sensor,int size_vector_a){ | |||
if (Sensor >= 0.5) { | |||
if (counter >= onTime) { | |||
counter = 0; // Zähler zurücksetzen | |||
state = (state + 1) % 5; // Zum nächsten Zustand wechseln (zyklisch durch 5 LEDs) | |||
} else { | |||
counter++; // Zähler erhöhen | |||
} | |||
// LEDs basierend auf dem Zustand schalten | |||
*Led1 = (state == 0); | |||
*Led2 = (state == 1); | |||
*Led3 = (state == 2); | |||
*Led4 = (state == 3); | |||
*Led5 = (state == 4); | |||
} else { | |||
// Alle LEDs ausschalten, wenn Sensor nicht aktiv ist | |||
*Led1 = *Led2 = *Led3 = *Led4 = *Led5 = 0; | |||
state = 0; // Zustand zurücksetzen | |||
counter = 0; // Zähler zurücksetzen | |||
} | |||
} | |||
== Komponententest == | == Komponententest == | ||
Zeile 361: | Zeile 464: | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 2 | | 2 | ||
Zeile 368: | Zeile 471: | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 3 | | 3 | ||
Zeile 375: | Zeile 478: | ||
| Software | | Software | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 4 | | 4 | ||
| Die LEDs müssen in verschiedenen Frequenzen blinken können. | | Die LEDs müssen in verschiedenen Frequenzen blinken können. | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 5 | | 5 | ||
Zeile 389: | Zeile 492: | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 6 | | 6 | ||
Zeile 396: | Zeile 499: | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 7 | | 7 | ||
Zeile 403: | Zeile 506: | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 8 | | 8 | ||
| Die LED 4 steht für die erste Zahl des Morsecodes. | | Die LED 4 steht für die erste Zahl des Morsecodes. | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 9 | | 9 | ||
Zeile 417: | Zeile 520: | ||
| Software | | Software | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 10 | | 10 | ||
| Nach erkennen des Magnets wird der Morsecode in optischer Form ausgegeben. | | Nach erkennen des Magnets wird der Morsecode in optischer Form ausgegeben. | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 11 | | 11 | ||
| Das | | Das Rätsel muss in 5 Minuten zu lösen sein. | ||
| Software | | Software | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 12 | | 12 | ||
| Nach Ablauf der | | Nach Ablauf der 4 Morsecodes blinken alle LEDs gleichzeitig in rot. | ||
| Hardware | | Hardware | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|- | |- | ||
| 13 | | 13 | ||
Zeile 445: | Zeile 548: | ||
| Software | | Software | ||
| Tim Hane & Philipp Wahl | | Tim Hane & Philipp Wahl | ||
| | | 03.01.25 | ||
| | | I.O. | ||
|} | |||
<br> | |||
<br> | |||
'''Vermessung Sensor:''' | |||
<br> | |||
'''Tabelle 4: Vermessung des Sensors''' | |||
{| class="wikitable" | |||
|+ style = "text-align: left"| | |||
! style="font-weight: bold;" | ID | |||
! style="font-weight: bold;" | Position Magnet | |||
! style="font-weight: bold;" | Erkannt | |||
! style="font-weight: bold;" | Autor | |||
! style="font-weight: bold;" | Überprüft am | |||
|- | |||
| 1 | |||
| Gleiche Achse, wie der Sensor (Entfernung 6 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 2 | |||
| Gleiche Achse, wie der Sensor (Entfernung 7 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 3 | |||
| Gleiche Achse, wie der Sensor (Entfernung 8 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 4 | |||
| Gleiche Achse, wie der Sensor (Entfernung 9 mm) | |||
| Nein | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 5 | |||
| Achse um 4 mm verschoben, wie der Sensor (Entfernung 6 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 6 | |||
| Achse um 5 mm verschoben, wie der Sensor (Entfernung 6 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 7 | |||
| Achse um 6 mm verschoben, wie der Sensor (Entfernung 6 mm) | |||
| Ja | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
| 8 | |||
| Achse um 7 mm verschoben, wie der Sensor (Entfernung 6 mm) | |||
| Nein | |||
| Tim Hane & Philipp Wahl | |||
| 18.12.24 | |||
|- | |||
|} | |||
<br> | |||
'''Tabelle 5: Testreihe des Sensors''' | |||
{| class="wikitable" | |||
|+ style = "text-align: left"| | |||
! style="font-weight: bold;" | Anzahl Prüfvorgänge | |||
! style="font-weight: bold;" | Magnet in dafür vorgesehene Position (Richtung korrekt) | |||
! style="font-weight: bold;" | Anzahl Erkennung des Magnets | |||
! style="font-weight: bold;" | Autor | |||
! style="font-weight: bold;" | Überprüft am | |||
|- | |||
| 100 | |||
| Ja | |||
| 100 | |||
| Tim Hane & Philipp Wahl | |||
| 02.01.2025 | |||
|- | |||
|} | |} | ||
<br> | |||
Aufgrund der Genauigkeit und des Ausgabesignals des Sensors in digitaler Form erkannte der Sensor im gesamten Prüfverlauf jedes Magnetfeld korrekt. Deshalb kann man keine genaue Standard und Messunsicherheit des Sensor genau bestimmen. Dies wäre möglich wenn er im Grenzbereich Betrieben werden würde, jedoch ist der Sensor und der Magnet so ausgelegt, durch Versuche, dass immer eine stabiles Signal vom Arduino erkannt werden kann, welches die Nutzung eines Filters in der Software nicht begründen würde. | |||
<br> | |||
Software zum Komponententest des Sensors: | |||
int Led_1=2; | |||
int Sensor=12; | |||
void setup() { | |||
pinMode(Led_1, OUTPUT); | |||
pinMode(Sensor, INPUT); | |||
} | |||
void loop() { | |||
if (digitalRead(Sensor) == LOW) { | |||
digitalWrite(Led_1, HIGH); | |||
delay(2000); | |||
digitalWrite(Led_1, LOW); | |||
} | |||
} | |||
== Ergebnis == | == Ergebnis == | ||
Zeile 457: | Zeile 661: | ||
== Projektunterlagen == | == Projektunterlagen == | ||
=== Projektplan === | === Projektplan === | ||
[[Datei:Gantt-Diagramm MTR2 Morsecode.png| | |||
[[Datei:Gantt-Diagramm MTR2 Morsecode.png|1000px|thumb|links|Abb. 11: Zeitliche Planung des Projektes "Morsecode", Origianl | |||
[[Datei:Projektplan.zip|mini]]]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | <br> | ||
<br> | <br> | ||
Zeile 469: | Zeile 688: | ||
<br> | <br> | ||
=== | |||
== Projektdurchführung == | |||
== Musterlösung == | |||
<br> | |||
Um das geheimnisvolle Rätsel des Morsecodes zu lösen, wird ein Magnet aus dem vorherigen Rätsel genutzt. Dieser Magnet wird an den Magnetsensor auf der gegenüberliegenden Seite des Netzteil an das Gehäuse von außen gehalten. Wichtig dabei ist, dass die Polarität des Magneten beachtet wird, damit der Hall-Sensor diesen erkennt. Anschließend, wenn der Arduino das digitale Signal des Sensors erkannt hat, gibt er einen Morsecode über die vier LEDs aus. Die erste LED steht für die erste Zahl. Diese kann mithilfe der Übersetzungskarte übersetzt werden. Analog werden die anderen drei Zahlen übersetzt. Als Ergebnis des Rätsels ist der Zahlencode 2536 zu erhalten. | |||
Aktuelle Version vom 3. Januar 2025, 21:33 Uhr
Autor: | Tim Hane und Philipp Wahl |
Betreuer: | Prof. Schneider |
Einleitung
In dem Projekt gilt es eine Reihe von Rätseln zu lösen, doch Vorsicht, bei allen arbeiten Sie gegen die Zeit, denn sie haben nur fünf Minuten für jedes Rätsel. Um das Rätsel „Morsecode“ zu lösen, reicht es nicht einfach nur scharf nach zu denken. Achtet auf Hilfsmittel, die Ihr in den vorherigen Rätseln erlangen könnt, vielleicht helfen euch diese ja weiter? Kennen Sie den Morsecode? Eine altertümliche Weise Buchstaben und Zahlen zu ermitteln. Seien Sie aufmerksam, denn es kann auch sein, dass Sie vier Morsecodes auf einmal übersetzen müssen. Tipp: Gemeinsam aufmerksam sein, denn als Team ist man stark. Freuen sie sich das „Morsecode“ Rätsel, als kleinen Teil des gesamten großen zu lösen!
Schwierigkeitsstufe
Das Rätsel ist in der Schwierigkeitsstufe Mittel einzuordnen.
Der mechatronische Aufbau hat den Schwierigkeitsgrad simpel.
Anforderungen
ID | Inhalt | Prüfbarkeit | Prio | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|---|---|
1 | Arduino mit Breadboard, LEDs, Magnetsensor als Hardware nutzen. | Sichtprüfung ob Hardware genutzt wurde. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
2 | Das Rätsel darf nicht die Größe eines Schuhkartons überschreiten. | Größe nachmessen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
3 | Das System muss einen Magneten erkennen können. | Signal des Sensors überprüfen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
4 | Die LEDs müssen in verschieden Frequenzen blinken können. | LEDs in verschiedenen Frequenzen ansteuern. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
5 | LED 1 steht für die erste Zahl des Morsecodes. | Ausgegeben Code mit Morsetabelle überprüfen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
6 | LED 2 steht für die zweite Zahl des Morsecodes. | Ausgegeben Code mit Morsetabelle überprüfen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
7 | LED 3 steht für die dritte Zahl des Morsecodes. | Ausgegeben Code mit Morsetabelle überprüfen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
8 | LED 4 steht für die vierte Zahl des Morsecodes. | Ausgegeben Code mit Morsetabelle überprüfen. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
9 | Die Software muss mit Simulink erstellt werden. | Sichtprüfung der Softwaredatei. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
10 | Nach erkennen des Magnets wird der Morsecode in Form von optischen Signalen abgespielt. | Sichtprüfung und Kontrolle der Übereinstimmung des Morsecodes. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
11 | Das Rätsel muss in 5 Minuten zu lösen sein. | Überprüfung durch stoppen der Zeit. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
12 | Nach Ablauf der 4 Morsecodes blinken alle LEDs gleichzeitig in rot. | Optische Überprüfung des blinken des LEDs. | 1 | Tim Hane | 10.10.2024 | Philipp Wahl | 10.10.2024 |
13 | Ergebnisse müssen in SVN gesichert werden. | Überprüfung der Ergebnisse in SVN. | 2 | Tim Hane | 11.10.2024 | Philipp Wahl | 11.10.2024 |
Funktionaler Systementwurf/Technischer Systementwurf
Technischer/Funktionaler Systementwurf
Übersicht des technischen und funktionalen Systementwurfs
Um diese Rätselstufe absolvieren zu können, wird der Magnet aus einem vorherigen Rätsel benötigt. Aus dem vorherigen Rätsel entnimmt man außerdem eine Morsecode-Tabelle (siehe Weblinks) um den Morsecode nach NATO Standard zu entschlüsseln. Mit diesem Magneten wird ein Hall-Sensor (Magnetsensor) betätigt. Das Signal des Sensors startet eine Reihe von RGB-LEDs. Diese zeigen einen Morsecode an, welcher in Zahlen übersetzt werden muss. Um ein Zahlenschloss des nächsten Rätsels öffnen zu können wird dieser Zahlencode benötigt. Wie in Abbildung eins zu sehen ist, soll der Arduino inklusive Sensoren und LEDs mit Breadboard in einer ggf. 3D gedruckten Box befinden. Von oben solle eine Plexiglas Scheibe die Box verschließen. Diese dient dazu die LEDs zu sehen und den Rest der Technik. Außerdem erhöht sie die Wartungsfreundlichkeit, da diese Scheibe geschraubt ist. In Abbildung zwei erkennt man den Ablauf nach dem EVA Prinzip. Die Eingabe des Systems ist die Erkennung des Magnet mit Hilfe des Hall-Sensor (Magnetsensor). Der Ardunio erkennt das Signal und Verarbeitet es, sodass er die vier LEDs mit den zuvor programmierten Morsecode ansteuert. Diese vier LEDs geben in oben angegebener Reihenfolge als Ausgabe den Morsecode aus, welcher die Lösung für das Nächste Rätsel ist. In Abbildung eins ist ein grobes Beispiel eines fertigen Morsecodes Rätsel zu erkennen.
Detaillierter Funktionaler Systementwurf
Der folgende Absatz beschreibt detailliert die geplante Umsetzung des Morsecode Rätsels. Außerdem ist die geplante Funktion erkennbar.
Im unteren Teil der Abbildung erkennt man den Aufbau der Hardware des Projekts. Dieser besteht aus dem Arduino, den LEDs und dem Magnetsensor. Der Magnetsensor erkennt, wie in Abbildung zwei zu erkennen ist den Magneten und gibt somit ein Signal an den Arduino weiter. Dieser verarbeitet das Signal und kontrolliert ob der Magnet noch in der Nähe des Sensors ist. Falls dies der Fall ist, startet die Software den zuvor programmierten Morsecode. Dieser Morsecode wird durch die 4 LEDs optisch ausgegeben. Gleichzeitig zählt die Software die Zeit, denn nach fünf Minuten endet das Rätsel des Morsecodes.
In Abbildung drei erkennt man das Gehäuse in dem sich das Rätsel befinden wird. Von oben wird eine Plexiglasscheibe aufgeschraubt, damit die interessierten Spieler die Technik des Morsecode Rätsel sehen können. In den den vier Ecken, die in der Draufsicht zu sehen sind, wird jeweils ein Gewinde geschnitten um die Plexiglasscheibe zu verschrauben. Im laufe des Projekts, wird eine CAD-Zeichnung des Gehäuses erstellt um es mit einem 3D-Drucker drucken zu können.
Detaillierter Technischer Systementwurf
In diesem Abschnitt wird die geplante technische Umsetzung der Hardware aufgezeigt.
Die LEDs sollen über eine Schaltung gesteuert werden (vgl. Abbildung 4). Der Temperatursensor repräsentiert dabei den Hall-Sensor, da dieser in TinkerCAD nicht darstellbar ist. Außerdem ist aufgrund der begrenzten Möglichkeiten in TinkerCAD die Spannungsversorgung nicht dargestellt, in diesem Projekt wird sie über den Rundsteckeranschluss am Arduino erfolgen. Die Schaltung wurde mittels Breadboard aufgebaut, um einerseits Kosten zu sparen, andererseits aber auch einen flexiblen Schaltungsaufbau gewährleisten zu können. Außerdem ist bei Nutzung eines Breadboards der Leitungsverlauf und somit auch der Verlauf der Signale deutlich besser zu erkennen. Die vier RDB-LEDs werden je nach Farbanteil unterschiedlich angeschlossen, welches sehr gut durch das Breadboard sichtbar wird. In Abbildung vier ist zu erkennen, dass der Hall-Magnetsensor über das Breadboard vom Arduino mit 5 Volt Spannung versorgt wird. Das Signal des Magnetsensors wird über einen Digitalen In und Output des Arduinos verwendet. Dieser Arduino steuert den grünen Anteil der RGB-LEDs einzeln jeweils über einen 150 Ohm Widerstand an. Dies ist wichtig, damit der passende Betriebsstrom (vgl. Multisim Simulation) anliegt und der grüne Anteil der LEDs einzeln blinken kann. Der rote Anteil der RGB-LEDs wird über einen 40 Ohm Widerstand parallel geschaltet und angesteuert, da diese LEDs in rot nur alle zusammen blinken müssen. Der Vorteil der Parallelschaltung liegt darin, dass sowohl Leitungen, Widerstände, als auch Digitalports des Arduinos eingespart werden können. Außerdem trägt es zur Übersichtlichkeit der Schaltung bei.
In Abbildung sechs ist der Ablauf des Rätsels symbolisch dargestellt. Der genaue Plan der Signale ist in Abbildung sieben zu erkennen. Dabei dient der Hall-Sensor als Eingangssignal. Sobald dieser einen Magneten detektiert (vgl. Abschnitt Anforderungen) wird ein digitales Eingangssignal an den Arudino weitergegeben.
Der Arduino verarbeitet dieses Signal anschließend und startet der Software entsprechend die Blinksequenzen an den LEDs. In grün sind die digitalen Ausgangssignale zur Ansteuerung des grünen Anteils der RGB-LEDs dargestellt. Das rote Ausgangssignal zeigt die Ansteuerung des roten Anteils der RGB-LEDs. Dieser rote Anteil wird parallel geschaltet, weshalb nur ein Ausgangssignal gezeigt ist. Zunächst blinkt die erste LED einen Morsecode, sobald die Sequenz durchgelaufen ist, beginnt die zweite LED. Nach dem durchlauf aller vier Morsecodes blinken alle LEDs gleichzeitig dreimal in rot um das Ende zu signalisieren. Die vier Morsecode Sequenzen repräsentieren die Zahlen, die notwendig sind, um das Zahlenschloss des nächsten Rätsels öffnen zu können.
FAQ
Frage: Wo ist der Morsetaster?
Antwort: Es gibt keinen Morsetaster, der Morsecode wird ausgegeben, sobald der Magnetsensor den Magnet erkennt.
Frage: Über welche Strecke wird das Morsesignal übertragen?
Antwort: Das Morsesignal wird über keine Strecke übertragen, die LEDs werden direkt von dem Arduino angesteuert und blinken darauf hin.
Frage: Wie wird das Morsesignal ausgegeben?
Antwort: Das Morsesignal wird mit den vier LEDs ausgegeben, also optisch.
Komponentenspezifikation
In diesem Kapitel werden die Hauptkomponenten zur Umsetzung des Morsecode Rätsels erläutert.
Hardware Board:
Zur Umsetzung des Morsecode Rätsels wurde ein Arduino Uno R3 Microcontroller verwendet.
Sensor:
Um das Magnetfeld zu detektieren wurde ein Hall-Magnetsensor verwendet. Dieser beruht auf dem Hallprinzip und erkennt eine Hallspannung beziehungsweise eine Spannungsdifferenz, welche aus dem gerichteten Magnetfeld entsteht. Im Sensor ist ein Analog-Digital Wandler enthalten, weshalb der Sensor ein digitales Signal ausgibt. Wenn kein Magnetfeld erkannt wird, gibt er eine logische 1 aus. Sobald sich ein Magnetfeld nähert und beziehungsweise detektiert wird, wird eine logische 0 ausgegeben. Dieses Signal wird anschließend mit dem Arduino Uno R3 verarbeitet.
RGB-LEDs:
Verwendet wurden sogenannte RGB-LEDs. Diese LEDs haben jeweils eine rot, grün und blau Anteil. Durch eine Ansteuerung mittels Pulsweitenmoduliertem Signal, kann man die Farben mischen und somit jede beliebige Farbe erzeugen. In diesem Fall wurde die LED nicht mit einem Pulsweitenmoduliertem Signal angesteuert, da nur die Farben grün und rot benötigt werden, weshalb der blaue Anschluss-Pin nicht verwendet wird.
Umsetzung (Software)
Im folgenden Teil ist sowohl die anfängliche Planung des Software durch den Programm Ablauf Plan, als auch die finale Software, welche mit Simulink erstellt wurde, zu sehen.
Quelltext des I/O Device Builder:
#include "C:\Users\noname\Desktop\Programm\Morsecode.h" static int state = 0; // Zustand für die Sequenz der LEDs static int counter = 0; // Zähler für die Verzögerung const int onTime = 1900; void setupFunctionMorsecode(){ } // Led1 logical [1,1] // Led2 logical [1,1] // Led3 logical [1,1] // Led4 logical [1,1] // Led5 logical [1,1] // Sensor logical [1,1] void stepFunctionMorsecode(boolean_T * Led1,int size_vector_1,boolean_T * Led2,int size_vector_2,boolean_T * Led3,int size_vector_3,boolean_T * Led4,int size_vector_4,boolean_T * Led5,int size_vector_5,boolean_T Sensor,int size_vector_a){ if (Sensor >= 0.5) { if (counter >= onTime) { counter = 0; // Zähler zurücksetzen state = (state + 1) % 5; // Zum nächsten Zustand wechseln (zyklisch durch 5 LEDs) } else { counter++; // Zähler erhöhen } // LEDs basierend auf dem Zustand schalten *Led1 = (state == 0); *Led2 = (state == 1); *Led3 = (state == 2); *Led4 = (state == 3); *Led5 = (state == 4); } else { // Alle LEDs ausschalten, wenn Sensor nicht aktiv ist *Led1 = *Led2 = *Led3 = *Led4 = *Led5 = 0; state = 0; // Zustand zurücksetzen counter = 0; // Zähler zurücksetzen } }
Komponententest
Tabelle 3: Getestete Anforderungen
ID | Beschreibung | Bereich | Autor | Überprüft am | Status |
---|---|---|---|---|---|
1 | Arduino mit Breadboard, LEDs und Magnetsensor wird als Hardware verwendet. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
2 | Das Rätsel darf die Größe eines Schuhkartons nicht überschreiten. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
3 | Das System muss einen Magneten erkennen können. | Software | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
4 | Die LEDs müssen in verschiedenen Frequenzen blinken können. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
5 | Die LED 1 steht für die erste Zahl des Morsecodes. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
6 | Die LED 2 steht für die erste Zahl des Morsecodes. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
7 | Die LED 3 steht für die erste Zahl des Morsecodes. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
8 | Die LED 4 steht für die erste Zahl des Morsecodes. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
9 | Die Software muss mit Simulink erstellt werden. | Software | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
10 | Nach erkennen des Magnets wird der Morsecode in optischer Form ausgegeben. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
11 | Das Rätsel muss in 5 Minuten zu lösen sein. | Software | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
12 | Nach Ablauf der 4 Morsecodes blinken alle LEDs gleichzeitig in rot. | Hardware | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
13 | Die Ergebnisse müssen in SVN gesichert werden. | Software | Tim Hane & Philipp Wahl | 03.01.25 | I.O. |
Vermessung Sensor:
Tabelle 4: Vermessung des Sensors
ID | Position Magnet | Erkannt | Autor | Überprüft am |
---|---|---|---|---|
1 | Gleiche Achse, wie der Sensor (Entfernung 6 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
2 | Gleiche Achse, wie der Sensor (Entfernung 7 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
3 | Gleiche Achse, wie der Sensor (Entfernung 8 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
4 | Gleiche Achse, wie der Sensor (Entfernung 9 mm) | Nein | Tim Hane & Philipp Wahl | 18.12.24 |
5 | Achse um 4 mm verschoben, wie der Sensor (Entfernung 6 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
6 | Achse um 5 mm verschoben, wie der Sensor (Entfernung 6 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
7 | Achse um 6 mm verschoben, wie der Sensor (Entfernung 6 mm) | Ja | Tim Hane & Philipp Wahl | 18.12.24 |
8 | Achse um 7 mm verschoben, wie der Sensor (Entfernung 6 mm) | Nein | Tim Hane & Philipp Wahl | 18.12.24 |
Tabelle 5: Testreihe des Sensors
Anzahl Prüfvorgänge | Magnet in dafür vorgesehene Position (Richtung korrekt) | Anzahl Erkennung des Magnets | Autor | Überprüft am |
---|---|---|---|---|
100 | Ja | 100 | Tim Hane & Philipp Wahl | 02.01.2025 |
Aufgrund der Genauigkeit und des Ausgabesignals des Sensors in digitaler Form erkannte der Sensor im gesamten Prüfverlauf jedes Magnetfeld korrekt. Deshalb kann man keine genaue Standard und Messunsicherheit des Sensor genau bestimmen. Dies wäre möglich wenn er im Grenzbereich Betrieben werden würde, jedoch ist der Sensor und der Magnet so ausgelegt, durch Versuche, dass immer eine stabiles Signal vom Arduino erkannt werden kann, welches die Nutzung eines Filters in der Software nicht begründen würde.
Software zum Komponententest des Sensors:
int Led_1=2; int Sensor=12; void setup() { pinMode(Led_1, OUTPUT); pinMode(Sensor, INPUT); } void loop() { if (digitalRead(Sensor) == LOW) { digitalWrite(Led_1, HIGH); delay(2000); digitalWrite(Led_1, LOW); } }
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
Musterlösung
Um das geheimnisvolle Rätsel des Morsecodes zu lösen, wird ein Magnet aus dem vorherigen Rätsel genutzt. Dieser Magnet wird an den Magnetsensor auf der gegenüberliegenden Seite des Netzteil an das Gehäuse von außen gehalten. Wichtig dabei ist, dass die Polarität des Magneten beachtet wird, damit der Hall-Sensor diesen erkennt. Anschließend, wenn der Arduino das digitale Signal des Sensors erkannt hat, gibt er einen Morsecode über die vier LEDs aus. Die erste LED steht für die erste Zahl. Diese kann mithilfe der Übersetzungskarte übersetzt werden. Analog werden die anderen drei Zahlen übersetzt. Als Ergebnis des Rätsels ist der Zahlencode 2536 zu erhalten.
Weblinks
|Morsecode Tabelle: |[1]
Literatur
→ zurück zur Übersicht: WS 24/25: Escape Game