Laser-Schießstand
Autoren: Sperhake, Lukas Aaron und Kleiböhmer, Iván
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
Einleitung
Das 2. Semester des Masterstudiengangs Business and System Engineering beinhaltet das GET-Fachpraktikum. Neben den vier angesetzten Laborterminen ist darüber hinaus noch ein semesterbegleitendes Projekt in zweien Gruppen angesetzt.
Dieser Artikel beschäftigt sich dabei mit dem Projekt der Gruppe 1.4. Zielsetzung ist es, einen Laser-Schießstand zu entwickeln und zu bauen, welcher seinem Anwender direkte Rückkopplung über seinen Treffer gibt.
Anforderungen
- Lasertreffer detektieren können
- Treffer Anzeige auf dem Display
- "Viel Spaß" Anzeige auf dem Display
- Schussgeräusch beim Treffen des Sensors
- Arduino Uno Strombetrieb durch Batterie
- Robustes und ansprechendes Gehäuse
Erwartungen an die Projektlösung
- Planung und Konstruktion des Laser-Schießstandes
- Darstellung der regelungstechnischen Theorie
- Beschaffung der Bauteile (z.B Holz, Arduino Uno, Laser Sensor, Lautsprecher)
- Systemidentifikation (Übertragungsfunktion der Regelstrecke bestimmen)
- Realisierung des Aufbaus
- Modellbasierte Programmierung der Hardware via Arduino IDE
- Video erstellen, welches die Funktionen des Projektes darstellt.
- Dokumentation des Projektes
Aufgabe
Bei unserem Projekt handelt es sich um einen Laser Schießstand mit vier Zielpunkten. Ziel ist es, mithilfe eines Lasers alle Ziele zu treffen. Dabei wird von links nach rechts auf die Zielpunkte jeweils einmal mittels des Lasers gefeuert. Wird ein Zielpunkt getroffen, wird dies mit dem Lasersensor detektiert und es erscheint für den Anwender ein optisches Signal durch eine grün aufleuchtende LED direkt über dem jeweiligen Zielpunkt. Zusätzlich ertönt ein akustisches Signal, welches das Geräusch einer abgefeuerten Waffe imitiert.
Darüber hinaus wird der Treffer auf dem oben anliegenden Display angezeigt. Trifft der Anwender auch den nächsten Zielpunkt, so erfolgt wie bei jedem anderen detektierten Treffer eines Lasers das optische sowie das akustische Signal. Auf dem Display wird der Treffer zu den bisherigen Treffern hinzuaddiert. Beim Detektieren des vierten und letzten Lasersignals wird dies ebenfalls wieder über die Ausgabesysteme ausgegeben und der Schießstand wird zurückgesetzt und ist bereit, von vorne gespielt zu werden.
Projekt
Projektplanung
Projektmanagement
Aufgrund der besonderen Umstände durch die Coronapandemie, wodurch kein direkter Austausch oder Kick-off Meetings möglich waren, ist eine gute Projektplanung von entscheidender Wichtigkeit beim Durchführen des Projektes.
Unsere Projektplanung basiert dabei auf einem Gantt-Diagramm, welches unsere Tätigkeiten in Zeitliche Abschnitte einteilt.
Um zu überprüfen, ob die von uns definierten Vorgaben im Gantt-Diagramm auch eingehalten wurden, haben wir wöchentlich ein Kick-off Meeting gehalten(skype). Im Kick Off Meeting wurde sowohl über den momentanen Stand des Projektes gesprochen, als auch über Problematiken und Lösungsansätze.
Änderungen, welche aus den Kick-off Meetings resultierten, wurden im Gantt-Diagramm festgehalten. Jedoch ist zu erwähnen, dass die meisten unserer Tätigkeiten zu zweit über Skype durchgeführt wurden.
Hier finden Sie das vollständige Gantt-Diagramm: Medium:Gantt-Diagramm Laser.pdf
Planung der Umsetzungsmöglichkeiten
Es wurde zur Planungstätigkeit ein morphologischer Kasten erstellt, dieser half bei der Findung konkreter Lösungsvarianten bei unserem Projekt. Im Weiteren soll auf einige Elemente des morphologischen Kastens eingegangen werden:
So fiel die Wahl des Gehäusematerials auf Holz, da sich dieser leichter verarbeiten lässt und Holz kosteneffizienter ist als Aluminium und ein 3D-Druck. Zudem ließ sich Holz auch zu Hause mit vorhandenem Werkzeug bearbeiten und erforderte nicht wie Aluminium oder ein 3D-Druck das Werkzeug oder die Hilfestellung der Hochschule . Außerdem haben wir uns bei der Stromversorgung für eine 9V Blockbatterie und gegen ein externes Netzteil und einen USB-Anschluss entschieden.
Entscheidungsgrund für die 9V Blockbatterie war die daraus resultierende Mobilität des Laser-Schießstandes. Zudem konnte die Blockbatterie mit im Gehäuse verstaut werden. Ein externes Netzteil hätte hier sonst immer eine Steckdose in der Nähe benötigt, wodurch nicht an jedem Ort mit dem Laserschießstand hätte gespielt werden können.
Die maximale Benutzerfreundlichkeit und Mobilität ließ sich somit durch eine 9V Blockbatterie realisieren.
Materialplanung
Nachdem mithilfe des morphologischen Kastens festgelegt worden ist, wie unsere Variante des Laser-Schießstandes aufgebaut werden soll und mit welchen Elementen, wurde ein Material Plan erstellt.
Wichtig bei der Materialplanung war es zu beachten, dass es aufgrund der Coronapandemie zu Lieferschwierigkeiten oder längeren Lieferzeiten kommen kann. So stellte beispielsweise die Beschaffung des Leimholzes eine Herausforderung dar, da die Baumärkte von dem Lockdown betroffen waren.
Einen Großteil der Bauelemente haben wir über Conrad und Reichelt erwerben können. Die Gesamtkosten des Projektes belaufen sich auf 104,47€.
Es ist jedoch wichtig zu erwähnen, dass nicht alle Produkte erworben werden mussten, da einige Produkte wie das Arduino Uno bereits in unserem Besitz waren. Der Vollständigkeits halber haben wir dies jedoch mit in unserer Materialplanung samt Preis aufgeführt, damit sich der Wert des Laser Schießstandes genaustens ermitteln lässt.
ID | Bauelement | Stückzahl | Preis [€] | Link |
---|---|---|---|---|
1 | Arduino Uno | 1 | 22,17 | https://amzn.to/3tUxHX5 |
2 | 9V Blockbatterie | 1 | 4,60 | https://amzn.to/2NmsupU |
3 | Laser Sensor | 4 | 11,40 | https://amzn.to/3783j1y |
4 | Laserpointer Rot | 1 | 8,65 | https://amzn.to/2LJEXDM |
5 | LED Grün | 4 | 3,60 | https://bit.ly/2ZaBcdH |
6 | Lautsprecher | 1 | 8,29 | https://amzn.to/3b1jyi8 |
7 | I2C OLED Mini-Display 182x64 | 1 | 7,29 | https://amzn.to/3b1jyi8 |
8 | Leimholz 60x40x1,5cm | 1 | 12,60 | https://amzn.to/379lsMj |
9 | Holzschrauben | 20 | 10,99 | https://amzn.to/2LKkBKB |
10 | Widerstand 220Ω | 4 | 0,39 | https://bit.ly/3acdS5I |
11 | TIP 120 Transistor (MOSFET) | 1 | 7,50 | https://amzn.to/3aWm8pG |
12 | Jumper Wire | 40 | 6,99 | https://amzn.to/3d69t5Y |
Projektdurchführung
Konstruktion des Gehäuses
Der erste Schritt bei der Konstruktion des Gehäuses war es, eine Entwurfsskizze anzufertigen, an der man sich orientieren kann.
Nach dem bei der Projektplanung auch das Material ausgewählt worden ist, konnte mit der Konstruktion begonnen werden.
Bei der Größe des Gehäuses wurde darauf geachtet, dass alle Komponenten genügend Platz darin finden und die Anschlüsse, wie USB-Anschluss und die Stromversorgung nach wie vor gut erreichbar sind.
Aus wirtschaftlichen Gründen wurden die einzelnen Elemente des Gehäuses vorher so berechnet, dass sich möglichst wenig Verschnitt beim Zuschneiden der 60x40x1,5cm Leimholzplatte ergibt.
Zugeschnitten wurden die einzelnen Elemente aus der Leimholzplatte mithilfe einer Tischkreissäge. Zusammengefügt wurden die einzelnen Holzplatten durch 20 Holzschrauben, mit je einer Länge von 2,5 cm. Sowohl die Bohrungen für die LED's, als auch für die Laser Sensoren wurden mit einem 8 Bohrer durchgeführt. Die sich später dort befindenden LED's und Sensoren wurden mit einer Heizklebepistole dort fixiert.
Die Bohrung für den Lautsprecher ist mit einer Lochsäge, mit einem Durchmesser von 4 cm, durchgeführt worden. Zusätzlich ist in der Innenseite der Front noch eine Aufhängung angebracht worden, an der das Arduino Uno vertikal befestigt werden kann. Dabei schauen der USB-Anschluss und der Anschluss für die 9V Blockbatterie nach oben, was eine leichte Handhabung garantiert.
Schaltplanentwurf und Aufbau der Schaltung
Der Schaltplan für den Laser Schießstand wurde mit der Software Fritzing erstellt.
Die Stromversorgung des Laser-Schießstandes erfolgt über eine 9 V Blockbatterie. Die einzelnen LED's die bei einem Treffer des jeweiligen Ziels aufleuchten sollen, werden über die Inputs 9 bis 12 angesteuert. Vor den jeweiligen LED's ist noch ein Vorwiderstand von 220Ω vorgeschaltet. Dieser wurde vom Hersteller vordefiniert. Auf den Steckbrettern wird jeweils eine Reihe als 3,3 V Anschluss und eine weitere als Ground Reihe genutzt. Von diesen Reihen werden die LED's, Lautsprecher, Laser Sensor und das Display mit Strom versorgt. Das Display wurde darüber hinaus noch mit den analogen Inputs A4 und A5 verknüpft.
Programmierung
Der vollständige Quellcode befindet sich in dieser PDF: Medium:Quellcode Laser-Schießstand.pdf
Der Quellcode befindet sich in SVN.
Verwendete Bibliotheken
Die folgenden Bibliotheken wurden verwendet. Die Adafruit GFX sowie die Adafruit SSD1306 wird dabei vom Display benötigt.
// Libraries #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
Sound
Der Lautsprecher soll bei einem Treffer einen Schuss ausgeben. Um das umzusetzen, war es nötig eine WAV. Datei in 8 Bit zu konvertieren, um diese dann in einem Zahlencode zu encodieren. Diese wird dann anschließend in Arduino IDE eingefügt. Durch den Aufruf in einer if Schleife wird der Sound nun bei einem Treffer abgespielt.
const unsigned char sample [] PROGMEM = { 129, 129, 129, 127, 127, 127, 129, 128, 128, 129, 129, 131, 128, 129, 129, 129, 130, 129, 128, 125, 126, 126, 126, 128, 126, 126, 125, 127, 130, 128, 126, 123, 124, 125, 126, 129, 126, 129, 129, 128, 128, 129, 130, 127, 128, 127, 126, 127, 124, 126, 128, 127, 127, 125, 125, 125, 129, 127, 123, 124, 121, 123, 127, 128, 130, 129, };
Input/Output
Übersicht über die Input und Output Vergabe
pinMode(SOUND, OUTPUT);//definiert die Soundausgabe Pin 2 pinMode(LASER1, INPUT);// definiert den Laserinput Pin 3 pinMode(LASER2, INPUT);// definiert den Laserinput Pin 4 pinMode(LASER3, INPUT);// definiert den Laserinput Pin 5 pinMode(LASER4, INPUT);// definiert den Laserinput Pin 6 pinMode(LED1, OUTPUT);// Pin 9 pinMode(LED2, OUTPUT);// Pin 10 pinMode(LED3, OUTPUT);// Pin 11 pinMode(LED4, OUTPUT);// Pin 12
Array
Um den Quellcode so kompakt und effektiv zu machen, wie es nur geht, wurden die einzelnen Laser Sensoren in ein Array mit der Länge 4 gepackt.
#define Size 4 int laserinput[Size] = {digitalRead(LASER1), digitalRead(LASER2), digitalRead(LASER3), digitalRead(LASER4)};
Beispiel Schleife beim detektieren eines Lasers
Sollte ein Laser Sensor aus dem Array getroffen werden, so wird dieser Laser Sensor auf HIGH gesetzt. Ist dies der Fall, so wird nach dem folgenden Schema die Schleife durchlaufen. Als Erstes wird die zugeordnete LED zu dem jeweiligen Laser Sensor´s auf HIGH gesetzt und leuchtet somit. Zudem wird über das Display der Treffer angezeigt. Auch wird in der Schleife der Sound des Schusses abgespielt.
for(int i = 0; i < Size; i++) { if( laserinput[0] == HIGH) { Serial.println("Input1"); startPlayback(sample, sizeof(sample)); digitalWrite(LED1,HIGH); Serial.println("Detected!"); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(1,0); display.println("Treffer1"); display.setCursor(40,20); display.display(); display.clearDisplay(); }
Ergebnis
Der Laser Schießstand wurde fertiggestellt. Allerdings gab es im Ergebnis leichte Abweichungen von den vorher definierten Anforderungen. So lässt sich der Treffer des jeweiligen Laser Sensors zu den bisherigen Treffern zusammen addieren und dies als "Treffer x" ausgeben. Alle anderen Anforderungen wurden erfüllt.
Zusammenfassung
Rückläufig würden wir einige Elemente an unserm Laser-Schießstand anders verbauen oder sogar direkt andere Elemente dafür verwenden. So würden wir in Zukunft zum Abspielen des Schusses ein DFPlayer mini–MP3 Player Modul für Arduino verwenden. Durch dieses Modul wäre es möglich, unterschiedliche Töne zu verwenden. Zudem ist es die effektivere Methode. Auch wäre mit diesem Modul die Trefferansage als Sound möglich.
Eine weitere Änderung wäre, dass wir die LED´s von Grüne in RGB LED´s wechseln würden. Ein nicht getroffener Laser könnte dadurch auf Rot stehen und erst beim Treffen in Grün umspringen. Außerdem wären mit den unterschiedlichen Farben der LED´s Levl-Modi möglich.
Auch würden wir in Zukunft ein größeres Display verwenden. Da die Anzeige aus der Distanz auf einem 0,96" Display wirklich nur sehr schwer zu erkennen ist.
Aktueller Stand | Optimierung | Vorteil |
---|---|---|
Audiosignal (Lautsprecher mit 3W und 4Ω) |
DFPlayer mini–MP3 Player Modul für Arduino | 1.Mehr Varianz von Tönen 2.Kombination vom Schusssound bis hin zur Aussprache des Highscores |
Visuelle Ausgabe (LED Grün) |
RGB-LED | 1. Level-Modi möglich •Zeitfenster von 5 Sekunden, um zu treffen •Erst fängt eine RGB-LED an in allen Farben und danach die anderen •Je nach Level mehr oder weniger Zeit |
Visuelle Ausgabe Display (OLED 128x64) | Bewegte Bilder | 1. Smileys die gut, mittel, schlecht anzeigen 2. Highscore Anzeige 3. Animierter Countdown 4. unkteausgabe |
Quellcode | Erweitern des Quellcodes | 1. Zeitmessung für das Absolvieren der Vier Ziele •Speichern der Zeitmessung •Vergleich der Zeitmessung zu anderen Mitspielern •Punktesystem für Zeitabschnitte (z.B. 10 sec = 50 Punkte, 20 sec = 25 Punkte usw.) 2.Level-Modi •Erste RGB-LED fängt Random an zu blinken •Danach fangen die anderen Radom an •Werden 5 Sekunden Pro LED überschritten so ist das Level verloren |
Lessons Learned
Durch dieses Projekt konnten wir erfolgreich den Umgang mit Sensoren und anderen Bauelementen unseres Projektes und deren Programmierung erlernen. Zusätzlich wurde Wissen in den Bereichen der Produktentwicklung vertieft.
YouTube Video
Direktlink zum Youtube Video: https://youtu.be/ydVlzDAZNwg
Literatur
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)