Projekt 47b: Snake mit LED-Streifen und Arduino

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Autoren: Christo Tsibadze, Stefan Vogel
Betreuer: Prof. Schneider

Retro Game Station

Aufgabenstellung

Realisierung eines Retro-Spiels "Snake", mit Hilfe von RGB-LED-Streifen und Arduino Mikrokontroller: Es soll eine "Snake-Spielmaschine" entwickelt und konstruiert werden, die aus Ein- und Ausgabegeräten sowie einer Verarbeitungseinheit besteht.

  • Eingabegeräte: Joysticks oder Taster
  • Verarbeitung: Arduino
  • Ausgabe: LED-Matrix als Bildschirm

Das Retro-Spiel "Snake" soll durch einem Mikrocontroller Arduino und selbst entwickelter Software realisiert werden. Die Konstruktion und Aufbau der LED-Matrix basiert auf einem Artikel des c't MAKE: vom Januar 2015. (S. 12 ff.)

Erwartungen an die Projektlösung

  • Recherche mit Artikel aus c‘t Make: 1/2015 (S. 12ff)
  • Planung des Aufbaues
  • Auflistung der benötigten Materialien in der BOM
  • Beschaffung der Bauteile
  • Realisierung des Aufbaus
  • Programmierung des Spiels Snake mit Hilfe der LED-Streifen und Arduino
  • Erstellung eines spektakulären Videos, welches das Spiel demonstriert
  • Test und wiss. Dokumentation
  • Live Vorführung während der Abschlusspräsentation

Schwierigkeitsgrad

Anspruchsvoll (***)

Plannung

Projektplan

Projektplan


Zunächst wurde ein Projektplan erstellt mit vier Phasen:


  • Planung
  • Konzept/Entwurf
  • Realisierung
  • Dokumentation

und zu geschätzten Arbeitsstunden zugeordnet.


Zeitliche Ressource insgesamt ist mit 46 Arbeitsstunden geplant.



Materialbeschaffung

Einige Materialien konnten nicht bei vorgegebenen Händlern bestellt werden, deshalb wurden diese im Baumarkt erworben:

  • ein Paar Holzplatten (Holzzuschnitt-Reste)
  • sowie eine weiße Tapete ( 1 meter), der das Licht diffus durchlässt
  • günstiger Tapetenkleister
  • Sekundenkleber


Gesamtkosten (Holz und Tapete) weniger als 10€.

Konzeption/Entwurf

CAD - Entwurf

LED-Streifen_CAD
LED-Streifen geklebt auf Gehäuse
Gehäuse inkl Arduino
Konsole mit Gamepad ohne Tapete



In der Konzeptions- bzw. Entwurfsphase wurde die Retro-Game-Station zu erst im CAD entworfen.


die WS2812B LED-Streifen, sowie das Arduino Uno Mikrokontroller-Platine und diverse Schalter, Knöpfe und Potentiometer wurden aus der Webseite https://grabcad.com verwendet. Die Form, Größe und das Material wurden für restliche Einzelteile während der CAD-Konstruktion festgelegt.

Es wurden folgende Teile entworfen:

  • seitliche dreieckige Stütz-Teile
  • hintere Deckel aus dünner Holzplatte
  • dünne Holzplatte auf dem die LED-Streifen geklebt werden
  • dicke Holzplatte mit relativ großen Bohrungen mit der gleichen Abstand wie die LEDs zueinander
  • Gamepad




















Technische Zeichnungen

Technische Zeichnung Gamepad
Technische Zeichnung Dicke_Platte

Nach der Fertigstellung der 3D-CAD-Modelle wurden daraus die technische Zeichnungen für die Fertigung abgeleitet. Es wurden alle wichtigen Abmaße eingetragen und im Maßstab 1:1 ausgedruckt.

Einige Zeichnungen wurden direkt auf den Holzplatten mit Klebefilm befestigt und somit die Positionierung der Bohrungen erleichtert.












Leiterplatten Entwurf

Technische Zeichnung Dicke_Platte


Der elektrischer Schaltplan wurde mit Hilfe von einem Freeware-Software (Fritzing; http://fritzing.org/home/) realisiert. Dort ist es möglich die einzelne elektrische Bauteile virtuell miteinander zu verschalten und zu parametrisieren. Anschließend ist es möglich daraus einen elektrischen Schaltplan zu erzeugen und sogar auch Leiterplatten-Design ist hiermit möglich. Die verschalteten elektrische Bauteile, der Schaltplan, die Leiterplatten-Layout und auch das Arduino Code zusammen lassen sich in einem Fritzing-Projekt als eine Datei speichern.









Realisierung

Hardware-Design

Bildschirm

Licht-Test mit Tapete
LED-Schablone für exakte Positionierung
LED-Streifen anbringen
Platte bohren






Für die "Haut" der Konsole wurde eine weiße undurchsichtige Tapete mit bestimmtem Muster im Baumarkt gekauft. Die Tapete ist nicht transparent aber wie im Bild (links) zu sehen ist, kommen die Farben durch.

Eine Zeichnung von einer CAD-Baugruppe (Holzplatte mit positionierten LED-Streifen) wurde auf ein Brett geklebt und anschließend mit einem sehr scharfem Messer vorsichtig rechteckige Streifen ausgeschnitten. In die ausgeschnittene Bereiche wurden die LED-Streifen positioniert und verklebt. Zuvor wurden die LED-Streifen (60-LEDs pro Meter) in kleinere Streifen (18-LEDs pro Streifen) zugeschnitten. Aus dem Verschnitt wurde die letzte 18-LED-Streifen zusammengelötet. Die Verkabelung der LED-Streifen wurde durch kleine Bohrungen seitlich durch das Brett geführt.














Nachdem die dünne Platte mit den LED-Streifen fertiggestellt war, wurde mit der Bearbeitung einer dickeren Platte gestartet. Diese Platte soll auf die dünnere Platte draufkommen und mit 234 Bohrungen die Lichter der einzelnen LEDs von einander trennen. Zuerst wurden breite Bohrungen gebohrt und anschließend von beiden Seiten gesenkt.












Gamepads

Gamepad-Elektronik
Gamepad Bohrungen, zuvor gefräst
Hardware und Elektronik
verklebt







Eine Lochrasterplatine wurde in kleinere Rechtecke geschnitten. Darauf wurden Knöpfe platziert und verlötet inklusive Verkabelung. Am ende der Kabelstrangbündel wurde ein VGA-Anschluss verlötet.



Aus den Rechteckigen Holzklötzen mit den Maßen des Gamepads wurde die untere Seite ausgefräst. Anschließend eine Schablone draufgeklebt und die Bohrungen für die Knöpfe in vorher bestimmten Positionen gebohrt.










Die Gamepad-Elektronik und Gamepad-Gehäuse wurden zusammengefügt. Die Leiterplatten wurden mit einem Klebstoff fest positioniert und verklebt. Für gleichmäßigen Abstand der Knöpfe wurden an jeder Ecke der Leiterplatten gleichgroße Schrauben als Abstandshalter verwendet. Zur Kabelzugsentlastung wurde an dem Kabelbündel ein Doppelknoten mit einem Leitungsstück angebracht. Anschließend wurde eine dünne Platte als Deckel drauf geschraubt.











Leiterplatte und Verkabelung

Aufsteckplatine und Arduino
Aufsteckplatine und Arduino
Verkabelung und Arduino auf die dünne Platte
Kondensator





Aus einer Lochrasterplatine wurde wieder ein Rechteck im passender Größe zur Arduino Uno zugeschnitten. Auf dieser Platine wurden Pins darangelötet mit dem sie auf das Arduino Board dadrauf gesteckt wurde. Auf dieser Aufsteckplatine wurden Widerstände für die Knöpfe, ein Piezo-Speaker, ein linearer Potentiometer und Leitungen von den Anschlüssen für Gamepads sowie Datenleitung und Stromversorgung für die LED-Matrix verlötet. Für die Stromversorgung wurde ein AC/DC Wandler (5V mit 3000mA) verwendet. Der Stecker wurde abgeschnitten und direkt auf die Aufsteckplatine gelötet, als Stromversorgung für Arduino und auch für die LEDs. Zwischen der Plus- und Minus Leitung wurde ein Kondensator mit 1000µF (bis 50V) verbaut.








Das Arduino-Board mit der Aufsteckplatine wurde auf der Rückseite der dünnen Platte (mit LED-Streifen auf anderer Seite) mit Kabelbinder und Klebepads für Kabelbinder befestigt.








Konsole

Seitenstützen-Montage
Lochplatten-Montage (Dicke-Platte)
Montage hintere Platte
Tapezieren




Die dünne Platte mit LED-Streifen und die Dicke Platte mit 234 Bohrungen wurden miteinander verschraubt. Aus der dickeren Holzplatte wurden zwei dreieckige Stützen nach technischen Zeichnungen zugeschnitten und auf die dünne Holzplatte hinten drangeschraubt. In den dreieckigen Stützen wurden auch die Anschluss-Stecker (male) montiert.











Anschließend wurde aus einer noch dünneren Platte die Deckel für Hinten inkl. Aussparungen für Potentiometer und Ein/Aus-Schalter gefertigt und an die Spielkonsole geschraubt. Zum Schluss der Hardware-Fertigung wurde die Tapete zugeschnitten und damit die Konsole vorne und seitlich tapeziert.











Software-Design

Es wurde mit Hilfe von Arduino IDE programmiert. Die LED-Streifen wurden mit Hilfe der Bibliotheken "FastLED" und NEOPixel" angesteuert. Die Quellcodes wurden sowie die Fertigungspläne (technische Zeichnungen) wurden im SVN-Projektordner hochgeladen.


Steuerung

Zunächst wurde ein TEST-Programm für Hardware entwickelt, welches die Funktionalität der Tasten und Potentiometer prüft. Bei Betätigung der Tasten wird auf dem seriellen Monitor die Bezeichnung der gedrückten Taste ausgegeben. Auch der Wert der Potentiometer ist ablesbar


Coole visuelle Effekte

Effekt_1
Effekt_2
Effekt_3
Effekt_4




In den Bibliotheken "FastLED" und "NEOPixel" sind mehrere Beispielprogramme für schöne visuelle Effekte.



















Sounds

Es wurden Soundausschnitte aus Super Mario-Melody und Star Wars-Melody mit Hilfe des Summers und Arduino Beispiel-Programms realisiert.
Als "Game Over"-Sound wurde ein Teil des Star Wars Melodie verwendet. Und als Anfangssequenz ein Teil aus Super Mario. Bei jedem "Frucht" der Snake gegessen hat wird auch ein Peepton abgespielt.

Super Mario:
Video: https://youtu.be/-kkxs_fekWM
HowTo: http://www.princetronics.com/supermariothemesong/

Star Wars Melody:
Video: https://youtu.be/cye_wiaqybk
HowTo: http://www.instructables.com/id/How-to-easily-play-music-with-buzzer-on-arduino-Th/



Snake

Nein, das Rad wurde nicht neu erfunden ;). Die Snake-Software als .cpp und .h-Datei wurde aus GitHub-Webseite heruntergeladen, angepasst und auf Arduino geflasht.

Snake-Quelldaten GitHup: https://github.com/emanuelk/Snake-Game-Library-for-Arduino.git


Zusätzlich wurde im Spiel ein farbiger Highscore-Balken eingebaut welches den aktuellen Fortschritt/Schwierigkeitsgrad anzeigt.



Präsentationssoftware für die Messe

fertige Retro-Game-Station




Für die Messe wurde ein Quellcode zusammengestellt mit:

  • einem Spielablauf (main-programm)
  • Intro mit HSHL-Logo (wenn die Konsole angeschaltet oder neugestartet wird) mit SuperMario-Sound
  • Selbstgeschriebener auf Zufall basierter Algorithmus für Lichtfarbeneffekt der nach dem GameOver erscheint bis wieder eine Taste betätigt wird zum Spielneustart
  • Steuerung: Eingabe Gamepads und Potentiometer und Ausgabe: LED-Matrix










Dokumentation

Präsentationsmaterial für die Messe

Plakat für die Messe




Für die Messe wurden vier DIN-A3 "Plakate" mit Infomaterial erstellt. Sowie ein Projektplan und Fotos von Realisierung.














Video






Noch unter Bearbeitung!!!















→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 15/16)