Im Rahmen der Hackathon 2.0 Veranstaltung an der TGGBBZ 1 in Saarbrücken war ich daran beteiligt ein WIFI Pong zu bauen. Weil das Ergebnis in unter 10 Stunden entstanden ist, ist es qualitativ nicht besonders gut geworden. Da ich das Projekt bei Braintower promoted habe, habe ich die Möglichkeit bekommen es in der von mir gewünschten Qualität nachzubauen.

Das Projekt ist zu groß für einen einzelnen Blogbeitrag und daher werde ich es in drei Blogbeiträge aufteilen. Die Blogbeiträge werden wie eine Anleitung (Tutorial) aufgebaut, damit man auch als Anfänger das Projekt realisieren kann.

Teil 1 (Hardware):

  • Hardware Liste der benötigten Komponenten.
  • Vorbereitung der Arduino IDE für das NodeMCU und ein LED Programm, womit wir die Konfiguration testen können.
  • Aufbau der Schaltung für den Controller und ein Programm um die Knöpfe zu testen.

Teil 2 (Controller Software)

  • Serielles Debuggen des NodeMCU.
  • WLAN Verbindung.
  • Senden der TCP Pakete an eine IP.

Teil 3 (Pong Software)

  • Einrichtung von LIBGDX in der Intellij IDE.
  • Aufsetzten des TCP Servers.
  • Implementieren der Spiellogik und grafische Darstellung.

Vorbereitung der Arduino IDE

Besuche die Seite https://www.arduino.cc/en/Main/Software und lade die Arduino IDE herunter.
Installiere die Arduino IDE und führe das Programm aus.

Die Arduino IDE unterstützt das NodeMcu-Board nicht direkt. Wir müssen die Boardverwaltung um ein Paket bereichern.
Öffne Datei → Voreinstellungen und füge unter „Zusätzliche Boardverwalter-URLs“ folgende URL ein:

Das Ganze sollte etwa so aussehen:

Nach der Änderung mit OK speichern. Unter den Menüpunkt Werkzeuge → Board:… → Boardverwaltung auswählen.
Gib in der Suche esp8266 ein und installiere die neuste „esp8266 by ESP8266 Community“ Bibliothek.

Wir müssen der Arduino IDE mitteilen welches Board verwendet wird. Dazu gehen wir noch mal über Menü Werkzeuge → Board:… und NodeMCU 1.0 (ESP-12E-Module) auswählen.

Unter Werkzeuge → Upload Speed:… → 115200 muss die Übertragungsgeschwindigkeit ausgewählt werden, mit der das Board beschrieben wird.

Wir müssen der Arduino IDE mitteilen welcher COM (Windows) oder tty (Linux) Port für die Übertragung verwendet werden soll.

Drücke die Tasten [Windows] + [R], um das Ausführen Fenster zu öffnen und um devmgmt.msc (Geräte-Manager) auszuführen.

Öffne jetzt die Anschlüsse (COM & LPT) Baum-Struktur und schließe das NodeMCU Board per USB an.
Es sollte jetzt ein weiteres Gerät erscheinen. Merke dir den COM Port der dazugekommen ist.

Öffne das Terminal und lass dir die aktuellen Geräte anzeigen:

Schließe jetzt das NodeMCU per USB an und lass dir nochmal die Geräte anzeigen.
Es sollte jetzt ein weiteres Gerät auftauchen, das du dir merken solltest.

Öffne jetzt die Arduino IDE und wähle jetzt den gemerkten COM (Windows) oder tty (Linux) Port aus.

Mit  kann das Programm übertragen werden. Das Kompilieren und Übertragen wird einige Zeit beanspruchen, da im Hintergrund mehr Code kompiliert werden muss.

Nach der Übertragung steht an der Mauszeigerposition (sehe Bild unten) Hochladen abgeschlossen.
Der NodeMCU sollte jetzt alle 0,5 Sekunden blinken.

Die Schaltung

Stromversorgung

Die Stromversorgung realisieren wir über eine 9V Batterie. Der Vin PIN kann von 5V bis 20V vertragen, da der NodeMCU über einen internen Spannungsregler verfügt.
Als Sturmquelle kann auch der USB Anschluss genutzt werden.

Manche Breadboards haben eine getrennte Leiterbahn, in diesen Fall muss die Leiterbahn überbrückt werden:

Knöpfe

Zur Erklärung behandeln wir BUTTON_UP (D1) der andere Knopf BUTTON_DOWN (D2) ist spiegelverkehrt aufgebaut.
Der spiegelverkehrte Aufbau von BUTTON_DOWN (D2) ist nicht notwendig aber wegen den Abstand der Knöpfe sinnvoll.

A wird an PIN D1 und 10K Ohm Widerstand angeschossen. Das andere Ende des Widerstands wird an GND (Masse) angeschlossen.
B wird an 3,3V PIN angeschlossen.

Nicht gedrückter Zustand
Verbindung zwischen (A und C) und zwischen (B und D) am Knopf.
Auf D1 haben wir eine Spannung von 0V und digitalRead(BUTTON_DOWN) hat den Wert LOW.
Damit auf PIN D1 0V sind wird ein verfahren namens Pulldown verwendet. Dabei wird ein Widerstand zwischen der Masse und Ziel PIN verbunden.

Gedrückter Zustand
Verbindung zwischen A,B,C und D am Knopf.
Auf D1 haben wir eine Spannung von etwa 3,3V und digitalRead(BUTTON_DOWN) hat den Wert HIGH.

Fortsetzung folgt…

Tomasz Pordzik

Tomasz Pordzik

Auszubildender

Programmieren ist für diesen Code-Padawan die beste Gelegenheit seine vornehme Blässe zu kultivieren. Teilt sich seine Wohnung mit zwei Frettchen und seiner Freundin. Immer zu einem Small Talk über theoretische Physik aufgelegt. Trinkt seinen Kaffee schwarz und mit 5 kg Zucker. Für Braintower schreibt er über die Themen Monitoring und Reporting und die Weiterentwicklung des SMS Gateways.

Gefällt dir der Artikel? Bitte teile ihn!
Share on Facebook
Facebook
9Share on Google+
Google+
0Share on LinkedIn
Linkedin
Email this to someone
email
Tweet about this on Twitter
Twitter