English English preferred? This way, please.
Centstück, Stack aus 30 Aufnahmen
Centstück, Stack aus 30 Aufnahmen

Eins meiner großen — wenngleich in den letzten Jahren sehr vernachlässigten — Hobbies ist die Fotografie. Mich hat immer schon die Technik gereizt, und die Möglichkeit da Grenzen auszuloten. Beispiele dafür sind der Hochgeschwindigkeits-Blitzauslöser den ich vor fast 20 Jahren gebaut habe (damals noch ohne Mikrocontroller (!)), oder mein Labor in dem ich den guten alten Kodak T-Max P 3200 weit über sein Limit gepusht habe.

Ein Thema das mich immer fasziniert hat ist Makrofotografie. Bei meiner ersten Spiegelreflexkamera — einem Erbstück von Opa, irgendwas voll-manuelles von Revueflex — hatte ich schon einen Satz Zwischenringe gefunden. Einfache, mit M42-Anschluss. Die haben mich angefixt. Nach dem Einstieg in die EOS-Welt habe ich dann einen Adapter gekauft um die Sachen auch an der neueren Kamera zu benutzen, irgendwann auf einer Fotobörse dann auch ein Balgengerät. Und noch eins. :-)

Endgegner Tiefenschärfe

Ein Problem beim Anfertigen von Makrofotos ist, unabhängig davon mit welcher Technik man in die Extreme geht, die fehlende Tiefenschärfe. Nicht selten hat man es da mit Millimetern oder auch nur Bruchteilen davon zu tun. „Zu meiner Zeit“, also in der analogen Fotowelt, musste man sich weitestgehend damit begnügen. Heutzutage wird aber digital geschossen. So ist irgendwann jemand auf die Idee des Focus Stacking gekommen: man macht nicht nur ein Bild, sondern einen ganzen Stapel von Bildern. Jeweils mit dem Fokus in einer anderen Ebene. Diesen Stapel lädt man dann in eine Bildbearbeitung und bastelt so lange daran herum bis man nur noch die scharf abgebildeten Teile hat — und somit ein Bild mit einer deutlich verlängerten Tiefenschärfe.

Natürlich will man dafür nicht einen halben Tag in Gimp rumklicken, deshalb haben findige Entwickler Programme geschrieben die den Part übernehmen. Kommerzielle gibt es natürlich, ich habe mich aber an Open Source gehalten.

Stapelfotografie per Arduino

PhotoStepper
PhotoStepper

Was ich mir gebaut habe ist nicht neu. Man kann solche Geräte von verschiedenen Herstellern kaufen, es gibt auch eine ganze Reihe von gut dokumentierten Bastelprojekten. Teilweise sogar mit praktisch der gleichen Hardware die ich benutzt habe. Warum ich das trotzdem selbst gemacht habe? Einfach weil ich wissen wollte ob ich es kann. :-)

Ich habe also einen alten Arduino Uno aus der Bastelkiste gefischt, dazu ein LCD-Keypad-Shield das ich mal aufs Geratewohl gekauft habe. Mit einem Schrittmotortreiber (A4988) und einem Motor den ich hier noch von einem anderen Projekt hatte konnte ich dann schon ausprobieren wie sowas zusammenspielt. Vermutlich hätte ich den Arduino auch direkt an den Kabelauslöser-Anschluss meiner Kamera anschliessen können, das war mir aber in Anbetracht der 12V Versorgungsspannung zu aufregend. Also habe ich das durch zwei Optokoppler (PC817) gemacht.

Linearantrieb
Linearantrieb

Die prototypischen Tests haben gut funktioniert, also habe ich ein Gehäuse gedruckt und mich nach passender Mechanik umgesehen. Einen Linearantrieb samt Motor konnte ich praktisch als Schnäppchen ergattern. Dazu eine Schiene für die Befestigung auf dem Stativ und eine Klemmplatte um die Kamera auf dem Schlitten anzubringen. Da ich eher Schreiner bin als Mechaniker sind die Verbindungen zwischen den Teilen rustikal in Eiche gehalten. :-)

Die Teile sind genau wie mein Stativ Arca-Swiss kompatibel (noch so ein Begriff den es „zu meiner Zeit“ noch nicht gab), so kann die Grundplatte an der Kamera bleiben und alles ist schnell und stabil zusammengesetzt.

Fotosession

Aufnahme-Setup, noch ohne den Blitz
Aufnahme-Setup, noch ohne den Blitz

Mein erstes Motiv — ein ziemlich schmutziges Centstück — war nicht originell, und der Aufbau halbwegs krude. Kamera mit Balgen und einer 58mm-Optik aus dem Nachlass meines Opas auf das Gerät, per Funk einen diffusen Blitz auf das „Model“.

Ich habe erst den Bildausschnitt eingestellt und grob auf die Münze scharfgestellt. Dann Kamera und Blitz manuell eingestellt und die Belichtung geregelt. Bis hierher alles wie anno dazumal.

Dann kam der Neubau zum Zug: ich habe die Kamera ein Stück vorgefahren, so dass die Schärfeebene deutlich hinter dem Geldstück war. Dann am Gerät eingestellt dass ich 30 Bilder schießen will, jeweils im Abstand von 1mm. Somit habe ich 3cm abgedeckt — genug für die Münze, aber wenn man sich die fertige Aufnahme ansieht nicht genug um bis an den oberen Bildrand scharf zu bleiben. Schade, aber ist ja auch nur ein Test.

Centstück, 30 Fokusebenen
Centstück, 30 Fokusebenen

Eine knappe Minute — und einen Freudentanz hinter der Kamera — später sind 30 Bilder im Kasten.

Die ziehe ich mir auf den Computer und bearbeite sie mit zwei Tools: align_image_stack aus dem Hugin-Paket stellt noch einmal sicher dass alle Bilder gleich ausgerichtet sind, außerdem sorgt es dafür dass die Größen angepasst werden. Die Kamera fährt währen den Aufnahmen vom Motiv weg, dementsprechend wird selbiges immer kleiner. Das wäre Gift für das folgende Stacking.

Das übernimmt dann enfuse aus dem Enblend-Projekt. Und das erstaunlich gut, wie ich finde. Nicht perfekt: oben im Bild sind noch ein paar Artefakte von der Verarbeitung. Aber wirklich erstaunlich gut. Insbesondere für einen ersten Versuch.

„Ich brauche mehr Details…“

Ich habe das komplette Projekt, samt der Quelltexte und einer Beschreibung der Elektronik, veröffentlicht.

Hier liegen alle Infos.

Wer mag kann sich alles im Detail ansehen, für Verbesserungen bin ich immer offen.

Und jetzt?

Ehrlich gesagt weiß ich noch nicht was ich mit dem Ding fotografieren sollte. Ideen habe ich ein paar, aber mir ging es hauptsächlich darum sowas zu bauen. Erledigt. Abgehakt. :-)

Dass es sich hier nicht um eine bahnbrechende Erfindung handelt ist mir auch klar. Ich weiß dass es einige moderne Kameras gibt die eine Funktion zum Focus Stacking schon eingebaut haben. Wer sowas unbedingt braucht wird wahrscheinlich zu so einem Modell greifen. Mein „Oldie“ von 2009 kann das nur mit diesem Hilfsmittel.

Da ich mit dem Gerät ganz allgemein nur einen Schrittmotor und die Kamera steuere kann ich mir vorstellen das mit einem Drehteller zu betreiben. So könnte ich Dinge kontrolliert von allen Seiten ablichten. Wofür weiß ich noch nicht, aber vielleicht entwickelt sich das ja nochmal irgendwann in Richtung Photogrammetrie, also vielleicht ein Hilfsmittel zum Erstellen von 3D-Modellen. Mal sehen…

Es sei nur kurz darauf hingewiesen: in der aktuellen c’t („Retro-Ausgabe 2018“, 27/2018 vom 23.10.) wird ein Umbausatz beschrieben mit dem man einer alten IBM Model M Tastatur Bluetooth beibringen kann. Das hatte ich auch immer mal vor, aber ich glaube das kann ich damit zu den Akten legen.

Links zum Thema findet man bei der Zeitung, der Umbau kostet am Ende rund 120 Euro. Soviel kann man für eine anständige Tastataur ausgeben, finde ich. Ich habe noch ein paar Model M auf Lager die nicht meine Dulcimer-Behandlung erfahren haben, unter anderem eine mit 122 Tasten… mal sehen wie lange die original bleibt… :-D

Dritte bis sechste Hand

Dritte bis sechste Hand

Wo eine Lötstation ist muss man meist nicht lange nach einer „dritten Hand“ suchen. Bis letztens war das bei mir das Modell das man auch in dem Wikipedia-Artikel zum Thema findet, das ist vermutlich der Standard — und leider Käse. Glücklich war ich noch nie damit. Und eine kurze Marktforschung zeigt mir leider auch keine günstige Alternative.

Also basteln. Natürlich. :-)

Ich hatte schon eine ganz brauchbare Lupen-Leuchte. Eigentlich sehe ich gut, aber bei SMD kann die tatsächlich helfen. Und durch Zufall — ich war auf der Suche nach was ganz anderem — habe ich Leitungen für Kühlflüssigkeit gefunden. Man suche in der Online-Auktionsplattform seiner Wahl nach „Coolant Pipe“. Dazu noch ein paar „Alligator Clips“ aus der gleichen Quelle. Für sechs Leitungen habe ich keine drei Euro bezahlt, zehn Krokodilklemmen gab es für einen Euro.

Die Leitungen sind wirklich stabil. Man kann sie in jede Form biegen, und die halten tatsächlich besser die Stellung als die Arme an meiner alten dritten Hand.

Also habe ich die orangefarbenen Enden („Düsen“) etwas aufgebohrt und mit Superkleber die Klemmen eingesetzt. Das ganze dann von hinten mit Heißkleber vergossen, hält prima. Zum Zusammenbauen musste ich die Teile etwas heiß machen, sonst hätte ich die Düsen nicht wieder an die Leitung bekommen. Für das andere Ende habe ich passende Löcher in den Sockel der Lampe gebohrt. Da ist nicht genug Material um ein Gewinde zu schneiden, also habe ich auch die Enden verklebt.

Gut beleuchtet und mit Durchblick

Gut beleuchtet und mit Durchblick

Das Ergebnis erfüllt exakt seinen Zweck: vier sehr frei positionierbare Klemmen, direkt unter einer guten Beleuchtung in die für Extremfälle sogar eine Lupe eingebaut ist.

Ich habe auch schon weiterführende Ideen gesehen: kleine Lüfter statt einer Krokodilklemme, um Lötdämpfe wegzublasen, spezielle Halterungen für Tastköpfe und einiges mehr. Aber für mich ist das so erstmal sehr nah an perfekt. Ich bin zufrieden. :-)

Dass man mit einem Mikrowellentrafo Hochspannung erzeugen kann ist klar. Dass man das benutzen kann um Holz zu verzieren ist mir neu, offenbar nennt man sowas Lichtenberg Maschine. Die Ergebnisse sehen interessant aus, mal sehen wann mir eine alte Mikrowelle auf den Basteltisch rutscht… :-)

Nur mal kurz angemerkt: Gestern vor zehn Jahren habe ich hier zum ersten Mal ein Elektronik-Projekt veröffentlicht. Den USB-LED-Fader (der hier übrigens bis vor etwa vier Jahren tatsächlich im Einsatz war).

Ich habe seitdem einiges gebastelt, und auch einiges veröffentlicht. Das einzig doofe ist, dass ich zu wenig Zeit habe meine Projekte auch dann noch zu pflegen wenn ich mich schon längst anderen Sachen zugewendet habe. Soweit möglich mache ich das zwar, aber ich möchte die Gelegenheit nutzen mich bei allen Leuten zu entschuldigen die sich die Mühe gemacht haben sich mit meinem Bastelkram auseinanderzusetzen, und deren Fragen ich nicht beantworten konnte. Sorry! :oops:

English English preferred? This way, please.

Grilltemperatur in Zabbix

Grilltemperatur in Zabbix

Leider ist dieses Projekt noch nicht ganz fertig, aber ich berichte trotzdem vom ersten Probelauf. Die Elektronik wollte noch nicht ganz so wie ich wollte, aber man sieht wohin die Reise geht.

Vor knapp zwei Jahren habe ich mal einen Prototypen eines Grillthermometers gebastelt. Den habe ich auch hier vorgestellt, das war wirklich ein ganz krudes Projekt. Seitdem habe ich viel dazu gelernt, und ich will sowas jetzt nochmal in ‚ernsthaft‘ bauen.

Da ich mit dem Ding die Temperatur mehrerer Fleischstücke messen kann war der Name natürlich klar: Multimeater! :-D

Die Hardware

Die Hardware

Basis wird wie bei den letzten Projekten ein ESP8266-Modul, programmiert mit der Arduino-Software. WLAN ist somit vorhanden. Darauf kommt eine Firmware die — ebenfalls wie in mehreren meiner Projekte — auf dem Homie-Framework basiert. Das liefert die Messwerte per MQTT an meinen Broker, von da geht es weiter zu Zabbix. Gemessen wird mit zwei Hochtemperatur-Sensoren die jeweils an einem MAX6675 hängen, sowie vier normalen Einstichthermometern an einem MCP3208.

Sechs Temperaturen? Ja. Der Plan ist, mit zwei Sensoren die Innenraumtemperatur des Grills aufzunehmen. Unter bestimmten Umständen kann die so hoch sein dass die normalen Fleischthermometer das nicht mitmachen würden, also gibt es dafür zwei extra Fühler, jeweils am Ende des Grillraumes (der ist beim Smoker eher länglich, da gibt es tatsächlich ein Temperaturgefälle). Und mit vier Fleischthermometern kann ich die Kerntemperatur von eben bis zu vier Stücken überwachen.

Zabbix ist eigentlich ein Monitoring-System, damit überwacht man eigentlich Serversysteme. Das funktioniert aber nicht nur in großen Rechenzentren, ich erfasse damit zu Hause auch einige… eher ungewöhnliche Daten. ;-)

In diesem Fall habe ich mir damit nur die Temperaturverlaufskurven angesehen, aber wenn ich wirklich mal über Nacht ein Pulled Pork grillen möchte kann Zabbix mich auch aus dem Bett klingeln wenn die Temperaturen nicht so aussehen wie sie sein sollten.

Wie gesagt: das Heute war nur ein Probelauf. Und wie das so ist sind dabei einige Sachen schief gegangen. Ich habe ein Problem mit den Messwerten von den Innenraum-Fühlern gehabt, die waren leider unbrauchbar. Da ich aber eh nur drei Stücke Fleisch hatte konnte ich den vierten Fühler für die Pit-Temperatur benutzen. Der Fühler im Schinkenbraten war erst doof gesteckt, daher sieht die blaue Kurve sehr merkwürdig aus. Und als Krönung hat es zwischenzeitlich heftig geregnet, da der Grill zur Zeit nicht überdacht ist hat es das auch nicht einfacher gemacht.

Alles in allem war das aber schon sehr vielversprechend. Ich bleibe dran, und sobald das Ding wirklich funktioniert stelle ich es natürlich hier vor, mit Schaltplan und Firmware.

Oh, und da die Fragen kommen werden: die technischen Probleme haben dem Grill-Ergebnis keinen Abbruch getan, es hat hervorragend geschmeckt. :-D

Mit Begeisterung habe ich gerade gelesen dass der Hersteller Espressif einen Nachfolger für den ESP8266 — mit dem ich ja auch schon einiges gemacht habe — vorgestellt hat: den ESP32.

Im Gegensatz Zusätzlich zum 8266 hat das Ding

  • Bluetooth
  • Ethernet-Fähigkeiten
  • GPIOs für Touch-Sensoren
  • einen Hall-Sensor
  • … und vieles mehr

Neue Ideen was man damit umsetzen kann kommen noch während des Lesens. Allein die Möglichkeit damit stromsparende Anwendungen bauen zu können (Stichwort: Batteriebetrieb) eröffnet einen ganzen Strauss neuer Möglichkeiten.

Ich kann es kaum abwarten dass das Ding verfügbar ist. Man kann nur hoffen dass der Preis ähnlich attraktiv wird wie beim Vorgänger…

Die Augen des Stromzählers

Die Augen des Stromzählers

Gestern habe ich mich mal intensiv mit meinem Stromzähler auseinander gesetzt. Das ist ein ziemlich neumodisches Gerät, ein Iskra MT175. Dieses Modell verfügt über eine Infrarotschnittstelle (nach DIN EN 62056-21) mit der die Zählerstände ausgelesen werden, und das muss natürlich ausprobiert werden.

Zu dem Zweck habe ich mir eine Hardware gebastelt die die Daten auslesen kann. Dazu später mehr, in einem anderen Beitrag. Mein Zähler überträgt etwa alle zwei Sekunden einen Datensatz. Automatisch, ohne dass ich ihn darum bitten müsste. Wenn ich den auslese erhalte ich einen formschönen Haufen Hex-Code, ähnlich diesem:

Wie man unschwer erkennt habe ich private Daten anonymisiert. Lacht nicht! :-D

Nachdem ich da längere Zeit mit verbracht habe weiß ich mittlerweile ziemlich genau was da steht. Und damit andere einen besseren Einstieg finden schreibe ich das mal hier auf.

Die Sprache nennt sich Smart Message Language (SML). Es gibt auch Zähler die die Daten in anderen Formaten, oder direkt im ASCII-Format ausgeben. SML ist aber ein Standard, und wird von vielen Herstellern genutzt. Wie das funktioniert kann man zum Beispiel in der Technischen Richtlinie BSI TR-03109-1 beim Bundesamt für Sicherheit in der Informationstechnik nachlesen. Wenn man das tut kann man den Datensatz da oben tatsächlich lesbar machen:

Die ersten vier Bytes sind einfach eine Markierung für den Anfang der Übertragung, in der zweiten Zeile steht dass wir Version 1 des Protokolls lesen.

Als nächstes müssen wir ein wichtiges Konzept verstehen. Das erste Byte der folgenden Nachricht lautet ’76‘. Man muss das als Nibbles sehen, und bei Hex-Zahlen bedeutet das Ziffer für Ziffer. Das erste Nibble ‚7‘ können wir auf Seite 42 (natürlich ;-) ) des oben verlinkten Dokumentes nachschlagen. Da steht eine Tabelle mit einer Zeile ‚X111LLLL‘. Jetzt matcht das binäre ‚X111‘ auf das erste Nibble, also haben wir es hier mit einer Liste zu tun. Das zweite Nibble gibt die Länge an, wir erwarten also eine Liste mit 6 Elementen.

Das erste Byte der folgenden Zeilen ist jeweils nach dem gleichen Schema aufgebaut. In der Regel steht das erste Nibble für den Datentypen, das zweite für die Länge — merkwürdigerweise bei einfachen Datentypen die Länge inclusive dieses Längen-Bytes. Datentyp 0 in Zeile 4 ist laut Seite 42 ein Octet String. Die 5 sagt dass dieser Teil einschliesslich der Längenangabe 5 Bytes umfasst, wir erwarten nach der Länge also noch vier Bytes. Auf Seite 17 des Dokumentes steht dass hier eine Transaktions-ID kommen muss.

Nachdem das Prinzip klar sein sollte werde ich nicht mehr alles haarklein entschlüsseln. Das heisst: ich habe schon. Aber an dieser Stelle überlasse ich das mal dem geneigten Leser. :-)

Man sieht durch die Einrückung ziemlich deutlich dass man sich den Datensatz gut als Liste von Listen vorstellen kann. Außen wird eine Liste mit sechs Elementen angekündigt (76), darin stehen ein Octet String (beginnt mit 0, Zeile 4), zwei Unsigned Integer (6, Zeilen 5 und 6), eine weitere Liste mit zwei Elementen (72, Zeile 7), ein weiterer Unsigned Integer (6, Zeile 16) mit der Prüfsumme und eine Markierung für das Ende der Nachricht (00, Zeile 17). Die Liste mit den zwei Elementen enthält wiederum einen Unsigned Integer (6, Zeile 8 ) und eine Liste mit sechs Elementen (76, Zeile 9). Die meisten dieser sechs Elemente sind Octet Strings die samt des Längen-Bytes eine Länge von 1 haben (01), also leere Strings. Ein String (Zeile 12) enthält eine File-ID, einer (Zeile 13) die Server-ID. Letztere kann man auch direkt auf dem Gerät lesen, die ist aufgedruckt. Beruhigend. :-)

Jetzt wird es ernst: eine weitere Liste mit sechs Elementen (76), die ersten Zeilen entsprechen dem Block oben:

Enthalten ist eine Liste mit zwei Elementen (72, Zeile 22). Der erste Octet String (Zeile 23) gibt den Typ der Nachricht an, es ist ein getListResponse. Der wiederum besteht auf sieben Elementen (77, Zeile 24). Interessant ist hier vielleicht das vierte Element (72, Zeile 28. An dieser Stelle soll die aktuelle Zeit stehen, und die kann auf verschiedene Weise angegeben werden. Erklärt ist das auf Seite 22 des BSI-Dokumentes, dementsprechend haben wir es hier durch die 01 in Zeile 29 mit einem secIndex zu tun. In Zeile 30 folgt dann der Wert. Die Zahl 0x018A4D15 entspricht in etwa der Zeit die das Gerät hier eingebaut ist, das wird also eine Art Betriebsstundenzähler sein.

Die Liste die in Zeile 31 startet ist das fünfte Element der Liste aus Zeile 24. Und hier kommt der wirklich spannende Teil: die Messdaten. Naja, und ein paar Meta-Daten. Erst das Kürzel des Herstellers Iskra (ASCII-Codes in Zeile 38), dann nochmal die bereits bekannte Server ID. Die nächsten drei Elemente enthalten die verbrauchte Energie (die Kilowattstunden), sowohl als Summe als auch aufgesplittet in zwei Tarife — wenn man denn zwei Tarife hat.

Hier kommen wir übrigens zu einem Teil den ich noch nicht verstanden habe: in Zeile 50 wird ein Status angegeben. Wenn mir jemand sagen kann was der bedeutet: immer her damit! 0x0182 ist dezimal 386, darauf kann ich mir keinen Reim machen.

Die Energiewerte muss man übrigens durch 10.000 teilen um auf die kWh zu kommen die am Gerät angezeigt werden.

In Zeile 78 steht die aktuelle Leistung, also wie viel Watt tatsächlich in diesem Moment verbraucht werden. In Zeile 86 folgt ein ‚public key‘. Der steht auch auf dem Gerät, ich nehme an der ist relevant wenn der Zähler wirklich ’nach Hause telefoniert‘. Die SML-Kommunikation funktioniert nämlich nicht nur über die Infrarot-Schnittstelle, sondern bei Bedarf auch über die Stromleitung. So kann der Anbieter Verbrauchswerte ablesen ohne dass dafür jemand zu Besuch kommen muss.

Die beiden Werte in Zeile 88 und 89 sind optional und vervollständigen so die Liste die in Zeile 24 begonnen wurde.

Oh, noch ein interessanter Punkt zu Zeile 86: das Nibble ‚8‘ ist eigenlich eine 0, also wieder ein Octet String. Da aber das Most Significant Bit gesetzt ist wird daraus eine 8, und das bedeutet dass die Länge der folgenden Daten nicht nur durch das zweite Nibble — die 3 — angegeben wird, sondern zusätzlich durch das folgende Byte. Nützlich, denn mit nur einem Nibble könnte man maximal 15 Bytes ankündigen (nachdem eines für die Länge draufgegangen ist). So kommen wir auf 0x32 == 50 Bytes. Ausreichend also für 48 Bytes Public Key und zwei Bytes Längenangabe.

Es folgen noch eine Prüfsumme und das förmliche Ende der zweiten Nachricht:

Die dritte Nachricht ist einfach nur da um das Ende der Übertragung anzukündigen.

Zu guter Letzt folgt in Zeile 102 nochmal die vom Anfang bekannte Escape-Sequenz, dann 1A um wirklich die Nachricht abzuschließen und nochmal drei Bytes für eine Prüfsumme.

Jetzt noch was in eigener Sache: viele Blogs schließen ihre Artikel grundsätzlich mit einer Frage an die Leser, um Kommentare zu fischen. Ich finde das penetrant, und mache das in der Regel nicht. Aber nach diesem furztrockenen (!) Artikel erlaube ich mir das ausnahmsweise mal: bitte ein Handzeichen von allen die bis hier durchgehalten haben! Muss kein Lob sein, ein Hallo Welt genügt. :-D

Die Schaltung, so wie sie zwei Jahre lief

Die Schaltung, so wie sie zwei Jahre lief

Eigentlich würde es deutlich mehr Sinn machen, Projekte zu veröffentlichen direkt nachdem sie fertiggestellt wurden. In diesem Fall war ich mir sicher das getan zu haben. Vor zwei Jahren, als ich es gebaut habe. Dass das nicht so ist fiel mir erst kürzlich auf. Komischerweise drei Tage bevor ich das Ding durch etwas anderes ersetzt habe. Egal, ich liefere schnell nochmal nach…

Anfang 2014 haben wir das Wohnzimmer umgebaut. Dabei hat eine Wand eine steinige Struktur bekommen, und ich dachte dass da ein Streiflicht gut aussehen würde. LED-Streifen boten sich an. Beim Rumalbern habe ich den Töchtern gesagt dass wir eine rosa Lampe einbauen würden. Der Plan war eigentlich warm-weiß, aber die bestanden jetzt auf rosa… zwei gegen einen… ich stand unter Zugzwang. :-)

Ein einfacher RGB-Streifen kann theoretisch auch weiß leuchten. Praktisch ist das alles andere als gemütlich. Also habe ich neben den RGB- auch noch einen warm-weißen Streifen geklebt. In Kombination ließ sich das aber dann nicht mehr mit dem Steuergerät bedienen das bei dem RGB-Streifen dabei war. Eine fertige RGBW-Steuerung habe ich damals nicht gefunden. Also musste ich selbst was bauen.

So funktioniert das

So funktioniert das

Ich glaube das war das erste Mal dass ich ernsthaft was mit einem Arduino gemacht habe. Und es war erstaunlich einfach. Den ersten Prototypen habe ich mit einem Arduino Uno gebaut, und mit der hervorragenden Infrarot-Empfänger-Bibliothek von Ken Shirriff konnte ich schon nach knapp zwei Stunden eine RGB- und eine weiße LED steuern. Mit der Logitech Harmony Fernbedienung mit der ich auch die Medienwiedergabe kontrolliere.

Den zweiten Prototypen habe ich mit MOSFETs gebaut, um zu auszuprobieren wie ich mit dem Arduino die Streifen ansteuern kann, die ja immerhin mit 12V versorgt werden.

Der finale Aufbau ist oben auf dem Foto zu sehen: ein Arduino Pro Mini (der ohne USB-Interface), und eine Lochrasterplatine auf der die Ansteuerung verdrahtet ist. Am Arduino hängt ein Infrarot-Empfänger. Ursprünglich ein TSOP31238, den habe ich aber kurz vor Projektende durch falsche Verdrahtung frittiert. Da ich fertig werden wollte habe ich einen alten DVD-Player zerlegt — keine Ahnung was das für ein Empfänger ist, aber er funktioniert. :-D

Das heißt: er hat funktioniert. Ziemlich genau zwei Jahre lang. Bis Heute Morgen. Seitdem ist die Schaltung obsolet — wie gesagt. Sourcen und was man so für das Projekt braucht habe ich Heute unter dem Namen IRlicht veröffentlicht.

Oh, und falls sich jemand fragt: die Lampe ist bis Heute praktisch ausschließlich in weiß zum Einsatz gekommen. Bunte Farben — insbesondere Farbwechsel — sind praktisch nur zum Ausprobieren und zum Vorzeigen zu sehen gewesen. So selten dass ich letztens schon in den Sourcen nachsehen musste welche Tasten zu drücken sind…

H801 WiFi im Gehäuse

H801 WiFi im Gehäuse

Ich weiß nicht mehr wie ich darauf gekommen bin, aber vor einiger Zeit habe ich mir vom Chinesen meines Vertrauens ein Modul zur LED-Steuerung schicken lassen. H801Wifi wird es genannt, man bekommt es für etwa neun Euro. Dazu gibt es eine App um per Telefon die Lampe zu steuern, aber die habe ich gar nicht erst ausprobiert.

Im Prinzip tut das Ding das gleiche wie mein Projekt IRlicht — von dem ich sicher war dass ich es veröffentlicht hätte (wird nachgeholt): es steuert über mehrere Kanäle die Helligkeiten von LED-Streifen. Meine selbstgebaute Steuerung macht das mit vier Kanälen: RGBW. Also drei bunte Farben und zusätzlich ein Kanal für weiß. Dieses Ding macht RGBWW, so könnte man tatsächlich nicht nur einen Weiß-Streifen anschließen, sondern beispielsweise einen warm- und einen kalt-weißen.

Mein Eigenbau wird per Infrarot-Fernbedienung gesteuert. In diesem Modul steckt ein ESP8266, also arbeitet es mit WLAN. Ich bastele schon länger an einer Firmware für kleine WLAN-Geräte, die kommuniziert auf der Basis von MQTT (hatte ich hier schon erwähnt). Dieses Modul wäre ein Paradebeispiel dafür. Fraglich war nur ob man die Firmware darauf zum Laufen kriegt…

Stellt sich raus: ja. Kriegt man. :-)

Programmier-Jumper gesetzt, serielle Schnittstelle angeschlossen

Programmier-Jumper gesetzt, serielle Schnittstelle angeschlossen

Ich bin nicht der erste der das versucht. Andreas Hölldorfer hat das auch schon gemacht und beschrieben. Dass es so einfach wäre hätte ich nicht vermutet. Fast schon enttäuschend… ;-)

Auf der Platine — dank hervorragender Fotos des Anbieters wusste ich das schon vor dem Kauf — befindet sich eine gut beschriftete serielle Schnittstelle. Und direkt daneben ist ein Anschluss der praktisch nach einem Jumper schreit. Setzt man den Jumper, kann man über die serielle Schnittstelle flashen. Direkt aus der Arduino-Umgebung heraus. Dazu habe ich einfach meinen USB-Seriell-Adapter zwischen Computer und Modul gehängt (ohne externe Stromversorgung, keine Ahnung ob das geschadet hätte) und in der IDE folgendes eingestellt:

  • Board: „Generic ESP8266 Module“
  • Flash Size: „1M (64k SPIFFS)
  • Upload Speed: „1152200“

Nachdem ich RX und TX richtig herum angeschlossen hatte konnte ich direkt flashen.

Ich hatte wie gesagt schon eine Firmware für meine Zwecke fertig, basierend auf dem exzellenten Homie for ESP8266 Framework. Naja, fast: bis jetzt kann die nur RGB, noch kein RGBWW. Aber das einzige was ich für RGB ändern musste waren die Pins. Das Header-File für „Generic ESP8266 Module“ kennt keine sprechenden Bezeichnungen für die Pins. Die Belegung hat Andreas Hölldorfer schon herausgefunden (er scheint aber eine andere Hardware zu haben, bei mir waren einiges Pins vertauscht). Folgendes funktioniert bei mir:

Pin Funktion
15 Ausgang rot
13 Ausgang grün
12 Ausgang blau
14 Ausgang weiß 1
4 Ausgang weiß 2
1 Interne LED grün / Signal
5 Interne LED rot / Power

Schön ist, dass nach dem initialen Flashen auch schon das OTA-Update (Over The Air) funktioniert. So konnte ich das Gehäuse direkt wieder veschliessen, alle weiteren Updates kommen durch die Luft. :-D