Sensoren-Puzzle mit Arduino: Unterschied zwischen den Versionen
(37 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 14: | Zeile 14: | ||
Dieses interaktive Projekt verwendet ein Arduino, das mit drei verschiedenen Sensoren verbunden ist: einem Lichtsensor, einem Temperatursensor und einem Distanzsensor. Die Teilnehmer müssen spezifische Aktionen durchführen, um jeden Sensor zu aktivieren. | Dieses interaktive Projekt verwendet ein Arduino, das mit drei verschiedenen Sensoren verbunden ist: einem Lichtsensor, einem Temperatursensor und einem Distanzsensor. Die Teilnehmer müssen spezifische Aktionen durchführen, um jeden Sensor zu aktivieren. | ||
:Die Lichtintensität auf dem Lichtsensor verringern. | |||
Den Temperatursensor durch Berührung erwärmen. | :Den Temperatursensor durch Berührung erwärmen. | ||
Ihre Hand in der Nähe des Distanzsensors bewegen. | :Ihre Hand in der Nähe des Distanzsensors bewegen. | ||
Jeder Sensor steuert einen Teil der Informationen, die auf einem 16x2 LCD-Bildschirm angezeigt werden. Wenn alle drei Sensoren korrekt aktiviert werden, zeigt das LCD die Lösung des Rätsels an. | :Jeder Sensor steuert einen Teil der Informationen, die auf einem 16x2 LCD-Bildschirm angezeigt werden. Wenn alle drei Sensoren korrekt aktiviert werden, zeigt das LCD die Lösung des Rätsels an. | ||
=== '''Projektkomponenten''' === | === '''Projektkomponenten''' === | ||
Arduino: Mikrocontroller, der die Sensoreingaben verarbeitet und das Display steuert. | :Arduino: Mikrocontroller, der die Sensoreingaben verarbeitet und das Display steuert. | ||
Lichtsensor : Erkennt Lichtniveaus. | :Lichtsensor : Erkennt Lichtniveaus. | ||
Temperatursensor : Misst Temperaturänderungen. | :Temperatursensor : Misst Temperaturänderungen. | ||
Distanzsensor: Misst die Nähe mit Ultraschall. | :Distanzsensor: Misst die Nähe mit Ultraschall. | ||
16x2 LCD-Display: Zeigt Textnachrichten basierend auf den Sensoreingaben an. | :16x2 LCD-Display: Zeigt Textnachrichten basierend auf den Sensoreingaben an. | ||
Verdrahtung und Breadboard: Zum Verbinden aller Komponenten. | :Verdrahtung und Breadboard: Zum Verbinden aller Komponenten. | ||
:Taster : Programm Reset Button | |||
=== '''Systemkonzept''' === | === '''Systemkonzept''' === | ||
Das Arduino ist so programmiert, dass es die Eingaben von drei Sensoren überwacht. Jeder Sensor bietet Feedback über das LCD-Display: | Das Arduino ist so programmiert, dass es die Eingaben von drei Sensoren überwacht. Jeder Sensor bietet Feedback über das LCD-Display: | ||
Lichtsensor: Zeigt an, wenn | :Lichtsensor: Zeigt an, wenn eine bestimmte Lichtintensität erkannt wird. | ||
Temperatursensor: Zeigt an, wenn Wärme erkannt wird (z.B. durch menschliche Berührung). | :Temperatursensor: Zeigt an, wenn Wärme erkannt wird (z.B. durch menschliche Berührung). | ||
Distanzsensor: Zeigt an, wenn ein Objekt innerhalb eines bestimmten Bereichs erkannt wird (z.B. eine sich bewegende Hand). | :Distanzsensor: Zeigt an, wenn ein Objekt innerhalb eines bestimmten Bereichs erkannt wird (z.B. eine sich bewegende Hand). | ||
Sobald alle drei Sensoren aktiviert sind, wird eine endgültige Nachricht auf dem LCD angezeigt, die bestätigt, dass das Rätsel gelöst wurde. | :Sobald alle drei Sensoren aktiviert sind, wird eine endgültige Nachricht auf dem LCD angezeigt, die bestätigt, dass das Rätsel gelöst wurde. | ||
=== '''Rätsel ''' === | === '''Rätsel ''' === | ||
Zeile 58: | Zeile 59: | ||
| 7 || Das Rätsel und die Anweisungen müssen klar und einfach formuliert sein. || Maha Chraiji, Oluwatobiloba Oguntona || 05.11.2024 | | 7 || Das Rätsel und die Anweisungen müssen klar und einfach formuliert sein. || Maha Chraiji, Oluwatobiloba Oguntona || 05.11.2024 | ||
|- | |- | ||
| 8 || Optisch ansprechender Aufbau (saubere Verkabelung, gut lesbare Anzeige). || Maha Chraiji, Oluwatobiloba Oguntona || | | 8 || Optisch ansprechender Aufbau (saubere Verkabelung, gut lesbare Anzeige). || Maha Chraiji, Oluwatobiloba Oguntona || 05.11.2024 | ||
|- | |- | ||
| 9 || Jeder Sensor wird einzeln getestet (Licht, Wärme, Bewegung). || Maha Chraiji, Oluwatobiloba Oguntona || 05. | | 9 || Jeder Sensor wird einzeln getestet (Licht, Wärme, Bewegung). || Maha Chraiji, Oluwatobiloba Oguntona || 05.11.2024 | ||
|- | |- | ||
| 10 || Überprüfung der korrekten Systemreaktion, wenn alle drei Sensoren aktiviert werden. || Maha Chraiji, Oluwatobiloba Oguntona || 07.11.2024 | | 10 || Überprüfung der korrekten Systemreaktion, wenn alle drei Sensoren aktiviert werden. || Maha Chraiji, Oluwatobiloba Oguntona || 07.11.2024 | ||
Zeile 66: | Zeile 67: | ||
| 11 || Schaltplan und Aufbauanleitung für das Projekt. || Maha Chraiji, Oluwatobiloba Oguntona || 07.11.2024 | | 11 || Schaltplan und Aufbauanleitung für das Projekt. || Maha Chraiji, Oluwatobiloba Oguntona || 07.11.2024 | ||
|- | |- | ||
| 12 || Arduino-Code mit Kommentaren. || Maha Chraiji, Oluwatobiloba Oguntona || | | 12 || Arduino-Code mit Kommentaren. || Maha Chraiji, Oluwatobiloba Oguntona ||20.12.2024 | ||
|- | |- | ||
| 13 || Ein Taster muss implementiert sein, um das Programm zurückzusetzen und alle Sensorzustände zu löschen. || Maha Chraiji, Oluwatobiloba Oguntona || | | 13 || Ein Taster muss implementiert sein, um das Programm zurückzusetzen und alle Sensorzustände zu löschen. || Maha Chraiji, Oluwatobiloba Oguntona || 05.01.2025 | ||
|- | |- | ||
Zeile 110: | Zeile 111: | ||
|} | |} | ||
[[Datei:PAP Design.jpg | [[Datei:PAP Design.jpg|thumb|left|Abb. 01: PAP Design]] | ||
[[Datei:Schaltplan Arduino.jpg|thumb|right|Abb. 02: Schaltplan Arduino]] | |||
[[Datei:CAD Model 1.jpg|thumb|left|Abb. 03: CAD Model Oberseite]] | |||
[[Datei:CAD Model 2.jpg|thumb|right|Abb. 04: CAD Model Unterseite]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | <br> | ||
<br> | <br> | ||
Zeile 126: | Zeile 139: | ||
<br> | <br> | ||
<br> | <br> | ||
== Komponentenspezifikation == | == Komponentenspezifikation == | ||
== Umsetzung (HW/SW) == | == Umsetzung (HW/SW) == | ||
[[Datei:Setup Build.jpg|right|thumb|Abb.05: Setup Build]] | |||
[[Datei:Umsetzung Arduino Sensoren.mp4|left|thumb|1000px|Video: Implementierung der Sensoren]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
'''Hier ist der Code, der die Grundlage unseres Projekts bildet:''' | |||
<div style="width:1200px; height:1000px; overflow:scroll; border: hidden"> | |||
<syntaxhighlight lang="cpp" style="border: none; background-color: #EFF1C1; font-size:larger"> | |||
/***************************************************************************** | |||
Autoren: Maha Chraiji, Oluwatobiloba Oguntona * | |||
Programm: Sensoren-Puzzle mit Arduino * | |||
Modul: Fachpraktikum Elektrotechnik * | |||
Betreuer: Professor Göbel * | |||
Semester: Wintersemester 2024/2025 * | |||
*****************************************************************************/ | |||
#include <Wire.h> | |||
#include <LiquidCrystal_I2C.h> | |||
// Initialize I2C LCD (use the detected address, usually 0x27 or 0x3F) | |||
LiquidCrystal_I2C lcd(0x27, 16, 2); // Address, columns, rows | |||
// Pin definitions for sensors | |||
const int lightSensorPin = A0; | |||
const int tempSensorPin = A1; | |||
const int distanceTriggerPin = 3; | |||
const int distanceEchoPin = 2; | |||
// RGB LED pins | |||
const int rgbRedPin = 6; | |||
const int rgbGreenPin = 5; | |||
const int rgbBluePin = 4; | |||
// Reset button pin | |||
const int resetButtonPin = 7; | |||
// Target values and tolerances | |||
const int targetLight = 0; // As dark as a room can get | |||
const int lightTolerance = 5; | |||
const float targetTemp = 24.0; // Average finger tip temperature | |||
const float tempTolerance = 2.0; | |||
const float targetDistance = 8.0; | |||
const float distanceTolerance = 1.0; | |||
// Task completion flags | |||
bool tasksCompleted[3] = {false, false, false}; | |||
void setup() { | |||
// Initialize LCD | |||
lcd.init(); // Initialize the LCD | |||
lcd.backlight(); // Turn on the LCD backlight | |||
// Initialize RGB LED pins | |||
pinMode(rgbRedPin, OUTPUT); | |||
pinMode(rgbGreenPin, OUTPUT); | |||
pinMode(rgbBluePin, OUTPUT); | |||
// Initialize distance sensor pins | |||
pinMode(distanceTriggerPin, OUTPUT); | |||
pinMode(distanceEchoPin, INPUT); | |||
// Initialize reset button pin | |||
pinMode(resetButtonPin, INPUT_PULLUP); | |||
// Start message | |||
lcd.print("Awaken the"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Guardian..."); | |||
delay(5000); | |||
lcd.clear(); | |||
} | |||
void loop() { | |||
// Ensure tasks run only if they are incomplete | |||
if (!tasksCompleted[0] && checkLightSensor()) { | |||
tasksCompleted[0] = true; | |||
lcd.clear(); | |||
lcd.print("Eye of Light"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Activated!"); | |||
activateRGB(255, 255, 255); // White light | |||
delay(5000); | |||
deactivateRGB(); | |||
} else if (!tasksCompleted[0]) { | |||
lcd.clear(); | |||
lcd.print("Light incorrect"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Adjust light!"); | |||
delay(1000); | |||
} | |||
if (!tasksCompleted[1] && checkTempSensor()) { | |||
tasksCompleted[1] = true; | |||
lcd.clear(); | |||
lcd.print("Eye of Fire"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Activated!"); | |||
activateRGB(255, 0, 0); // Red light | |||
delay(5000); | |||
deactivateRGB(); | |||
} else if (!tasksCompleted[1]) { | |||
lcd.clear(); | |||
lcd.print("Temp incorrect"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Adjust temp!"); | |||
delay(1000); | |||
} | |||
if (!tasksCompleted[2] && checkDistanceSensor()) { | |||
tasksCompleted[2] = true; | |||
lcd.clear(); | |||
lcd.print("Eye of Space"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Activated!"); | |||
activateRGB(0, 0, 255); // Blue light | |||
delay(5000); | |||
deactivateRGB(); | |||
} else if (!tasksCompleted[2]) { | |||
lcd.clear(); | |||
lcd.print("Distance wrong"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Adjust pos!"); | |||
delay(1000); | |||
} | |||
// Check if all tasks are completed | |||
if (tasksCompleted[0] && tasksCompleted[1] && tasksCompleted[2]) { | |||
lcd.clear(); | |||
lcd.print("Guardian's"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Secret Revealed!"); | |||
victorySequence(); | |||
delay(10000); | |||
// Wait for reset button to be pressed | |||
while (true) { | |||
if (digitalRead(resetButtonPin) == HIGH) { | |||
resetSystem(); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
// Light sensor check | |||
bool checkLightSensor() { | |||
int lightValue = analogRead(lightSensorPin); | |||
return abs(lightValue - targetLight) <= lightTolerance; | |||
} | |||
// Temperature sensor check | |||
bool checkTempSensor() { | |||
int tempValue = analogRead(tempSensorPin); | |||
float voltage = tempValue * 5.0 / 1023.0; | |||
float tempC = (voltage - 0.5) * 100; | |||
return abs(tempC - targetTemp) <= tempTolerance; | |||
} | |||
// Distance sensor check | |||
bool checkDistanceSensor() { | |||
digitalWrite(distanceTriggerPin, LOW); | |||
delayMicroseconds(2); | |||
digitalWrite(distanceTriggerPin, HIGH); | |||
delayMicroseconds(10); | |||
digitalWrite(distanceTriggerPin, LOW); | |||
long duration = pulseIn(distanceEchoPin, HIGH); | |||
float distance = duration * 0.034 / 2; // Convert to cm | |||
return abs(distance - targetDistance) <= distanceTolerance; | |||
} | |||
// RGB LED control | |||
void activateRGB(int red, int green, int blue) { | |||
analogWrite(rgbRedPin, red); | |||
analogWrite(rgbGreenPin, green); | |||
analogWrite(rgbBluePin, blue); | |||
} | |||
void deactivateRGB() { | |||
analogWrite(rgbRedPin, 0); | |||
analogWrite(rgbGreenPin, 0); | |||
analogWrite(rgbBluePin, 0); | |||
} | |||
// Victory sequence for RGB LED | |||
void victorySequence() { | |||
for (int i = 0; i < 3; i++) { | |||
activateRGB(0, 255, 0); // Green light | |||
delay(500); | |||
deactivateRGB(); | |||
delay(500); | |||
} | |||
} | |||
// Reset system to initial state | |||
void resetSystem() { | |||
// Reset task completion flags | |||
for (int i = 0; i < 3; i++) { | |||
tasksCompleted[i] = false; | |||
} | |||
// Clear LCD and show start message | |||
lcd.clear(); | |||
lcd.print("Awaken the"); | |||
lcd.setCursor(0, 1); | |||
lcd.print("Guardian..."); | |||
delay(5000); | |||
lcd.clear(); | |||
// Deactivate RGB LED | |||
deactivateRGB(); | |||
} | |||
</syntaxhighlight> | |||
</div> | |||
<br clear=all> | |||
</div> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
== Komponententest == | == Komponententest == | ||
== Ergebnis == | == Ergebnis == | ||
Schritte, um das Rätsel zu lösen | |||
<br> | |||
1. ''Lichtsensor aktivieren'' | |||
*Bedecken Sie den Lichtsensor (z. B. mit Ihrer Hand/einem Deckel), um die Lichtintensität zu verringern. | |||
*Sobald der Lichtsensor korrekt aktiviert wird: | |||
*Die weiße LED beginnt zu blinken. | |||
*Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Light Activated “). | |||
2. ''Temperatursensor aktivieren'' | |||
*Erhöhe die Temperatur des Temperatursensors, z. B. durch Berühren mit der Hand. | |||
*Sobald der Temperatursensor korrekt aktiviert wird: | |||
*Die rote LED beginnt zu blinken. | |||
*Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Fire Activated“). | |||
3. ''Distanzsensor aktivieren'' | |||
*Bewege deine Hand oder ein Objekt in die Nähe des Distanzsensors. | |||
*Sobald der Distanzsensor korrekt aktiviert wird: | |||
*Die blaue LED beginnt zu blinken. | |||
*Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Space Activated“). | |||
4. ''Rätsellösung anzeigen'' | |||
*Wenn alle drei Sensoren korrekt aktiviert, wurden: | |||
*Die grüne LED blinkt dreimal, um den Erfolg anzuzeigen. | |||
*Die finale Lösung des Rätsels erscheint auf dem LCD (z. B. „Guardian’s Secret Revealed!“). | |||
5. ''System zurücksetzen'' | |||
*Drücke den Taster, um das System zurückzusetzen. | |||
*Alle LEDs schalten sich aus, und das LCD zeigt wieder die Startmeldung an. | |||
== Zusammenfassung == | == Zusammenfassung == | ||
=== Lessons Learned === | === Lessons Learned === | ||
:'''Herausforderungen bei der Integration''': Das Erkennen der Komplexität der Integration mehrerer Sensoren in ein einziges System stellt eine zentrale Herausforderung dar. Unterschiedliche Sensortypen können verschiedene Schnittstellen, Kommunikationsprotokolle und Anforderungen an die Signalverarbeitung mit sich bringen, was die Implementierung erschwert. Zudem ist die Gewährleistung der Kompatibilität zwischen den Komponenten entscheidend, um ein zuverlässiges Gesamtsystem zu schaffen. | |||
:'''Zeitmanagement''': Die Priorisierung der Aufgaben, um das Projekt effizient abzuschließen, ist von großer Bedeutung. Eine klare Strukturierung der Arbeitsabläufe hilft dabei, Engpässe zu vermeiden und Ressourcen optimal zu nutzen. Gleichzeitig erfordert dies eine kontinuierliche Überwachung des Fortschritts, um sicherzustellen, dass die gesetzten Meilensteine erreicht werden. | |||
:'''Systementwurf''': Das Erkennen der Bedeutung von Planung und Entwurf vor der Implementierung ist ein wesentlicher Faktor für den Erfolg des Projekts. Ein gut durchdachter Systementwurf ermöglicht es, potenzielle Probleme frühzeitig zu identifizieren und zu beheben. Dadurch können kostspielige Änderungen während der späteren Entwicklungsphasen vermieden werden, was die Effizienz steigert. | |||
== Projektunterlagen == | == Projektunterlagen == | ||
=== Projektplan === | === Projektplan === | ||
Projektplan | |||
Analyse und Konzeptphase | |||
<br> | |||
1. '''Zieldefinition''' | |||
*Ziel: Interaktive Steuerung basierend auf Sensoren zur Lösung eines Rätsels. | |||
*Anforderungen: Arduino, Sensoren (Licht, Temperatur, Distanz), LEDs, Taster, LCD-Display, Platine, Zubehör. | |||
<br> | |||
<br> | |||
2. '''Systemdesign''' | |||
*Schaltplan erstellen (Verbindung der Sensoren mit dem Arduino, den LEDs, dem Taster und dem LCD). | |||
*Definition der Logik für das Rätsel: | |||
*Sensor-Trigger → LED-Aktivierung in spezifischen Farben (weiß, rot, blau). | |||
*LED blinkt grün dreimal, wenn alle Sensoren korrekt aktiviert wurden. | |||
*Taster-Logik zur Rücksetzung des Systems nach jeder Verwendung. | |||
<br> | |||
<br> | |||
'''Hardware-Setup''' | |||
<br> | |||
3. '''Beschaffung der Komponenten''' | |||
*Einkauf der benötigten Hardware (Arduino, Sensoren, LEDs, LCD, Taster, Platine, Zubehör). | |||
<br> | |||
<br> | |||
4. '''Aufbau des Prototyps''' | |||
*Erste Verkabelung der Komponenten auf einem Breadboard gemäß Schaltplan. | |||
*Testphase zur Überprüfung der Hardwarefunktionalität und Logik. | |||
<br> | |||
<br> | |||
'''Softwareentwicklung''' | |||
<br> | |||
5. '''Programmierung des Arduino''' | |||
*Code schreiben für die Integration der Sensoren, LEDs, des Taster-Resets und des LCD-Displays. | |||
*Implementierung der Logik: | |||
*Lichtsensor: Aktiviert weiße LED, wenn korrekt erkannt. | |||
*Temperatursensor: Aktiviert rote LED, wenn korrekt erkannt. | |||
*Distanzsensor: Aktiviert blaue LED, wenn korrekt erkannt. | |||
*Alle LEDs deaktivieren sich nach Reset durch den Taster. | |||
*Grüne LED blinkt dreimal, wenn alle Sensoren korrekt aktiviert wurden. | |||
*Test: Jeder Sensor zeigt die korrekte LED-Farbe und Rückmeldung auf dem LCD an. | |||
<br> | |||
<br> | |||
6. '''Integration des Rätsels''' | |||
*Hinzufügen der finalen Logik: | |||
*LEDs und LCD geben Feedback bei jedem Sensor-Trigger. | |||
*LCD zeigt die Lösung nur, wenn alle Sensoren korrekt aktiviert sind. | |||
*Grüne LED blinkt dreimal, um das erfolgreiche Lösen des Rätsels zu signalisieren. | |||
*System kann mit dem Taster zurückgesetzt werden. | |||
<br> | |||
'''Optimierung und endgültiger Aufbau''' | |||
<br> | |||
7. '''Systemtests''' | |||
*Einzeltests für jeden Sensor (korrekte LED und LCD-Rückmeldung). | |||
*Gesamttest: Rätsel vollständig aktivieren, um die Endnachricht und das grüne Blinken zu prüfen. | |||
*Funktionalität des Tasters: System wird erfolgreich zurückgesetzt. | |||
<br> | |||
8. '''Endgültiger Aufbau auf Platine''' | |||
*Übertragen der Schaltung von einem Breadboard auf eine Platine. | |||
*Die Platine wird so gestaltet, dass sie direkt auf den Arduino-Mikrocontroller gesteckt werden kann (Shield). | |||
*Finaler Test der gesamten Schaltung mit der Platine. | |||
[[Datei:Zeitplan Arduino.png|thumb|left|Abb. 01: Zeitplan Arduino Puzzle]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
== | === Projektdateien im ZIP-Format === | ||
'''Projektarchiv''' | |||
*Dieses ZIP-Archiv enthält alle relevanten Dateien für das Projekt. Die Dateien können verwendet werden, um die Konstruktionen und Modelle in einer CAD-Software zu öffnen und weiter zu bearbeiten. Außerdem wird der C-Code und der DIN A4 Aufsteller bereitgestellt. Bitte stellen Sie sicher, dass Sie über eine geeignete Software verfügen, um die Dateien zu extrahieren und anzuzeigen. | |||
:[[Datei:ArduinoSensorenPuzzle.zip|mini|alternativtext=Filearchive]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
== Literatur == | == Literatur == |
Aktuelle Version vom 23. Januar 2025, 14:49 Uhr
Autor: | Maha Chraiji und Oluwatobiloba Oguntona |
Betreuer: | Prof. Schneider oder Prof. Göbel oder Marc Ebmeyer |
Autor: Maha Chraiji und Oluwatobiloba Oguntona
Projektübersicht
Dieses interaktive Projekt verwendet ein Arduino, das mit drei verschiedenen Sensoren verbunden ist: einem Lichtsensor, einem Temperatursensor und einem Distanzsensor. Die Teilnehmer müssen spezifische Aktionen durchführen, um jeden Sensor zu aktivieren.
- Die Lichtintensität auf dem Lichtsensor verringern.
- Den Temperatursensor durch Berührung erwärmen.
- Ihre Hand in der Nähe des Distanzsensors bewegen.
- Jeder Sensor steuert einen Teil der Informationen, die auf einem 16x2 LCD-Bildschirm angezeigt werden. Wenn alle drei Sensoren korrekt aktiviert werden, zeigt das LCD die Lösung des Rätsels an.
Projektkomponenten
- Arduino: Mikrocontroller, der die Sensoreingaben verarbeitet und das Display steuert.
- Lichtsensor : Erkennt Lichtniveaus.
- Temperatursensor : Misst Temperaturänderungen.
- Distanzsensor: Misst die Nähe mit Ultraschall.
- 16x2 LCD-Display: Zeigt Textnachrichten basierend auf den Sensoreingaben an.
- Verdrahtung und Breadboard: Zum Verbinden aller Komponenten.
- Taster : Programm Reset Button
Systemkonzept
Das Arduino ist so programmiert, dass es die Eingaben von drei Sensoren überwacht. Jeder Sensor bietet Feedback über das LCD-Display:
- Lichtsensor: Zeigt an, wenn eine bestimmte Lichtintensität erkannt wird.
- Temperatursensor: Zeigt an, wenn Wärme erkannt wird (z.B. durch menschliche Berührung).
- Distanzsensor: Zeigt an, wenn ein Objekt innerhalb eines bestimmten Bereichs erkannt wird (z.B. eine sich bewegende Hand).
- Sobald alle drei Sensoren aktiviert sind, wird eine endgültige Nachricht auf dem LCD angezeigt, die bestätigt, dass das Rätsel gelöst wurde.
Rätsel
ich habe drei Augen: eins sieht Licht, eins spürt Wärme, und eins erkennt Bewegung. Aktiviere alle, und mein Geheimnis wird enthüllt.
Anforderungen
Funktionaler Systementwurf/Technischer Systementwurf
Eingaben:
• Lichtsensor • Temperatursensor • Ultraschallsensor
Verarbeitung:
• Arduino überwacht die Sensoreingaben. • Abhängig vom Zustand der Sensoren werden spezifische Nachrichten auf dem LCD angezeigt.
Ausgabe:
• 16x2 LCD-Display zeigt Feedback • Licht erkannt • Wärme erkannt • Objekt erkannt • Wenn alle Sensoren aktiviert sind, wird die finale Nachricht angezeigt.
Nr | Anforderung | Autoren | Datum |
---|---|---|---|
1 | Das Arduino muss die Eingaben der drei Sensoren (Lichtsensor, Temperatursensor, Distanzsensor) korrekt überwachen. | Maha Chraiji, Oluwatobiloba Oguntona | 14.10.2024 |
2 | Jeder Sensor muss durch eine spezifische Aktion aktiviert werden können. | Maha Chraiji, Oluwatobiloba Oguntona | 14.10.2024 |
3 | Das 16x2 LCD-Display muss die Sensoreingaben wie folgt anzeigen. | Maha Chraiji, Oluwatobiloba Oguntona | 14.10.2024 |
4 | Sobald alle drei Sensoren aktiviert sind, muss das LCD die Lösung des Rätsels anzeigen: "Guardian's Secret Revealed!" | Maha Chraiji, Oluwatobiloba Oguntona | 18.10.2024 |
5 | Arduino, Taster, Lichtsensor, Temperatursensor, Distanzsensor, 16x2 LCD-Display, Breadboard, Verkabelung. | Maha Chraiji, Oluwatobiloba Oguntona | 18.10.2024 |
6 | Code in der Arduino IDE schreiben, Sensoreingaben verarbeiten, Ausgabe auf LCD-Display anzeigen. | Maha Chraiji, Oluwatobiloba Oguntona | 30.10.2024 |
7 | Das Rätsel und die Anweisungen müssen klar und einfach formuliert sein. | Maha Chraiji, Oluwatobiloba Oguntona | 05.11.2024 |
8 | Optisch ansprechender Aufbau (saubere Verkabelung, gut lesbare Anzeige). | Maha Chraiji, Oluwatobiloba Oguntona | 05.11.2024 |
9 | Jeder Sensor wird einzeln getestet (Licht, Wärme, Bewegung). | Maha Chraiji, Oluwatobiloba Oguntona | 05.11.2024 |
10 | Überprüfung der korrekten Systemreaktion, wenn alle drei Sensoren aktiviert werden. | Maha Chraiji, Oluwatobiloba Oguntona | 07.11.2024 |
11 | Schaltplan und Aufbauanleitung für das Projekt. | Maha Chraiji, Oluwatobiloba Oguntona | 07.11.2024 |
12 | Arduino-Code mit Kommentaren. | Maha Chraiji, Oluwatobiloba Oguntona | 20.12.2024 |
13 | Ein Taster muss implementiert sein, um das Programm zurückzusetzen und alle Sensorzustände zu löschen. | Maha Chraiji, Oluwatobiloba Oguntona | 05.01.2025 |
Nr. | Anz. | Beschreibung |
---|---|---|
1 | 1 | Arduino Uno |
2 | 1 | LCD Display |
3 | 1 | Ultraschall Abstandsensor |
4 | 1 | TMP36 |
5 | 1 | Lichtsensor/Fotowiderstand |
6 | 1 | Taster |
7 | 1 | RGB LED |
Komponentenspezifikation
Umsetzung (HW/SW)
Hier ist der Code, der die Grundlage unseres Projekts bildet:
Komponententest
Ergebnis
Schritte, um das Rätsel zu lösen
1. Lichtsensor aktivieren
- Bedecken Sie den Lichtsensor (z. B. mit Ihrer Hand/einem Deckel), um die Lichtintensität zu verringern.
- Sobald der Lichtsensor korrekt aktiviert wird:
- Die weiße LED beginnt zu blinken.
- Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Light Activated “).
2. Temperatursensor aktivieren
- Erhöhe die Temperatur des Temperatursensors, z. B. durch Berühren mit der Hand.
- Sobald der Temperatursensor korrekt aktiviert wird:
- Die rote LED beginnt zu blinken.
- Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Fire Activated“).
3. Distanzsensor aktivieren
- Bewege deine Hand oder ein Objekt in die Nähe des Distanzsensors.
- Sobald der Distanzsensor korrekt aktiviert wird:
- Die blaue LED beginnt zu blinken.
- Eine Rückmeldung erscheint auf dem LCD (z. B. „Eye of Space Activated“).
4. Rätsellösung anzeigen
- Wenn alle drei Sensoren korrekt aktiviert, wurden:
- Die grüne LED blinkt dreimal, um den Erfolg anzuzeigen.
- Die finale Lösung des Rätsels erscheint auf dem LCD (z. B. „Guardian’s Secret Revealed!“).
5. System zurücksetzen
- Drücke den Taster, um das System zurückzusetzen.
- Alle LEDs schalten sich aus, und das LCD zeigt wieder die Startmeldung an.
Zusammenfassung
Lessons Learned
- Herausforderungen bei der Integration: Das Erkennen der Komplexität der Integration mehrerer Sensoren in ein einziges System stellt eine zentrale Herausforderung dar. Unterschiedliche Sensortypen können verschiedene Schnittstellen, Kommunikationsprotokolle und Anforderungen an die Signalverarbeitung mit sich bringen, was die Implementierung erschwert. Zudem ist die Gewährleistung der Kompatibilität zwischen den Komponenten entscheidend, um ein zuverlässiges Gesamtsystem zu schaffen.
- Zeitmanagement: Die Priorisierung der Aufgaben, um das Projekt effizient abzuschließen, ist von großer Bedeutung. Eine klare Strukturierung der Arbeitsabläufe hilft dabei, Engpässe zu vermeiden und Ressourcen optimal zu nutzen. Gleichzeitig erfordert dies eine kontinuierliche Überwachung des Fortschritts, um sicherzustellen, dass die gesetzten Meilensteine erreicht werden.
- Systementwurf: Das Erkennen der Bedeutung von Planung und Entwurf vor der Implementierung ist ein wesentlicher Faktor für den Erfolg des Projekts. Ein gut durchdachter Systementwurf ermöglicht es, potenzielle Probleme frühzeitig zu identifizieren und zu beheben. Dadurch können kostspielige Änderungen während der späteren Entwicklungsphasen vermieden werden, was die Effizienz steigert.
Projektunterlagen
Projektplan
Projektplan
Analyse und Konzeptphase
1. Zieldefinition
- Ziel: Interaktive Steuerung basierend auf Sensoren zur Lösung eines Rätsels.
- Anforderungen: Arduino, Sensoren (Licht, Temperatur, Distanz), LEDs, Taster, LCD-Display, Platine, Zubehör.
2. Systemdesign
- Schaltplan erstellen (Verbindung der Sensoren mit dem Arduino, den LEDs, dem Taster und dem LCD).
- Definition der Logik für das Rätsel:
- Sensor-Trigger → LED-Aktivierung in spezifischen Farben (weiß, rot, blau).
- LED blinkt grün dreimal, wenn alle Sensoren korrekt aktiviert wurden.
- Taster-Logik zur Rücksetzung des Systems nach jeder Verwendung.
Hardware-Setup
3. Beschaffung der Komponenten
- Einkauf der benötigten Hardware (Arduino, Sensoren, LEDs, LCD, Taster, Platine, Zubehör).
4. Aufbau des Prototyps
- Erste Verkabelung der Komponenten auf einem Breadboard gemäß Schaltplan.
- Testphase zur Überprüfung der Hardwarefunktionalität und Logik.
Softwareentwicklung
5. Programmierung des Arduino
- Code schreiben für die Integration der Sensoren, LEDs, des Taster-Resets und des LCD-Displays.
- Implementierung der Logik:
- Lichtsensor: Aktiviert weiße LED, wenn korrekt erkannt.
- Temperatursensor: Aktiviert rote LED, wenn korrekt erkannt.
- Distanzsensor: Aktiviert blaue LED, wenn korrekt erkannt.
- Alle LEDs deaktivieren sich nach Reset durch den Taster.
- Grüne LED blinkt dreimal, wenn alle Sensoren korrekt aktiviert wurden.
- Test: Jeder Sensor zeigt die korrekte LED-Farbe und Rückmeldung auf dem LCD an.
6. Integration des Rätsels
- Hinzufügen der finalen Logik:
- LEDs und LCD geben Feedback bei jedem Sensor-Trigger.
- LCD zeigt die Lösung nur, wenn alle Sensoren korrekt aktiviert sind.
- Grüne LED blinkt dreimal, um das erfolgreiche Lösen des Rätsels zu signalisieren.
- System kann mit dem Taster zurückgesetzt werden.
Optimierung und endgültiger Aufbau
7. Systemtests
- Einzeltests für jeden Sensor (korrekte LED und LCD-Rückmeldung).
- Gesamttest: Rätsel vollständig aktivieren, um die Endnachricht und das grüne Blinken zu prüfen.
- Funktionalität des Tasters: System wird erfolgreich zurückgesetzt.
8. Endgültiger Aufbau auf Platine
- Übertragen der Schaltung von einem Breadboard auf eine Platine.
- Die Platine wird so gestaltet, dass sie direkt auf den Arduino-Mikrocontroller gesteckt werden kann (Shield).
- Finaler Test der gesamten Schaltung mit der Platine.
Projektdateien im ZIP-Format
Projektarchiv
- Dieses ZIP-Archiv enthält alle relevanten Dateien für das Projekt. Die Dateien können verwendet werden, um die Konstruktionen und Modelle in einer CAD-Software zu öffnen und weiter zu bearbeiten. Außerdem wird der C-Code und der DIN A4 Aufsteller bereitgestellt. Bitte stellen Sie sicher, dass Sie über eine geeignete Software verfügen, um die Dateien zu extrahieren und anzuzeigen.
Literatur
→ zurück zur Übersicht: WS 23/24: Angewandte Elektrotechnik (BSE)