Automatischer Toslink Umschalter mit IR-Empfänger

Motivation

Ich benötige einen Toslink Umschalter, um unterschiedliche Audioquellen an meinem Logitech Z5500 Surroundsystem verwenden zu können, da dieses nur einen optischen Eingang besitzt. Dieser Umschalter soll, wenn auf der Fernbedienung des Surroundsystems die Taste für den optischen Eingang gedrückt wird, die unterschiedlichen Audioquellen durchschalten. Dadurch kann die bestehende Fernbedienung weiter genutzt werden.

Konzept für einen Toslink Umschalter

Dazu werden zunächst für jeden Eingangskanal ein Toslink-Receivermodul und für jeden Ausgangskanal ein Toslink-Transmittermodul benötigt. Die Eingänge sollen durch einen Multiplexer auf den Ausgang geschaltet werden. Die Ansteuerung des Multiplexers und die Auswertung des IR-Signals soll mit einem STM32 Mikrocontroller erfolgen. Zusätzlich soll ein kleines Display verbaut werden, welches den aktuell gewählten Eingang anzeigt. Zunächst soll ein einfacher Steckbrettaufbau mit LEDs den Umschalter simulieren. Sobald ein Programm für den Mikrocontroller geschrieben wurde, dass die gewünschte Funktionalität bereitstellt, kann der eigentliche Umschalter aufgebaut werden. Danach wird ein Platinenlayout erstellt und ein passendes Gehäuse gesucht.

Teilprobleme die bearbeitet werden müssen

Erkennung des IR-Signals der Fernbedienung

Das Signal der Fernbedienung muss aufgezeichnet werden und vom Mikrocontroller erkannt werden. Für die gängigen von Fernbedienungen genutzten Infrarotprotokollen gibt es fertige Libraries für Unterschiedliche Mikrocontroller. Hier kann möglicherweise von einer Eigenentwicklung abgesehen werden.

Ansteuerung eines Displays

Bisher ist ein einfaches kleines OLED-Display mit SPI-Schnittstelle vorgesehen. Auch hier gibt es möglicherweise fertige Libraries zur Ansteuerung.

Elektrischer Aufbau des Umschalters

Der eigentliche Umschalter ist elektrisch relativ einfach. Die Receiver- und Transmittermodule müssen korrekt beschaltet werden. Das Signal kann über einen Multiplexer umgeschaltet werden. Dieser Aufbau kann getrennt vom restlichen Projekt erfolgen. Eine Ausführliche Dokumentation zu digitalen Audio Schnittstellen findet sich hier

Mechanischer Aufbau

Sobald die Entwicklung der Elektronik abgeschlossen ist, kann ein passendes Gehäuse für den Toslink Umschalter ausgewählt werden. Aus ästhetischen Gründen tendiere ich hier zu einem Gehäuse aus extrudiertem Aluminium. In der Frontplatte muss ein Ausschnitt für das Display vorgesehen werden. Auf der Rückseite muss Platz für die vier Toslink Buchsen sowie ein Anschluss zur Energieversorgung sein.

Über WLAN steuerbarer RGB-LED-Streifen mit ESP8266

Nachdem ich schon viel über den WLAN Chip ESP8266 gelesen hatte wollte ich selber ein Projekt damit umsetzen. Um den elektrischen Aufbau möglichst einfach zu halten fiel die Wahl schnell auf die Ansteuerung eines RGB-LED-Streifen.

Aufbau einer Testplatine

Da das ESP8266 Modul mit einen Pinabstand von 2mm nicht direkt auf eine Lochrasterplatine gelötet werden kann, habe ich mit kurzen Drähten eine fliegende Verdrahtung erstellt. Inzwischen habe ich mir passende Adapterplatinen zugelegt. Die Beschaltung ist so einfach wie möglich gehalten. Neben der Standardbeschaltung sind noch eine Steckleiste zur Programmierung, sowie drei Transistoren zur Ansteuerung des RGB-LED-Streifen.

Platine zum Testen des ESP8266 mit einem RGB-LED Streifen
Platine zum Testen des ESP8266 mit einem RGB-LED Streifen

Nach den ersten Tests mit fest programmierten PWM-Werten musste noch die Steuerung per WLAN realisiert werden. Dazu habe ich mich für Multicast entschieden.

Netzwerkanbindung

Wird Multicast von der Netzwerk-Hardware unterstützt kann man UDP-Packete an die höchste Adresse des Netzwerks senden und dieses wird dann an alle Clients weitergeleitet. Auf dem ESP8266 läuft ein Client der auf einem frei einstellbarem Port auf solche Pakete wartet. In diesen Paketen werden die RGB-Farbwerte übermittelt.

Farboptimierung

Zur besseren Farbdarstellung werden die LEDs über eine logarithmische Helligkeitskennlinie angesteuert. Dazu werden in einer Look-Up Tabelle die passenden PWM-Werte zu den RGB-Farbwerten hinterlegt.

Terminal für die serielle Schnittstelle in Eclipse einrichten

Beim programmieren mit Mikrocontrollern benutze ich regelmäßig die serielle Schnittstelle, um Status- oder Debuginformationen auszugeben. Gerade in Kombination mit dem Debuggen in Eclipse ist es lästig, zum Terminal Programm zu wechseln, um einen Blick auf die Ausgabe auf der seriellen Schnittstelle zu Werfen. Daher habe ich eine Möglichkeit gesucht, das Terminal direkt in Eclipse anzeigen zu lassen. Das Terminal-Plugin übernimmt diese Aufgabe. Die Installation ist in diesem Artikel beschrieben.

Zunächst müssen zwei Eclipse Plugins installiert werden: TM Terminal und RXTX

Installation TM Terminal

Dazu im „Help“ Menü den Punkt „Install New Software…“ auswählen. Es öffnet sich ein Fenster. In diesem Fenster muss zunächst das richtige Repository gewählt werden. Ich arbeite aktuell mit der Eclipse Version „Mars“ daher wähle ich das entsprechende Repository. Für andere Eclipse Versionen funktioniert dies analog. Über das Filter-Feld kann durch die Eingabe von „terminal“ die Auswahl an Paketen auf das gewünschte eingeschränkt und das Paket „TM Terminal“ ausgewählt werden. Danach mit „Next“ durch die Dialoge klicken und die Lizenz akzeptieren. Mit einem Klick auf „Finish“ wird das Plugin installiert. Die Nachfrage ob Eclipse neugestartet werden soll mit „No“ bestätigen.

Terminal_install_tmterminal

Installation RXTX

Wie zuvor über das „Help“ Menü „Install New Software…“ auswählen und warten bis sich das „Install“-Fenster öffnet. Für die Installation muss zunächst das RXTX Repository hinzugefügt werden. Dazu auf den Button „Add…“ klicken. Im Dialogfeld einen Namen vergeben und als Location die folgende Adresse angeben: http://rxtx.qbang.org/eclipse/ und mit „OK“ bestätigen.

Terminal_install_rxtx_1.png

Danach die aktuellste Version von RXTX auswählen und beide Pakete auswählen. Der Installationsprozess wird wie zuvor über klicken auf „Next“ und akzeptieren der Lizenz gestartet. Während der Installtion erscheint eine Warnung, dass das Paket nicht signierte Inhalte enthält. Diese Warnung mit einem Klick auf „OK“ bestätigen.Terminal_install_rxtx_2

Nach der Installation des RXTX Plugins kann Eclipse vorerst beendet werden.

Installation zusätzlicher Dateien für das RXTX-Plugin

Abschließend müssen zusätzliche Dateien installiert werden, damit das Plugin Zugriff auf die Hardware erhält.

Dazu müssen zunächst die für Windows kompilierten Binaries heruntergeladen werden. Diese sind unter diesem Link verfügbar: http://fizzed.com/oss/rxtx-for-java. Für eine 32-bit Java Version muss das Windows-x86 Paket gewählt werden und für eine 64-bit Java Version das Windows-x64 Paket. Die heruntergeladenen Dateien in einen Ordner entpacken. Jetzt müssen die entpackten Dateien in das Verzeichnis der Java Runtime Environment kopiert werden.

Die Datei RXTXcomm.jar kopieren nach: C:\Program Files\Java\jre1.8.0_65\lib\ext

Die Dateien rxtxParallel.dll und rxtxSerial.dll kopieren nach C:\Program Files\Java\jre1.8.0_65\bin

Bei einer 32-bit Java Version sind die Pfade C:\Program Files (x86)\Java\jre1.8.0_65\lib\ext bzw. C:\Program Files (x86)\Java\jre1.8.0_65\bin 

Die Java Version (\jre1.8.0_65\) muss durch natürlich die tatsächlich installierte Version ersetzt werden.

Konfigurieren des Plugins

Sind alle Dateien kopiert ist die Installation abgeschlossen und das Plugin kann konfiguriert werden. Dazu Eclipse wieder starten. Nach dem Start kann das Terminal Fenster eingeblendet werden. Dazu im Menü „Window“ den Punkt „Show View“ und dort „Other…“ auswählen. Alternativ die Tastenkombination Alt+Shift+Q und direkt danach erneut Q drücken. In das Filterfel „terminal“ eintragen und den Terminal-View auswählen und mit „OK“ bestätigen. Das Terminal-Fenster wird hinzugefügt und kann beliebig platziert werden.

Terminal_config_1

Über das Computer-Icon im Terminal-View kann ein neues Terminal geöffnet werden. Alternativ kann die Tastenkombination Strg + Alt + Shift + T genutzt werden. Es öffnet sich das Konfigurationsfenster für das Terminal. Bei „Choose terminal:“ muss „Serial Terminal“ ausgewählt werden. Der Dialog verändert sich und alle nötigen Einstellungen wie Port, Baudrate und Dateneinstellungen können vorgenommen werden. Nach einem Klick auf „OK“ startet das Terminal. Über die Buttonleiste kann das Eingabefeld geöffnet, der Terminalinhalt gelöscht und das automatische Scrollen deaktiviert werden.

Terminal_config_2