Die TVH-Video- und Audio-MUX
Diese Baugruppe soll in Zukunft bei DB0TVH ihren Dienst tun. Eine Video- und Audio-Kreuzschiene soll die freie Verteilung der Video- und Audiosignale ermöglichen. Die Idee hinter der MUX stammt ursprünglich von Tomtom DL1MFK, er hat jedoch für sein ATV-Relais eine einfachere Ansteuerung realisiert. Roland, DL8OBA, hat von ihm die beiden MUXen besorgt, und jetzt gilt es diese für TVH anzupassen, wo ich ins Spiel komme.
Hier ein paar Eckdaten der geplanten Lösung für den Videoteil:
- MAX4358 32x16 Video-MUX, davon 24x16 genutzt
- Ansteuerung durch ein NetIO mit HTTP-Oberfläche, sowie über einen TCP- oder UDP-Port
- Freie Zuordnung der Eingänge zu den Ausgängen
- Profile, unter denen sich die Zuordnungen speichern und später laden lassen
- Alle Ein- und Ausgänge werden frei über eine Konfigurationsseite benennbar sein
- Ansteuerung über Ethernet oder die serielle Schnittstelle
- Optional: Anschluss von Sync-Auswerterbaugruppen an eventuell noch freien Pins
- Keine Eigenintelligenz: die MUX wird komplett von einer anderen Baugruppe oder PC über RS232 oder Ethernet ferngesteuert
- Für Wartungsarbeiten: LCD-Display, Drehencoder und Tasten zur lokalen Administration auch ohne Rechner
- Obligatorisch: Verwendung des TFTP-Bootloaders für versionierte Fernupdates
- Vieles weitere, was man auch im TVH-Schalter findet (TELNET, HTTP, ...)
- Möglichst noch alles mit dem ATmega644
- ...
Gleiches gilt fast analog auch für den Audioteil, der allerdings noch nicht aufgebaut wurde und auch nicht aus einem monolitischen Chip wie dem MAX4358 besteht. Hier mal ein Bild vom ersten Testaufbau der Video-MUX:
Zu sehen ist die Video-MUX zusammen mit ihrem Netzteil und einem Experimentierboard auf ATmega168-Basis. Das Netzteil liefert die notwendigen +/-5V und lässt sich optional auch noch überwachen. Die MUX mit dem MAX4358 befindet sich im Weißblechkasten, es sind für einen ersten Test nur zwei Quellen und ein Ausgang angeschlossen worden. Auf dem kleinen Experimentierboard läuft eine einfache Testsoftware, die vom Rechner über eine USB-COM-Port-Emulation Befehle entgegen nimmt und über Hardware-SPI die MUX entsprechend einstellt. Dieser Aufbau diente nur dazu, die Funktion der MUX an sich zu prüfen und um den SPI-"Treiber" für den MAX4358 zu entwickeln. Die weitere Entwicklung findet dann auf einem großen ATmega644 statt.
Momentan existiert auf dem ATmega644 schon eine erste Version der Webseite, sowie die Grundsoftware (HTTP, TELNET usw.), welche vom TVH-Schalter stammt und entsprechend angepasst wurde. Eine nicht zu unterschätzende Herausforderung ist hier die Anpassung des HTML und des JavaScript an die verschiedenen Browser damit die Tabelle ordentlich dargestellt wird. Weiterhin ist schon der Treiber für den MAX4358 am SPI-Bus vorhanden. Das Web-Frontend und das MAX4358-Backend muss aber noch verheiratet werden.
Und so sieht das Ganze momentan schon aus:
Was man hier grad nicht sieht: die aktuelle Tabellenzeile wird farblich hervorgehoben, so kann man deutlich sehen, welchen Eingang man verschaltet. Eventuell soll später auch noch die Spalte hervorgehoben werden, was allerdings erheblich aufwendiger ist. Pro Ausgang lässt sich nur ein Eingang zuordnen, es kann aber ein Eingang auf mehrere Ausgänge gleichzeitig geschaltet werden. Und natürlich wird auch noch der aktuelle MUX-Zustand in der Tabelle vorbelegt sein.
Fortschritt:
Momentan arbeite ich daran, die Webseite so zu gestalten, daß sie sich vom ATmega-Webserver mit möglichst wenig Aufwand dynamisch generieren lässt. Das macht zwar auch schon der Server des TVH-Schalters, jedoch sind hier bei der MUX noch viel mehr Daten einzubetten und vor allem die Rückmeldungen der Klicks auf die Buttons auszuwerten.
Update 6.8.2012
Die Basis steht soweit, der ATmega kann das Menu dynamisch aufbauen und berücksichtigt dabei, ob ein Ein- oder Ausgang benutzt (= einen Namen hat) wird. Leider gab es einen Rückschlag beim SPI, der MAX4358 benutzt natürlich andere Einstellungen als der ENC28J60 so dass der SPI-Port vor jeder Ausgabe an den MAX umkonfiguriert werden müsste, und danach natürlich wieder für den ENC28J60 eingestellt werden muss. Weiterhin muss geprüft werden, ob der ENC auch mit einem anderen MOSI-Ruhepegel als LOW zufrieden ist auch wenn er nicht selektiert wurde.
Im Zweifelsfall wird der MAX4358 per Software-SPI angebunden. Da der ATmega644 bereits jetzt ziemlich voll ist (ca. 46kB von 56kB wegen TFTP-Bootloader), müssen noch Teile der alten Software weichen oder ursprünglich geplante Funktionalitäten wie z.B. die LCD-Menusteuerung fallen gelassen werden.
Update 9.8.2012
Die Matrix wird nun korrekt vom Webserver aufgebaut und ausgewertet, aber noch nicht zum MAX4358 geschickt.
Die Ansteuerung des MAX4358 wird über Software-SPI an Port C erfolgen. Zusätzlich zum schon vorhandenen Individual Address Mode kann dann auch der mit nur 7 Bit arbeitende Complete Matrix Mode implementiert werden.
September 2012
Inzwischen läuft alles, die MUX lässt sich über die dynamisch generierte Webseite steuern, und die Zustände als Startwert ablegen. Leider bereiten die vertikal ausgerichteten Spatennamen der Ausgänge Probleme, sobald es sehr wenige aktive Ausgänge sind. Die Texte rutschen dann in die Tabelle, dies sieht man nicht im Browser, aber die obersten Buttons werden dann verdeckt und lassen sich nicht mehr anklicken. Hier sind noch einige Experimente erforderlich.
Stay tuned...