Arduino

Weihnachtsstern mit WS2812

Weihnachten ist gerade erst vorbei, allerdings hatte ich schon lange mal ein WS2812-Projekt vor. Bei Osh-Park fand ich bei den shared-projects ein Layout von ronsholidaylights.com, was mir gefiel. Allerdings ist die Fertigung in dieser Größe bei Oshpark zu teuer. Also hab ich den Stern unverändert (auch wenn das Layout nicht perfekt war: fehlende Kondensatoren und der Data-out-Pin des letzten WS2812 wurde nicht herausgeführt) bei elecrow produzieren lassen und gestern erhalten. Heute wurde der Protoyp gelötet, da die bei Ebay bestellten WS2812 passenderweise ebenfalls eintrafen. Die Effekte kommen per Arduino (pfuipfui ;-)) und ganz hervorragender ALA-Arduino-Bibliothek in den Stern. Ein sehr schnelles Projekt mit hohem WAF und schnellem Bastelerfolg.

WS2812 Star Stern
WS2812 Star Stern
WS2812 Star Stern
WS2812 Star Stern
WS2812 Star Stern
WS2812 Star Stern

Inbetriebnahme HT1621B

Der HT1621B wartet auf seinen Einsatz bei einem Display. Ich habe mir dazu das 2 x 9 Pin Display (siehe hier) aus dem Pollin-Sortiment ausgesucht:

Display 2 x 9 Pins
Display 2 x 9 Pins (an den unteren drei Pins wurden vom Transport zerstörte Anschlüsse gefixt)

Die Beschaltung folgt der dort genannten Pinbelegung (Pin2 untere Reihe auf Seg0, Pin3 auf Seg1, …) bis auf eine Ausnahme: Pin 9 der oberen Reihe wurde auf Segment 8 gelegt, damit der Code systematischer werden kann.

Segmentzuordnung
Segmentzuordnung

Es gibt eine Arduino-Bibliothek zum Download für den HT1621B. Drei ganz wesentliche Probleme hat diese Bibliothek:

  • Leider hat der Autor seine Bibliothek speziell auf sein Display zugeschnitten. In den Dateien wird nur mit sogenannten „magic numbers“ gearbeitet.
  • Der Speicherinhalt wird nicht zurückgelesen und modifiziert oder ein Abbild im Speicher gehalten, so dass man davon ausgehen muss, dass jeder Schreibvorgang den vorhergehenden Inhalt des Segments löscht. Das ist besonders ärgerlich, wenn z.B. Sonderzeichen eingeschaltet  werden. Dies löscht einzelne Segmente einer Ziffer, die auf demselben Segmentanschluss liegen. Das Schreiben von Sonderzeichen und Zahlen ist nicht kombiniert. Diese Bibliothek ist ausserhalb des dort verkauften Displays somit eine reine Demo und im praktischen Einsatz ohne Änderungen nicht wirklich brauchbar.
  • Beim HT1621B werden die Speicheradresse mit dem MSB zuerst, die Daten jedoch mit dem LSB zuerst herausgeschoben. Der Autor hat nicht klar kommuniziert, dass er – vermutlich aus Gründen der Vereinfachung – die Daten in seinem Programm mit dem MSB zuerst herausschiebt. Man muss also die Daten im Vergleich zum Datenblatt des HT1621B genau verkehrt herum aufbauen. Das ist enorm wichtig für den Aufbau der COM-Segment-Tabelle im Programm. Segment 0 im HT1621B-Speicher landet so auf Bit 7 in der Tabelle, Segment 1 auf Bit 6 usw. Da er mit „magic numbers“ arbeitet, kommt man darauf erst nach verzweifeltem Testen 😉 und nachfolgender Programmanalyse.

Vorteil ist jedoch die gute Überschaubarkeit des Codes. Es wurde auf jeglichen Schnickschnack verzichtet.

Ich versuche jetzt, diese Bibliothek an mein Display anzupassen und dabei gleichzeitig etwas universeller zu machen. Die grundlegende Senderoutine wird so umgestellt, dass immer nur vier Bit Daten gesendet werden. Das ist in „umgekehrter“ Logik übersichtlicher und einfacher zu codieren und entspricht mehr der inneren Logik des HT1621B mit 32 x 4 Bit Speicher. Die Sonderzeichen sind nun universeller kodiert. Es können auch Buchstaben (vorerst ‚O‘, ‚F‘, ’n‘) angezeigt werden. Das habe ich bereits fertig.

Display 2x9 Pins im Test
Display 2×9 Pins im Test

 

Versuchsaufbau
Versuchsaufbau

Nächster Schritt ist dann, die Schreibroutine so anzupassen, dass der bereits vorhandene Inhalt nicht mehr überschrieben wird. Wenn alles fertig und mit einem weiteren Display getestet ist, werde ich die Quelldateien unter Beachtung der ursprünglichen Lizenz veröffentlichen.

 

Einkauf bei Ebay – fakes vom MAX7219 erwischt?

Da kauft man nichtsahnend deutlich billigere MAX7219 bei Ebay und wundert sich dann über das Äußere …

fake Exemplare des Max7219
fake Exemplare des Max7219

 

Irgendwas war anders beim Original, was nicht mehr im Haus ist und von dem auf meiner Festplatte keine Fotos existieren. Ein wenig Googlen bringt die Lösung:

thread im Arduino Forum mit überzeugenden Bildern und Quellennachweis

Beitrag von tronixstuff mit Tests

Es steht anhand des Aussehens: Foto vom AS1107 stark zu vermuten, dass unter der Fake-Haube AS1107 stecken. Die sind allerdings durchaus brauchbar, wie auch der Tester bei tronixstuff herausfindet.

Temperatur und Luftfeuchtigkeit messen mit dem DHT-11 und Arduino

Heute war eine Arduino-Spielerei fällig. Pollin verkauft derzeit ein ArduinoClone Pro Mini Board mit dem ATMega 168. Ein FTDI-breakout-Adapter von Watterott lag noch rum, ein DHT-11-Board ebenso. In weniger als 10 Minuten war die Software aus dem Internet heruntergeladen, alles zusammengesteckt und programmiert.

Ein paar Bilder:

FTDI breakout (USB-serial Adapter)
FTDI breakout (USB-serial Adapter)

 

alles zusammengesteckt ...
alles zusammengesteckt …

 

... und gestartet.
… und gestartet.

 

Hierfür benötigt man keine bzw. kaum Elektronik- oder Programmierkenntnisse. Es ist schon beeindruckend, was moderne Technik und entsprechende Abstraktion (Arduino-Konzept) möglich macht. Natürlich ist diese Schaltung so nicht praktisch nutzbar, aber auf die geschilderte Weise ist praktisch jederzeit ein schnelles proof of concept möglich. (mit z. B. anschließender klassischer Umsetzung per PCB- und Softwareentwicklung in C sowie Einbau in ein fertiges Gerät)