USBControl

Aus SigVDR's Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

USBControl

An diesem Projekt wird zur Zeit gearbeitet. Alle Informationen sind als "vorläufig" zu verstehen. Weitere Anregungen und Ideen zu diesem Projekt sind willkommen!

History

22.12.2009: Das HDTV Zeitalter bricht herein und die Hardware ist inzwischen zu erschwinglichen Preisen auf dem Markt verfügbar. Weil mir aber der "alte" VDR zum Ausschlachten zu schade ist und weiter laufen soll, habe ich mit kurzerhand ein neues Mainboard gekauft um einen "neuen" VDR aufzubauen. Dabei habe ich an alles gedacht nur nicht auf so banale Dinge wie LPT oder COM Schnittstellen an denen ich bisher LCD-Display, Fernbedienung Infoled's und Tasten angeschlossen hatte. Und nun? Wollte ich nicht schon seit Monaten eine All-In-One Lösung für genau dieses Problem kreieren? Jetzt aber schnell losgelegt ...
08.01.2010: Dank vieler Feiertage über den Jahreswechsel und weil ich für die Hardware nicht bei Null anfangen musste, gibt es jetzt schon einen "Prototyp" von USBControl bei dem die Grundfunktionen Hardware- und Softwareseitig funktionieren, Zeit für eine erste Beschreibung der vorgesehenen Funktionen.
20.04.2010: Ein Layout für den 5 1/4 Zoll Schacht des PC ist soweit fertiggestellt. Bestückbar mit einem 2x20 Zeichen Display, dem IR-Empfänger, 10 Tastern, 3 LED's für den DVB-Kartenstatus und 3 LED's für die optische Aufnahmeanzeige.
05.06.2010: Ein Update der Firmware konnte Dank UDEV-Regeln und einem Script vereinfacht werden

Einführung

USBControl ist eine Hardware / Softwarelösung für den PC, entwickelt für die problemlose Integration in ein VDR-System ( Linux Video Disk Recorder Software ). Da auch Treiber für Windows vorhanden sind, könnte USBControl z.B. auch zur Fernsteuerung eines PC's eingesetzt werden. Vorerst ist aber der Focus auf die Integration in die VDR-Software ausgerichtet. Ziel der Entwicklung ist es die bisher für diesen Zweck verwendeten unterschiedlichen Schnittstellen ( LPT , COM ... ) und Programme ( lcdproc,lirc,remote-plugin ... ) abzulösen und durch eine Schnittstelle ( USB ) und durch ein Plugin ( USBControl ) zu ersetzen.

USBControl besteht aus diesen Komponenten:

  • LCD Display
  • IR Fernbedienungsempfänger
  • Taster zur VDR-Steuerung
  • IR Einschalter
  • Status LED's
  • Uhrzeit / Timer / Wakeup
  • Microcontroller PIC18F4550 oder PIC18F2550 ( nachfolgend nur kurz PIC genannt )

Software

Die benötigte Software für USBControl besteht aus den Teilen / libusb / PIC-Firmware / Bootloader / vdr-usbcontrol.

libusb

  • Linuxtreiber(modul):
    Ein Linuxtreiber wird für USBControl nicht benötigt. Für die Kommunikation mit der USB-Schnittstelle wird die Library "usb" [libusb] verwendet, die in der Version 0.1.... auf allen gängigen Distributionen verwendet wird.

Lese/Schreibrechte sind für den entsprechenden Benutzer noch einzurichten: Benutzerrechte einrichten

Firmware

  • Firmware für PIC: Firmwareinfo USBControl
  • Die Firmware steuert die einzelnen USBControl-Komponenten und bietet eine einfache zu handhabende USB-Schnittstelle zur Kommunikation mit der PC-Software. Durch die Verwendung eines Microcontrollers der vom PC auch im ausgeschalteten Zustand ( Standby ) mit seiner Betriebsspannung versorgt wird, ist es möglich den VDR per Fernbedienung oder per Wakeuptimer einzuschalten. Durch die "Nanowatt"-fähigkeit des PIC18Fx550 wäre für die Zukunft evtl. auch ein Batterie/Akku gepufferter "Standby" denkbar, bei dem der PC vollständig vom Netz getrennt ist.

Bootloader

  • Firmware für PIC: Firmwareinfo USBControl
  • Einfache Updates der Firmware ermöglicht ein im PIC enthaltener USB-Bootloader dessen Arbeitsweise auf Sprut's Website www.sprut.de genauer erklärt wird und weil es bei Sprut die besten deutschsprachigen Informationen zu PIC-Microcontrollern gibt möchte ich mich dafür noch gesondert bedanken.

VDR - Plugin usbcontrol

  • VDR-Plugin usbcontrol:
    Alle Funktionen von USBControl werden in diesem Plugin zusammengefasst. Dabei soll das Plugin durch eine einfache, allgemein gehaltene Programmierschnittstelle ( die Bezeichnung API erscheint mir hier als "Überdimensioniert" ) weitgehend unabhängig von den verwendeten Hardwarekomponenten arbeiten.

Hardware

Hardwareinfo USBControl : Schaltung/Layout/Programmierung

Die Firmware des PIC übernimmt die direkte Steuerung der verschiedenen Hardware Komponenten. In der ersten Firmware-Version (0.1) wird dabei für jede Komponente nur genau ein Hardwaretyp unterstützt. Weitere Hardwaretypen könnten später hinzugefügt werden. Auch denkbar und möglich sind abgespeckte Hardware Versionen von USBControl ( z.B. ohne Display und/oder Taster )

  • LCD-Display:
    HD44780 kompatible Textdisplays mit bis zu 4 Zeilen.
  • IR-Fernbedienungsempfänger:
    Empfangsbaustein ist ein TSOP1736 oder TSOP1738. Implementiert ist vorerst der häufig anzutreffende RC5 Code ( z.B. Philips ). Die Tastenzuordnung wird wie gewohnt in der remote.conf als "UsbCtlIr.xxx" gespeichert und wird über den standardisierten Anlernmodus des VDR initialisiert. Eine gesonderte Anlernphase wie z.B. bei lirc ist nicht notwendig. Da die Tastencodes der Fernbedienung auch am LCD-Display angezeigt werden ( solange das VDR-Plugin usbcontrol noch nicht "Eigentümer" das Displays ist ) ist auch eine nachträgliche manuelle Änderung der remote.conf ein Kinderspiel.
  • Taster zur VDR-Steuerung:
    Immer wieder gibt es Probleme mit den Fernbedienungen. Mal ist die Batterie leer, mal streiken einige Tasten oder es geht nach dem "50. Falltest" auf den harten Boden urplötzlich gar nichts mehr. Wie gut wenn jetzt das Gerät auch noch ohne Fernbedienung steuerbar ist. Dazu reichen ein paar wenige in die Frontplatte integrierte Tasten : ( Menü,Ok,Exit,Auf,Ab ) ( Rot,Grün,Gelb,Blau ) und noch eine dazu um zw. diesen beiden Blöcken umzuschalten. Mit insgesamt nur 6 Tasten lässt sich der VDR problemlos und vollständig steuern und wem das nicht reicht, der kann die Tastatur auf bis zu 18 Tasten erweitern. Die Anlernphase der Tasten läuft dabei nach dem selben Prinzip ab wie auch schon bei der Fernbedienung, zur Unterscheidung werden die Tasteneinträge aber als "UsbCtlKey.xxx" in remote.conf gespeichert.
  • IR-Einschalter:
    Da im Standby des VDR die Schaltung weiterhin mit ihrer Betriebsspannung versorgt werden kann, bleibt der IR-Empfänger aktiv und kann somit den VDR durch die definierte Fernbedienungstaste eingeschaltet werden. Dazu wird einfach das zweipolige Kabel des PC-Tasters ( oft mit PWR-SW bezeichnet ) umgesteckt und über die USBControl Platine mit dem Mainbord verbunden.
  • Status LED's:
    Eine LED pro eingebauter DVB-Karte und eine "rote" LED pro laufender Aufnahme, zusäzlich noch eine LED wenn der VDR läuft und eine die mit der Fernbedienung flackert: Viele sinnvolle Einsatzmöglichkeiten sind denkbar um auf einfache Weise den Betriebszustand des VDR zu signalisieren.
  • Uhrzeit / Timer / Wakeup:
    Gerade die Wakeupfunktion bringt immer noch bei vielen Mainboards Probleme mit sich, es gibt dazu viele Anfragen in den diversen Foren. Deshalb bietet sich hier die Implementierung einer Uhr mit Wakeup- Timerfunktion in die Firmware des PIC an. Dabei wird die Uhr des PIC bei jedem Start des VDR auf die Uhrzeit des PC synchronisiert ( evtl. auch regelmäßig während der VDR Eingeschaltet ist - mal sehen was notwendig sein wird). Eine Anbindung an das DCF77 Zeitsignal wird wohl nicht notwendig sein. Das Bios des VDR sollte dann aber so eingestellt werden, dass der PC nach einem Stromausfall automatisch einschaltet und der VDR gestartet wird, damit die Uhr des PIC wieder synchronisiert werden kann.
  • PIC Microcontroller:
    Je nach Anzahl der verwendeten Tasten / LED's kann USBControl mit einem PIC18F2550 ( 28-Pin ) oder PIC18F4550 ( 40/44Pin ) bestückt werden ( preislich gibt es da keinen nennenswerten Unterschied ). Beide Typen können die selbe Firmware verwenden. Über das ICSP-Interface ( In-Circuit Serial Programming ) oder alternativ auch mit vielen EProm-Brennern muss einmalig die Bootloader-Software in den PIC geschrieben werden, die Firmware kann danach einfach über den USB-Bootloader aktualisiert werden.
Meine Werkzeuge