seeseekey.net - Invictus Deus Ex Machina

Der ESP8266 ist ein Mikrocontroller welcher vor allem aufgrund seines Preises und seiner Fähigkeiten sehr beliebt in der Bastlerszene ist. Während er ursprünglich als WLAN-Shield für den Arduino und Konsorten gedacht war, wird er immer öfter direkt genutzt. Das sollte auch nicht verwundern, schließlich sind viele Leistungswerte des ESP8266 einem gewöhnlichen Arduino überlegen. Mittlerweile gibt es vom ESP8266 14 Varianten die von ESP-1 bis ESP-14 durchnummeriert sind.

Das NodeMCU-Board

Der einfache Einstieg gelingt mit gelingt am besten mit einem ESP8266-Entwicklerboard. Diese verfügen meist über NodeMCU. Das NodeMCU-Modul basiert dabei auf einem ESP-12. Da der ESP8266 3,3 Volt benötigt, USB allerdings 5 Volt liefert, löst das Entwicklerboard viele Probleme, da es bereits einen Spannungsteiler an Bord hat. Für die Anbindung per seriellem Interface wird unter macOS ein Treiber benötigt. Dieser kann unter anderem auf GitHub gefunden werden. Nach der Installation des Treibers muss der Entwicklungsrechner neu gestartet werden.

Nach der Treiberinstallation kann die Schnittstelle angesprochen werden

Nach dem Neustart kann die Arduino IDE geöffnet werden. Da das Board nicht von Haus aus unterstützt wird, muss eine weitere Konfiguration für den Board Manager hinzugefügt werden. Dazu öffnet man die Einstellungen der Arduino IDE und wählt dort den Punkt Zusätzliche Boardverwalter-URLs aus. Dort fügt man nun die URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

hinzu. Anschließend können die Einstellungen geschlossen werden und der Board Manager geöffnet werden. Im Board Manager wird nun nach ESP8266 gesucht und die entsprechende Unterstützung installiert.

Die Unterstützung für die ESP8266-Boards wird installiert

Nachdem die Unterstützung für das Board installiert wurde, muss das ganze noch korrekt konfiguriert werden. In diesem Beispiel wurden folgende Einstellungen genutzt:

Board: "NodeMCU 1.0 (ESP-12E Module)"
CPU Frequency: "80 MHz"
Flash Size: "4M (3M SPIFFS)"
Upload Speed: "9600"
Port: "/dev/cu.wchusbserial1410"

Als Beispiel-Programm bietet sich das Webserver-Beispiel an. Nachdem das Beispielprogramm in der Arduino IDE gelandet ist, kompiliert und hochgeladen wurde kann der erste Test des ESP8266 durchgeführt werden. Dazu muss im Browser die IP-Adresse des Gerätes oder alternativ die URL: http://esp8266.local aufgerufen werden.

Im Rahmen des Neubrandenburger Hackerspaces und eines kürzlichen Standes auf dem Marktplatz, waren wir auf der Suche nach einigen Dingen, die man auf diesem Stand ausstellen konnte. Nachdem wir im E5 mit einigen Arduinos und Servomotoren experimentiert hatten, kam mir die Idee zu einem automatischen Xylophon.

Das automatische Xylophon

Das automatische Xylophon

Die Idee wurde anschließend in den nächsten Tagen umgesetzt. Realisiert wurde das ganze mit einem Arduino (und einem Bluetooth-Shield zum drahtlosen flashen), einer Tilt-Pan-Vorrichtung und einem Joystick. Mit Hilfe des Joysticks konnte die Konstruktion auch von Hand bedient werden, was auf dem Stand beliebter war als der automatische Modus. Der Quelltext zum Projekt ist auf GitHub zu finden.. Das Projekt ist unter der MIT-Lizenz lizenziert und somit freie Software. Informationen zum Nachbau sind im Entitäts-Wiki zu finden.

Mit einem Arduino kann man viele Dinge ausprobieren, allerdings muss man meist noch zusätzliche Hardware wie LEDs und ähnliches beschaffen. Mit dem Arduboy hat man ein System, mit dem man viele Dinge ohne zusätzliche Anschaffungen ausprobieren kann. Dabei handelt es sich um einen GameBoy im Mini-Format. Der Arduboy besteht aus einem OLED-Display, sechs Buttons, einem Piezo-Lautsprecher und einer Batterie, welche bis zu 8 Stunden durchhalten soll.

Der ArduBoy auf Kickstarter

Der ArduBoy auf Kickstarter

Das besondere an dem Arduboy ist das auf einem Arduino basiert und vollständig programmierbar ist. Der Arduboy kann für $ 39 bezogen werden, mit dem Versand nach Deutschland sind allerdings $ 54 zu berappen. Neben der offiziellen Webseite, gibt es weitere Informationen auf der Kickstarter Webseite.

Wer auf der Suche nach einer grafischen Entwicklungsumgebung für den Arduino ist, der solle sich einmal Minibloq anschauen. Das ganze ist dabei für Einsteiger geeignet da die „Programmierung“ sehr grafisch abläuft. Das kann man sich auch an den Beispielen anschauen. Die Software selbst ist im Moment für Windows und Linux verfügbar und steht unter der RobotGroup-Multiplo Pacifist License (RMPL), welche unter http://multiplo.com.ar/soft/Mbq/Minibloq.Lic.v1.0.en.pdf eingesehen werden kann. Minibloq selbst findet man auf der offiziellen Seite unter http://blog.minibloq.org/.

Ein Elektomotor kann sich vorwärts und rückwärts drehen. Erreicht wird dies indem man ihn einfach umpolt. Problematisch wird das ganze wenn man einen Motor ansteuern möchte z.B. über einen Arduino. Da kann man das ganze natürlich nicht einfach per Hand umpolen. Also muss eine Schaltung her. Diese Schaltung hört auf den Namen Vierquadrantensteller und sieht so aus:

Mit dieser Schaltung ist es möglich den Motor zu beschleunigen und ihn wieder zu bremsen. Das ganze funktioniert dabei sowohl vorwärts als auch rückwärts. Wer das ganze nicht von Hand nachbauen möchte, der kann sich auch ICs besorgen welche diese Schaltung bereits enthalten.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Vierquadrantensteller
http://www.elektronik-kompendium.de/sites/slt/0208031.htm
http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung

Wecker gibt es viele, teils auch mit ausgefallendem Design, aber die Defuseable Clock ist mal was neues:

Der Wecker scheint dabei auf einem Arduino aufzubauen. Natürlich kann man ihn morgens stilecht entschärfen muss dann allerdings die Kabel austauschen. Der Nachteil an diesem Wecker ist allerdings die Tatsache das er sich für Flugreisen nicht eignet 😉

Weitere Informationen gibt es unter:
http://nootropicdesign.com/projectlab/2011/09/05/defusable-clock/

Für ein kleines Arduino Projekt versuche ich gerade ein paar Räder an einem Motor zu befestigen. Dies ist allerdings schwieriger als zunächst angenommen. Das Problem ist das die Bohrungen im Rad sich meist von dem Durchmesser der Motorwelle unterscheiden. Nachdem ich nicht nur einen Baumarkt/Elektronikmarkt auf den Kopf gestellt habe, war ich der Lösung nicht wirklich näher.

Bis ich auf die Webseite http://www.rn-wissen.de/index.php/R%C3%A4der_an_der_Motorwelle_befestigen_%28Welle/Nabe-Verbindung%29 gestossen bin. Auf dieser Seite welche Teil eines grösseren Wikis ist geht geht es um die Lösung ebend dieses Befestigungsproblemes. Die Wiki bietet neben dieser Seite noch viele andere interessante Dinge, welche sich der geneigte Bastler ruhig anschauen sollte.

Auf der Suche nach ein paar bestimmten Informationen über den Arduino bin ich über die Webseite http://www.ladyada.net gestolpert. Dort gibt es eine Menge Informationen über den Arduino, bestimmte Shields und eine ganze Menge andere Hardware. Die Shields welche auf der Seite vorgestellt werden können dabei auf http://www.adafruit.com auch käuflich erworben werden. Sehr interessant das ganze 🙂

Bei MIDI handelt es sich um ein gut über 20 Jahre altes Protokoll zur Kommunikation, mit welchem sich Musikinstrumente, Synthesizer et cetera untereinander verständigen können. MIDI Signale kann man dabei auch mit dem Arduino erzeugen. Damit man das Rad nicht neu erfinden muss, gibt es eine Bibliothek welche auf den Namen MidiDuino hört und unter http://ruinwesen.com/mididuino zu finden ist. Mit dieser kann man MIDI Signale erzeugen als auch interpretieren. Sie abstrahiert dabei die serielle Kommunikation und implementiert einen MIDI Stack.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/MIDI

Bei einem Servo handelt es sich um einen Motor welcher sich genau steuern lässt z.B. auf eine exakte Position. Die Ansteuerungselektronik ist bei einem Servo gleich eingebaut. Servos sind im übrigen im Normalfall nicht zum Durchlauf gedacht, da eine mechanische Sperre dies verhindert. Neben dem Servo soll es auch noch zwei LEDs (eine rote und eine grüne) zur Anzeige des Zustandes sowie einen Taster zum an- und ausschalten geben.

Zuerst wird der Servo mit dem Board verbunden. Der Servo hat dabei drei Anschlüsse, GND (schwarz bzw. braun), VDD (rot) sowie SIGNAL (Orange). GND wird dabei mit Ground verbunden, VDD mit der 5 Volt Buchse des Arduino und Signal mit PIN 9 des Boards. Der Taster wird mit PIN 4 verbunden, die beiden LEDs mit PIN 2 und 3. Damit wäre die Verkabelung erledigt.

Nun geht es an den Quellcode. Dieser soll den Servo ansteuern, die Lichter leuchten lassen, sowie den Taster abfragen. Interessant ist die Zeile:

digitalWrite(pushButton, HIGH); //Pull up Widerstand aktivieren

In dieser Zeile wird der interne Pull Up Widerstand des Arduino für PIN 4 aktiviert. Andernfalls müsste ein hochohmiger (1000 – 100000 Ohm) Widerstand auf dem Board im Tasterschaltkreis verbaut werden, da es sonst vorkommen kann das der Taster nicht reagiert.

#include <Servo.h> 

Servo servo;

int pushButton=4;

int ledRed=3;
int ledGreen=2;

void setup()
{
 pinMode(pushButton, INPUT);

 pinMode(ledRed, OUTPUT);
 pinMode(ledGreen, OUTPUT);

 servo.attach(9);

 digitalWrite(pushButton, HIGH); //Pull up Widerstand aktivieren
} 

void loop()
{
 int pressed=digitalRead(pushButton);

 digitalWrite(ledGreen, LOW);
 digitalWrite(ledRed, HIGH);

 if(pressed==LOW)
 {
 digitalWrite(ledGreen, HIGH);
 digitalWrite(ledRed, LOW);

 servo.write(360);
 delay(2000);
 servo.write(0);
 }

 delay(15);
}

In Action sieht das ganze dann so aus:

Der Sourcecode sowie der Schaltplan können sich natürlich auch heruntergeladen werden.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Servo
http://www.freeduino.de/books/servos-f%C3%BCr-durchlauf-umbauen
http://de.wikipedia.org/wiki/Pull_up