Arduino-Bastelei: Weihnachtsbaumbeleuchtung per WLAN steuern

Ich habe wieder ein bisschen mit Elektronik gebastelt. Allerdings war das aktuelle „Projekt“ nicht wirklich echt, es ging nicht um das Produkt, sondern nur um ein bisschen Spaß. Für die aktuelle Themenreihe der CityChurch sollten ein paar Videos gedreht werden, und die Videoleute fragten mich an, ob ich ich dafür nicht irgend eine Elektronik-Bastelei machen könnte.

Die Idee war dann, die Weihnachtsbaumbeleuchtung per WLAN vom Handy aus zu steuern. Einfach so zum Spaß. Ich hatte mir gerade das Wemos D1 mini etwas genauer angesehen und sagte zu. Sollte kein zu großes Problem sein, damit per WLAN ein Relais zu steuern, welches die Beleuchtung dann schaltet. Das Problem war dann aber, dass ich aufgrund der letzten Bastelei kein Relais mehr hatte und pfuschen improvisieren musste: Statt des Relais habe ich ein Servo verwendet, mit dem eine Art motorisierter Schalter gebaut wurde. Also auch eine Art Relais, nur nicht mit Magnetspule, sondern mit Servomotor. Dem Elektriker meines Vertrauens sei gesagt, dass die Konstruktion längst wieder zerlegt wurde und nie für den produktiven Einsatz gedacht war. Der Vollständigkeit halber: Don’t try this at home!

Hier also das Video. Schnitt und so ist nicht von mir, nur die Bastelei und ein bisschen Schauspielerei (nicht gerade meine Kernkompetenz).

Fazit: Das Wemos D1 mini kann ich nur empfehlen. Im Wesentlichen Arduino-kompatibel, man kann es mit der Arduino-IDE programmieren (eine simple Anleitung zur Installation des Boards findet man hier), WLAN ist an Bord, außerdem ein einfach zu bedienender Webserver. Die erste Demo (Steuerung einer LED per WLAN) war mit guter Anleitung in unter 15 Minuten auf dem Schreibtisch lauffähig und die Abwandlung zur Servo-Steuerung ein Klacks. Außerdem ist ein Klon des Boards mit 6,50€ wirklich erschwinglich.

Vom Prozedere her läuft das ganze so: Code schreiben, compilieren und auf’s Board schieben, aus dem seriellen Monitor der Arduino-IDE die IP des Boards holen, mit dem Browser die IP aufrufen und darüber das Board steuern. Wenn man das ganze (wie im Video gezeigt) etwas eleganter per Smartphone machen will empfiehlt sich eine App wie z.B. HTTP Request Widget, die für Android Widgets erstellen kann, die dann HTTP-Requests absetzen und somit die Steuerung ohne den „Umweg“ über den Browser übernehmen.

Der Vollständigkeit halber hier noch mein Code für das Projekt:


//http://www.esp8266learning.com/wemos-webserver-example.php

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <Servo.h>

const char* ssid = "deine WLAN-SSID";
const char* password = "dein WLAN-Passwort";
 
int servoPin = D4;
Servo Servo1;

WiFiServer server(80);






 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  Servo1.attach(servoPin);
  Servo1.write(0);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected!");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL : ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

 
void loop() {
 
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/servo=on") != -1) {
    //digitalWrite(servoPin, HIGH);
    Servo1.write(90);
    value = HIGH;
  } 
  if (request.indexOf("/servo=off") != -1){
    //digitalWrite(servoPin, LOW);
    Servo1.write(0);
    value = LOW;
  }
 
 
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Servo position is now: ");
 
  if(value == HIGH) {
    client.print("ON");  
  } else {
    client.print("OFF");
  }
  client.println("

");
  if(value == HIGH) {
    client.println("Click <a href=\"/servo=off\">to turn the servo in OFF position</a>
");
  } else {
    client.println("Click <a href=\"/servo=on\">to turn the servo in ON position</a>
");
  }
  
  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disconnected");
  Serial.println("");
 
}


Arduino-Bastelei: Backup-Festplatte einschalten (lassen)

Arduino Pro Micro mit Relais

Nach meiner ersten und für den Anfang etwas aufwendigen Arduino-Bastelei war neulich Bedarf für ein zweites, diesmal sehr überschaubares Projekt: Das Einschalten einer USB-Backupfestplatte genau dann, wenn sie auch gebraucht wird.

Der Hintergrund ist der: Bei einem Rechner wird mit dem sehr empfehlenswerten Tool HardlinkBackup beim Herunterfahren des Rechners ein „inkrementelles“ Backup erstellt, und zwar mittels Hardlinks. Kurz gesagt macht man ein Vollbackup mit dem Platzbedarf eines inkrementellen Backups. Das aber nur am Rande, wäre ein Thema für sich. Das Backup wird jedenfalls automatisch gestartet, sobald Windows heruntergefahren wird. An dieser Stelle sollte die USB-Festplatte, auf die gesichert wird, dann auch verfügbar sein und nicht manuell eingeschaltet werden müssen. Dauerhaft laufen soll sie natürlich auch nicht, wenn der Rechner läuft. Das ist erstens nicht gut für die Lebensdauer der Platte, und zweitens nicht gerade sicher im Hinblick auf diverse Schadsoftware etc. Eine Möglichkeit wäre es, die Platte per Software erst einzubinden, wenn sie gebraucht wird, ich wollte sie aber hardwareseitig wirklich komplett ausgeschaltet haben.

Arduino Pro Micro

Und hier kommt wieder der kleine und günstige Arduino Pro Micro ins Spiel. Der kann – wie so ziemlich jeder andere Arduino auch – nämlich erstens per USB serielle Kommandos empfangen und verarbeiten, und zweitens dadurch getriggert dann z.B. über ein Relais die Stromversorgung der USB-Platte anschalten. Die Kosten für den Arduino plus das Relais liegen zusammen bei ca. 10€.

Und genau so wurde das auch umgesetzt. Mittels eines kleinen Tools namens SerialSend schickt der Rechner eine Kommando an die entsprechende USB-Schnittstelle, an der der Arduino hängt:


SerialSend.exe /baudrate 9600 /devnum 18 SwitchRelayON

Auf dem Arduino läuft dann folgender Sketch, der dieses Kommando empfängt und dann das an ihm an Pin 15 angeschlossene Relais schaltet:


// Define Relay Pin:
#define PinRelay 15

// Define string for relay status:
String SerialRead     = "SwitchRelayOFF";
String SerialReadOld  = "SwitchRelayOFF";

void setup() {
  
  // Define Pin mode:
  pinMode(PinRelay, OUTPUT);
  
  // Switch the relay OFF:
  digitalWrite(PinRelay, HIGH);

  // Turn serial monitor on:
  Serial.begin(9600);
  
}

void loop() {

  // Read data from serial port:
  if(Serial.available()>0) {
    SerialRead = Serial.readString();
  }

  // Only send command if status changed:
  if (SerialRead != SerialReadOld) {
    // Switch Relay:
    if (SerialRead == "SwitchRelayON") {
      digitalWrite(PinRelay, LOW);
      Serial.println("relay switched ON");
    } else if (SerialRead == "SwitchRelayOFF") {
      digitalWrite(PinRelay, HIGH);
      Serial.println("relay switched OFF");
    } 
  }

  SerialReadOld = SerialRead;
  
//  delay(1000);
  
}


Das SerialSend-Kommando wurde dann noch in das .bat-Skript integriert, welches sowieso schon beim Herunterfahren des Rechners das Backup angefahren hat:


@echo off


REM Platte über Arduino starten:
"C:\Users\Blablabla\Documents\backup-Sachen\SerialSend.exe" /baudrate 9600 /devnum 18 SwitchRelayON
timeout /T 20 > nul


REM Abbruch, falls Festplatte nicht erreichbar
if not exist "B:\" goto NoUSB:

REM Möglichkeit bieten, um Backup noch manuell abzubrechen:
Choice /T 15 /D J /M "Das Backup wird in 15 Sekunden automatisch gestartet. 'N' bricht ab... "
If Errorlevel 2 goto Abbruch:
If Errorlevel 1 goto StarteBackup:

REM Starte Backup
:StarteBackup
echo.
echo Starte das Backup, bitte warten...
cd "C:\Users\Blablabla\Documents\backup-Sachen\"
REM call "USB-Backup.hbd"
"C:\Program Files\Lupinho.Net\HardlinkBackup\HardlinkBackup.exe" -execute USB-Backup.hbd
echo Backup fertig!
Goto eof:

REM Ausgabe und Abbruch, falls Festplatte nicht erreichbar
:NoUSB
echo .
echo USB-Festplatte nicht gefunden!
Goto eof:

REM Abbruch
:Abbruch
echo .
echo Dann eben nicht...
Goto eof:

REM Sprungmarke, um Batch-Datei von jeder Stelle aus zu beenden:
:eof

Fast vergessen: Durch das Relais muss natürlich noch die Stromversorgung der USB-Platte laufen. Am besten hinter dem Netzteil einfach das Kabel aufgetrennt und eine der beiden Kabel durchgetrennt und durhc das Relais schleifen. In diesem Fall habe ich parallel noch einen ganz normalen Kippschalter gehängt, damit man die Platte auch ohne den Arduino per Hand einschalten kann, wenn man das mal möchte.

Das war’s dann auch schon. Fährt man jetzt den Rechner herunter hört man das kurze Klacken des Ralais, dann das Anlaufen der USB-Platte, anschließend startet das Backup und schließlich freut sich der Benutzer.

„Und leben heißt – auch – Spaß haben.“

Gestern musste ich Böhmermann zitieren, heute haut ein andere einen Spruch raus, den ich so von ihm nicht unbedingt erwartet hätte: Der gute alte Helge Schneider. Ich bin seit Jahrzehnten bekennender Helge-Fan. Von keinem anderen Künstler habe ich so viele Konzerte besucht wie von ihm. Zum Start ins Jahr 2017 hielt er heute auf Facebook eine kleine Neujahrsansprache:

Auf jeden Fall komplett anschauen. Ist ja auch nicht lang. Unter anderem sagt er:

Gott der Herr hat den Menschen nicht geschaffen, dass er sich immer ärgert und auch andere ärgert. Gott der Herr hat uns geschaffen und hat auch seinen Sohn Jesus glaub ich geschickt, damit wir leben! Und leben heißt – auch – Spaß haben.

In diesem Sinn wünsche ich uns allen ein lebendiges Jahr 2017!

Hanlons Rasiermesser

Rasieren ist ja nicht so mein Ding, ich lasse lieber zuerst wachsen und dann ab und an rasieren. Vielleicht war mir deshalb „Hanlons Rasiermesser“ bisher unbekannt. Es geht bei Hanlon allerdings nicht um ein echtes Rasiermesser, sondern eher um eine Lebensweisheit, mit deren Hilfe man die Wahrscheinlichkeit verschiedener Erklärungsmuster für menschliches Fehlverhalten abschätzen. Der im Englischen unter „Hanlon’s Razor“ bekannte Satz ist ganz schlicht:

Schreibe nicht der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.

Oder in der Kurzform:

Geh nicht von Böswilligkeit aus, wenn Dummheit genügt.

Vielleicht sollten wir uns Hanlons Rasiermesser im neuen Jahr ab und zu zu Herzen nehmen und lieber auf der Seite der Naivität vom Pferd fallen als auf der des Misstrauens.

(Wenn wir schon dabei sind: Es gibt noch andere „Rasiermesser“, z.B. das (mir) bekanntere „Ockhams Rasiermesser„. Es besagt (etwas verkürzt), dass von mehreren Erklärungsmöglichkeiten die mit der geringsten Komplexität am wahrscheinlichsten ist. Dass man auch damit nicht immer zur richtigen Einschätzung kommt zeigt mindestens jeder zweite Tatort.)

Die Weihnachtsbotschaft (von Jan Böhmermann)

Fest & Flauschig, die Spotify(*)-Radioshow von Jan Böhmermann und Olli Schulz, höre ich ganz gern so neben bei, versüßt sie einem doch z.B. ungeliebte Hausarbeit. Am 19. Dezember veranstalteten die beiden in Berlin im Zirkus Roncalli einen Weihnachtsshow, die sie dann aber wegen des LKW-Anschlags spontan abbrachen. In einer ungeplanten Podcast-Folge sprachen sie jetzt nochmal über die Show, die Gründe für den Abbruch und darüber, wie sie persönlich diese Stunden erlebt haben. Und auch darüber, wie man dieses Ereignis oder generell solche Ereignisse einordnen kann. Gestern beim Hören wurde ich an einer Stelle stutzig: Jan Böhmermann dachte laut (und das viel ihm hier anfangs hörbar schwer) darüber nach, was eine sinnvolle Antwort auf Ereignisse dieser Art sein könnte. Ich zitiere aus der „Notsendung“ (ab Minute 50:40):

An dem Abend, wenn man so an (die Grenzen seiner) intellektuellen Möglichkeiten stößt, und selber nicht mehr weiter weiß, gibt es so zwei Richtungen, in die man, glaube ich, in die die Leute dann tendieren: Entweder wird man wütend und geht dann irgendwie auf Angriffsmodus, oder man wird irgendwie so ganz still und geht dann irgendwie so in sich rein und versucht das dann irgendwie auf die nette Art. Und auch so abgedroschen das klingt, und so oft das schon so hippiesk mit irgendwelchen langhaarigen Typen verbunden ist, aber es ist tatsächlich letztlich – es ist echt schwierig, das auszusprechen – aber es ist eigentlich so: Liebe ist eigentlich das einzige, was funktioniert. Und wenn man sich in solchen Situationen da reinlehnt, entlarvt man auch all diejenigen, die Hass wollen. Also gegen Liebe können selbst Nazis nichts ausrichten. Und das macht die vor allen Dingen wütend. Und wer wütend wird, wenn Leute anfangen, nett zueinander zu sein, der kann kein guter Mensch sein, denke ich dann immer. Wer wütend wird, wenn Leute zusammen stehen, und versuchen, zusammen Dinge zu regeln, obwohl sie unterschiedlich sind, wen das wütend macht, der soll dahin gehen wo der Pfeffer wächst. […Wünscht sich ein Lied…] Es ist genau das. Letztlich auch – fröhliche Weihnachten – die Weihnachtsbotschaft. Was sind das eigentlich für komische Typen, die irgendwie das christliche Abendland retten wollen, die diese – das sag ich jetzt als Agnostiker – die diese Grundbotschaft vom Christentum nicht verstanden haben. Dass es irgendwie darum geht, es zusammen irgendwie nett hinzubekommen. Das war übrigens der große USP aller Religionen, warum sich das Ding durchgesetzt hat, weil alle anderen auf Ausgrenzung waren, und die Christen gesagt haben: Nene, die Idee ist, dass wir das mit Liebe zusammen hinbekommen. Deswegen gibt’s diese Religion seit zweieinhalbtausend Jahren. Deswegen feiern auch Leute, die nicht an Gott glauben, gerne Weihnachten, weil die Botschaft stimmt. So.

Ein gutes Wort zum Jahresende.

 

(*) Technischer Kommentar: Man muss „Fest & Flauschig“ nicht zwangsläufig über Spotify hören, sondern kann das dank dieser Seite hier auch mit dem Podcatcher seiner Wahl tun.

Arduino-Bastelei: Pedal zum Bass-Üben

Eines vorneweg: Auch wenn ich gern an allem möglichen herumbastle, bei Elektronik hört bei mir der Spaß schnell auf. Ich tausche schon mal defekte Kondensatoren in Netzteilen oder mache aus zwei defekten Kaffeemaschinen eine funktionierende, aber da müssen die defekten Stellen schon durch Rauch oder Feuer auf sich aufmerksam machen. Das große Verständnis von Elektronik fehlt mir. Etwas neidisch beobachtete ich bisher die Bastlerszene, die mit diversen günstigen Bauelementen allen möglichen Kram zusammenzaubert. Und immer wieder hörte ich, dass das alles mittlerweile gar nicht mehr schwer sei. Jeder könne das. Dabei viel immer wieder das Stichwort Arduino.

Im Sommer dachte ich, es wird auch für mich Zeit, mich da mal ein bisschen einzuarbeiten. Also habe ich einen bunten Strauß an Arduinoboards, Sensoren und Aktoren bestellt und zu basteln angefangen: Einfach mal ganz simpel einen Schalter an ein Arduinoboard und damit ein Schrittmotor steuern. Oder mit einem Näherungssensor ein Servo. Oder einfach nur eine LED blinken lassen (ein Unterfangen, an dem ich mit einer analogen Schaltung schnell scheitern würde). Mein Fazit ist: Wer googlen kann, der kann auch Arduino.

Bei diesen Spielereien habe ich irgendwann gelesen, dass diverse Arduinoboards, die ja einfach über die USB-Schnittstelle programmiert werden können, am Rechner auch gleichzeitig als Human Interface Device agieren können, sich also wie eine Maus oder eine Tastatur verhalten. Es ist also relativ leicht, sie als externes Eingabegerät für den Rechner zu verwenden. Dazu sind auch keine speziellen Treiber am Rechner nötig. Board an den USB-Anschluss und fertig.

Die Idee

Damit war die Idee geboren: Beim Bass-Üben stört es mich immer wieder, das Instrument aus der Hand legen zu müssen, um in Spotify nochmal zum Songanfang zu springen, in Youtube-Tutorials vor- oder zurückzuspulen, eine Webseite mit Chords weiterzuscrollen oder einfach nur die Lautstärke des PCs anzupassen. Ich übe in der Regel mit Kopfhörer an einem kleinen Mischpult, an dem auch der Rechner hängt, der mich mit Musik und Tutorials versorgt. Was es braucht ist eine Möglichkeit, diverse Funktionen des Rechners mit den Füßen zu steuern. Sollte mit einem kleinen Arduino machbar sein. Weiterlesen

Digitale Sonnenuhr

„Digitale Sonnenuhr“, das klingt widersprüchlich. „Digital“ meint hier allerdings auch nicht, dass die Uhr digital betrieben wird, es ist eine normale, analoge Sonnenuhr. Aber sie zeigt die Zeit digital an:


Abgefahrene Sache. Und erst einmal ziemlich rätselhaft, wie man das Ding eigentlich konzipieren kann. Das erklärt aber der Macher Mojoptix in einem etwas längeren Video:

Bauen kann man das Teil „einfach“ mit einem guten 3D-Drucker, die Baupläne findet man im Netz. Wer keinen 3D-Drucker bei der Hand hat kann das Teil auch kaufen. Einen anderen Weg, so ein Teil zu bauen, sieht der Macher übrigens nicht, seiner Meinung nach ist das nur mit einem 3D-Druck machbar.

 

Das Rad, neu erfunden (2)

Das Rad muss nicht ständig neu erfunden werden. Man sagt das so und meint es metaphorisch. Umso faszinierender, wenn sich jemand daran macht, das trotzdem im wörtlichen Sinne zu tun. Ich habe auf diesem Kanal schon einmal neue Ansätze zum Thema „Rad“ gezeigt, aber das heutige geht doch in eine völlig andere Richtung. Und auch das ist nicht metaphorisch gemeint:

Mehr als ein Proof of Concept ist das noch nicht, ich würde gerne mal die Kombination zwischen diesem Antrieb und dem normalen Fahren sehen. Gerne auch bei höheren Geschwindigkeiten z.B. beim Spurwechsel oder so. Aber auch so schon mal eine grandiose Idee.

Es läuft nicht rund

Seit 1990 baut der Niederländer Theo Jansen seine Strandbeest-Ungetüme. Gebilde aus Plastikrohren, denen der Wind Leben einhaucht. Jansen nennt sie „Lebewesen“, was an der Definition von „Leben“ zwar grob vorbeigeht, aber die Illusion ist schon nicht schlecht. Dieses Video hier gibt einen ganz guten Überblick über seine Kreaturen:

Jetzt hat Jansen es aber übertrieben. Er hat seine – zugegebenermaßen faszinierenden – Laufapparaturen mit einem Fahrrad gekreuzt. Zusammen mit dem kalifornischen Bastler-Kollektiv Carv wurde der vierfüßigen Laufmechanismus für das Fahrrad kreiert und eingebaut. Gefahren wird es trotzdem wie ein normales Fahrrad:

Richtig rund läuft es noch nicht.

Polygoner Kusskaffee

Kaffee ist nicht unbedingt meine größte Leidenschaft, und mit diesen Coffee to go-Bechern hatte ich bisher schon mal gar nichts zu tun. Haben so etwas säuglinghaftes, diese Schnabelbecher. Wenn man die des Designers Jang Woo-Seok aber sieht bekommt man fast ein bisschen Lust auf so einen Coffee to go. Vor allem diese eckigen Becher gefallen doch sehr:

Wie nennt man eigentlich diese Art von Design? Polygonal Design?