Nachdem im 2. Teil der praktische Aufbau den theoretischen Überlegungen des 1. Teilesfolgte, nun die Betrachtung von Softwareseite.
Um den Sketch anfangs möglichst einfach zu gestalten, wird im einfachsten Fall einfach eine statische Adresse an die drei Adresspins A, B und C gelegt. Die beiden RGB Ports werden ebenfalls nur mit statischen Daten über HIGH Pegel bedient. Damit beschränkt sich der Sketch im Wesentlichen auf die for-Schleife zur Taktung des CLK Pins und die Steuerung der Kontrollpins OE und LAT. Da dieser sehr einfache Sketch auf Anhieb seine Funktion erledigte, habe ich diesen sofort erweitert. Auf dem nachfolgenden Bild ist das Ergebnis eines bereits etwas modifizierten Sketches zu sehen, bei dem ein Adresszähler mit implementiert ist. Aber der Reihe nach.
Schrittweise Verdrahtung des Panels mit dem Arduino Uno
Im 1. Teil dieses Hackings sind einige theoretische Grundüberlegungen und Annahmen entwickelt worden. In diesem Teil folgt der praktische Aufbau. Bei entsprechenden Kenntnissen der angelsächsischen Sprache ist es am einfachsten dem Adafruit Tutorial zu folgen.
Die 5V Stromversorgung des Panels erfolgt über 2 Schraubklemmen oder eine separate 4-pol. Steckerleiste. Zwei identische Stiftleisten mit Wanne zur Datenübertragung befinden sich auf der Rückseite des Panels. Die Eingangsseite ist mit IN und die Ausgangsseite mit OUT beschriftet.
Leider gibt es auch unterschiedliche Pinbezeichnungen der 16-pol, Stiftleiste. Der Latch-Pin LAT kann beispielsweise auch mit STB (Strobe) gekennzeichnet sein. Die Funktion ist aber offensichtlich identisch. Ähnliches gilt auch für die Farbsteuereingänge R1, G1, B1 und R2, G2, B2 welche auch als R0, G0, B0 und R1, G1, B1 bezeichnet sein können. Innerhalb dieser Dokumentation wird aber weiterhin nur die Bezeichnung synonym zu RGB0 und RGB1 bzw. RGB Port 0 oder 1 verwendet.
Die sukzessive Verkabelung dieser Stiftleiste gelingt mit dem beigefügten Flachbandkabel am einfachsten und sichersten über die 4 mit GND bezeichneten Masseleitungen. Diese können sehr einfach mit einem Ohmmeter eindeutig ausgemessen werden. Alle 4 Leitungen werden mit GND des Arduinos verbunden. Auf dem nebenstehenden Foto sind dieses die vier blauen Leitungen.
Als nächstes lassen sich die sechs RGB Steuereingänge recht gut zuordnen und mit den Arduino Uno Pins 2 bis 6 verbinden. Aus Ermangelung an weiteren blauen Kabeln, sind die beiden Steuereingänge B0 und B1 für die blauen LEDs mit gelben Leitungen verkabelt. Für LEDs der Farben Rot und Grün kamen jedoch synonyme Farben zur Anwendung.
Im nun folgenden Schritt werden die 3 Adressleitungen A, B, C an die Arduino Kontakte A0 bis A2 angeschlossen. Wie eingangs bereits beschrieben, besteht das Display aus 8 Sektionen; jeweils 2 Zeilen werden immer parallel angesteuert, so dass hier 8 * 2 = 16 Zeilen adressiert werden können.
Im letzten Schritt werden die 3 verbleibenden Leitungen CLK und OE mit den Pins 8 und 9 verbunden und zu guter Letzt der LAT (STB) Pin mit Pin 10 des Arduino Uno, hier im Bild noch nicht verdrahtet.
Debugging des Panels
Die in Teil Iunter Zusammenfassung beschriebene mögliche Vorgehensweise soll nun im nächsten Teil sukzessive mit Hilfe eines Arduino Sketches erprobt und die bisherigen Vermutungen ggf. korrigiert und ergänzt werden.
Das Adafruit oder ähnliche 16*32 RGB LED Matrix Panels bestehen aus 16 Zeilen mit 32 Spalten ziemlich heller RGB LEDs. In Summe also 512 RGB LEDs pro Panel, die irgendwie auch angesteuert werden wollen. Das Panel hat leider keine PWM Steuereingänge, die Farbkanäle lassen sich nur digital Ein- und Ausschalten! Eine Helligkeits- bzw. Farbsteuerung muss daher manuell durchgeführt werden. Mit Einschalten aller RGB LEDs ergibt sich eine gleichmäßig weiße Ausleuchtung. Die Panels sind elektrisch kaskadierbar, ein Arduino Uno mit der Adafruit Bibliothek jedoch nur eingeschränkt dazu in der Lage.
Es werden 12 Arduino Pins und 800 Byte RAM bei Verwendung der Library benötigt um ein 12-bit Farbimage zu speichern. Die Adafruit Bibliothek unterstützt ausschließlich den Uno oder den Mega. Der Arduino Leonardo oder andere Arduino Mikrocontroller werden derzeit nicht unterstützt.
Ein sehr gutes Tutorial ist bei der Lady Ada zu finden. Die beiden später ggf. noch notwendigen Bibliotheken RGB-Matrix-Panel sowie die Adafruit-GFX-Library können über das jeweilige Adafruit GitHub Repository durch Klick auf den Button „Download Zip“ heruntergeladen werden.
Stromversorgung
Die Stromversorgung des LED Panels darf keinesfalls über den Arduino erfolgen, da dieser nicht genügend Leistung liefern kann und zerstört werden würde! Das 16*32 RGB LED Display darf daher nur über ein separates Netzteil mit 5V und mindestens 2,5A betrieben werden. Werden Panels kaskadiert, vervielfacht sich entsprechend der Strombedarf und ein entsprechend leistungsstärkeres Netzteil ist notwendig!
Hardware Hacking des Panels
Um überhaupt erst einmal eine grobe Idee über die grundsätzliche Funktionsweise des Panels zu entwickeln, ist es durchaus sinnvoll auch einmal die Schaltung nebst Datenblätter dazu anzuschauen. Ein konkretes Schaltbild konnte ich jedoch bisher nicht ausfindig machen. Deshalb habe ich erst einmal festgehalten, welche ICs überhaupt verbaut worden sind, da außer bei Adafruit ansonsten nichts verwendbares an Informationen zu finden war. Jedoch selbst bei der bereits recht ausführlichen Beschreibung von Adafruit fehlen immer noch diverse Details.
Nach der Installation des Treibers und der Softwaretools im ersten Teil geht es nun weiter mit der Konfiguration des SDR-Servers. Über das Tool rtl_tcp können die Signale des SDR auch über das Netzwerk gestreamt werden. Das ist der für mich spannendste Teil Radio über so einen preiswerten USB-Dongle zu hören.
Auch die Funktion des SDR RTL-Servers sollte jetzt bereits funktionieren und kann mit sudo rtl_tcp –a <IP-Adresse RasPi> getestet werden. Hier läuft der Server standardmäßig auf Port 1234:
sudo rtl_tcp -a 192.168.1.49
Mit einer kleinen Ergänzung beim Starten des Servers, kann der Port aber auch frei vergeben werden, wie hier auf 1337:
sudo rtl_tcp -a 192.168.1.49 -p 1337
Der Server kann auch im Hintergrund laufen. Dazu wird ans Ende der Befehlszeile einfach noch ein & angehängt. So muss das Tool nicht jedes Mal mit einer neuen Verbindung des Clients ebenfalls neu gestartet werden, sondern lauscht einfach weiter im Hintergrund:
In den letzten Tagen ist die Idee gereift meinen bislang noch separat laufenden Raspberry Pi ADS-B Flugtransponderempfänger mit einem sehr preiswerten NoName DVB-T+DAB+FM USB-Stick ebenfalls mit auf den gerade neu aufgesetzten RasPi FHEM-Server zu verlagern, um damit nur noch einen Controller im 24-Stunden Dauerbetrieb laufen zu haben. Der DVB-T USB-Empfänger soll dann dieses Mal auf dem RasPi nicht nur als ADS-B Server (Installationsanleitung und mehr folgt in weiteren Teilen) fungieren sondern auch noch als RTL-SDR Server und seine Daten zum SDR-Client wie zum Beispiel SDR# über das Netzwerk streamen.
Der von mir verwendete USB 2.0 Dongle ist mit einem RTL2832U Demodulator und USB-Controller, getaktet mit einem 28,8MHz Quarz sowie einem Rafael R820T Tuner-IC ausgestattet. Der Abstimmbereich überstreicht mit dem aktuellen Treiber lückenlos den Bereich von 24 MHz bis zu 1,766 GHz. Mit der Installation eines experimentellen Treibers lässt dich der Abstimmbereich noch etwas erweitern. Weitere Details zu den verwendbaren USB-Dongles können im Internet recherchiert werden. Der etwas empfindlichere R820T2 Tuner, oft in einem blauen USB-Stickgehäuse verbaut, wird bei ebay inzwischen für deutlich unter € 10 angeboten!
Dieses ist nun der 1. Teil einer mehrteiligen Reihe von Schritt-für-Schritt-Anleitungen die Hausautomatisierungssoftware FHEM auf einem Raspberry Pi zu installieren und später vollständig einzurichten.
Steckernetzteil 5V / 1,5A bis 2A mit Micro-USB-Anschluss
Je nach RasPi Modell eine SD oder MicroSD Karte mit mindestens 4GB, möglichst größer in Class 4 oder Class 6. Ggf. funktioniert im RasPi B+ auch eine schnellere Class 10 MicroSD Karte
MicroSD bzw. SD Kartenleser
Ethernet LAN-Kabel zum Anschluss des RasPi an den Router
Zuallererst müssen wir von der Downloadseite der Raspberry Pi Organisation das an den jeweils verwendeten Raspberry Pi angepasste Debian Linux Wheezy als Image herunterladen. Details zur Installation sind hier ebenfalls zu finden. Das derzeit aktuelle Image trägt das Datum 2015_05_05 mit dem Kernel 3.18. Das Image entpacken wir als nächstes in einen Unterordner unserer Wahl. Das Herunterladen der etwa 1GB großen Datei dauert schon einige Minuten. Das entpackte Image hat jetzt eine Größe von 3,2GB! Daher brauchen wir ein mindestens 4GB großes Speichermedium, zumal die tatsächlich verfügbare Speicherkapazität der Speicherkarten in der Realität immer deutlich kleiner ist. I. Installation und Setup des Rasbian Wheezy auf einen Raspberry Pi weiterlesen →
Im 1. Teil konnte ich bereits meine Erfahrungen mit dem Aufbau des Class-E SSTC Bausatzes beschreiben. Nachfolgend nun noch die Schilderung einiger weiterer Ideen und Erfahrungen. Auch hier möchte ich jedoch erst wieder mit einem Warnhinweis beginnen.
Teslaspulen sind kein Spielzeug mit dem unbedarft umgegangen werden kann. Schmerzhafte oder auch tödliche Verletzungen sind durchaus im Bereich des Möglichen. Ich kann keinerlei Verantwortung für entstandene Schäden übernehmen!
Optionale Erweiterungsideen
Nun ist so ein „Projekt Teslaspule“ ein durchaus faszinierendes Objekt und auch eine ideale Spielwiese zur Verwirklichung weiterer Ideen. In den nächsten Ausbaustufen sollen durch einige Einstell- und Überwachungsmöglichkeiten der sichere Dauerbetrieb erhöht werden. Eine visuelle Spannungs- und Stromüberwachung mittels einer analogen Anzeige erschien mir dazu sinnvoll. Mit einem zusätzlichen Lüfter sollen lt. Manual 3A bei 30V im Dauerbetrieb machbar sein. Die SSTC Baugruppe selber kann bis maximal 35V Versorgungsspannung betrieben werden. Im Wesentlichen sollten dafür die beiden Elkos C2 und C4 mit jeweils 2200uF/35V verantwortlich sein wie aber auch der begrenzte Eingangsspannungsbereich des 12V Stabis. Der Austausch gegen 50V LOW ESR Kondensatoren sollte in diesem Bereich zumindest die Grenzen deutlich nach oben verschieben. Über einen 2. spannungsfesten Längsregler kann diese zu hohe Eingangsspannung vorm 12V Stabi auf ungefährliche Werte unterhalb von 35V begrenzt werden. Eine weitere Alternative wäre auch den 12V Stabi ggf. durch die Hochvoltausführung eines LM317HV zu ersetzen. Die Krönung wäre dann noch eine einstellbare Stromversorgung der SSTC Baugruppe über einen relativ weiten Bereich von vielleicht 24V bis 48V. Ebenfalls eine interessante Option ist noch eine einstellbare Strombegrenzung von 1A bis max. 5A einzubauen.
Der Erwerb des Bausatzes erfolgte völlig problemlos über einen eBay-Shop: http://search.ebay.de/?sass=kurt998&ht=-1. Nachfolgend dazu auch die Webseite des Entwicklers und privaten Anbieters http://www.kurts-werkstatt.de. Der Bausatz kann dort für € 69,00 auch direkt per Email bestellt werden. Es handelt sich um die obere Position im Shopbereich „Kleine SSTC im Class-E Betrieb. Betrieb an 15-30V bei 1-3A“! Hier auch noch ein Link zu einem Video dazu: http://youtu.be/ePsfle0Ll7w
Bevor es aber losgeht, unbedingt erst noch ein wichtiger Sicherheitshinweis den ich direkt von der Webseite des Entwicklers übernommen habe:
Sie sollten die Versuche nur nachbauen, wenn Sie sich mit der Materie auskennen. Ein kleiner Fehler kann bei manchen Versuchen tödlich sein. Für entstehende Schäden kann ich keine Verantwortung übernehmen! Alle Versuche auf eigene Gefahr!!!!
Vor einigen Tagen sprach mich ein Freund an, ob ich ihm testweise mit einem meiner Arduinos eine simple zeitgesteuerte Ein-/Aus-Schaltung einer kleinen Spülpumpe programmieren könnte. Auf meine Frage, warum denn dafür keine Schaltuhr aus dem Baumarkt funktioniert, bekam ich folgende Antwort: Die üblichen mechanischen Schaltuhren aus dem Baumarkt haben Schaltreiter mit 30 Minuten Auflösung. Die Pumpe soll aber alle 12 Stunden nur für 10 Sekunden laufen, eine Leitung spülen und dann gleich wieder abgeschaltet werden. Außerdem soll die Bedienung so einfach und vor allem auch so robust wie möglich sein.
Also programmierte ich einen kleinen Sketch und steckte auf dem Steckbrett die beiden LEDs und die Relaissteuerung passend zusammen. Es funktionierte alles einwandfrei. Allerdings widerstrebte es mir für so eine simple Aufgabe am Ende einen vollständigen Arduino Uno oder Leonardo zu verwenden. Einen Barebone mit einem ATmega328P zusammenzulöten erschien mir ebenfalls immer noch zu aufwändig. Nach einigen weiteren Überlegungen entschied ich mich im Laufe des Projektes ein deutlich kleineres Arduino Derivat mit einem kleineren Microcontroller zu verwenden. Ein Digispark sollte hier die Lösung werden. Nebenbei entstand dazu gleich noch ein kleines Digispark Kochbuch.