Freitag, 26. Juli 2013

Autonomous Light Controller - The FPGA Ambilight clone?

Wie angekündigt möchte ich hier nach und nach mehr Details über mein Projekt verraten. Dem aufmerksamen Leser ist sicher bereits schon aufgefallen, dass die Verlinkungen (Tags) zu den Posts in Kategorien fallen, in denen sich bereits kleine andere Projekte befinden.
Beispielsweise verwende ich als Mikrocontroller-Basis mein XMega-Evaluation-Board.
Genauer gesagt wurde dieses genau für diesen Zweck erstellt...

Letztendlich handelt es sich um eine Grundschaltung für den XMega und diversen Schnittstellen um das Board mit der anderen Peripherie anzubinden. Der Schaltplan ist im Bild rechts zu sehen. Ein Layout gibt es hierfür nicht, da das ganze auf Lochraster aufgebaut ist (Bilder unten).

Den Schaltplan (Eagle) zu dem Board ist auf GitHub Verfügbar...

Die Aufgaben dieses Boards sind die folgenden:

  1. Steuerung aller weiteren Komponenten wie dem FPGA-Board und dem Signalprozessor.
  2. Kommunikation und Steuerung der Beleuchtungsanlage (Fnordlichter oder LED-Stripes).
  3. Kommunikation per USB/Bluetooth mit externen Komponenten oder dem Anwender (TTY)
  4. Power- und Videosignal-Management.
  5. Empfang und Aufbereitung der bereits durch den FPGA vorbereiteten Bilddaten.
  6. Übertragung der vom FPGA empfangenen Bilddaten per USB oder Bluetooth.
Die Software auf dem Chip besteht aus einer in C geschriebenen Firmware welche alle Aufgaben aus der Liste oben. Der größte Teil der Implementierung entspricht einer TTY-Emulation für die Interaktion mit dem System.
Per TTY können verschiedene Konfigurationseinstellungen vorgenommen und Systemtests durchgeführt werden.

Das folgende Video zeigt den Zugriff auf das System bzw. auf verschiedene Register des Signalprozessors per I²C. Das Terminal enthält eine ausführliche Online-Hilfe und erlaubt, neben dem vollem Systemzugriff, zudem die Steuerung der Beleuchtung. Der Controller kann damit auch anderweitig verwendet werden.
Eine wesentlich maschinenlesbare Variante der Kommunikation ist in Arbeit.
Das Video soll schlicht demonstrieren, dass so eine Schnittstelle existiert und verwendet werden kann. Als einfacher Anwender kommt man damit nicht in Berührung. Damit wäre die Usability sonst komplett unmöglich...


Wie in der Auflistung oben bereits erwähnt (Punkt 6) ist das System zudem in der Lage die Bild-Rohdaten, welche vom FPGA erzeugt werden, per USB oder Bluetooth auszugeben. Hierzu ist das Tool "FrameView" entstanden. FrameView verwendet unter anderem SDL, ist plattformunabhängig und als Linux-Binary gerade mal 14kb groß.
Das folgende Video zeigt die Applikation in Aktion. Das Bild des Desktops wird dabei per VGA->CVBS-Adapter in den AmbiController geleitet, automatisch ausgewertet, und das Ergebnis per USB an die FrameView-Anwendung weitergeleitet, welche das aktuell ermittelte Bild in dem kleinen Fenster links darfstellt. Das Größere Fenster ist Video mit einem ein einfachen Farbtest. Das Ganze stammt aus den Anfängen der Entwicklung. Daher ist das Ergebnis noch sehr sehr pixelig.
Das Protokoll an dieser Stelle ist recht proprietär und nur zu Debug-Zwecken gedacht, da diese Ausgabe zudem die Framerate drückt. Um Bandbreite bei der Datenübertragung zu sparen werden hier immer nur Änderungen übertragen. 


Damit erstmal genug für heute und viel Spaß beim Video schauen...

Mittwoch, 17. Juli 2013

Erstes Update - Autonomous Light Controller

In den letzten Wochen habe ich einige Emails bekommen, darunter Spam, einige mit sehr verdächtiger und dubioser Formulierung und andere wirklich sehr nette. Das Projekt scheint also, ich mir auch steigenden die Besucherzahlen auf diesem Blog ansehe und Eure Suchbegriffe bei dem großen Suchmaschinenanbieter ansehe, ein gewisses Interesse geweckt zu haben. Das freut mich natürlich!

Leider muss ich alle Interessenten enttäuschen, da dieses Gerät momentan nur als Prototyp vorhanden ist. Von einer Verbreitung ist zudem abzusehen. Daher habe ich mich dazu entschlossen in der kommenden Zeit die Schaltpläne, Software, Hardware-Synthese etc. als OpenSource/-Hardware zu veröffentlichen. Und wenn die Zeit dafür gekommen und mir verfügbar ist, eine kurze Dokumentation dazu schreiben wie das System arbeitet und aufgebaut ist.

Das Bild oben zeigt den aktuellen Prototyp. Ein weiterer Prototyp, welcher nicht mehr aus 7 (in Worten sieben) vernetzten Lochrasterplatinen und mehreren hundert Metern Kupferlackdraht besteht, ist in Arbeit. Dieser wird nur noch aus einer kleinen 4-Layer Platine, mit an die 180 "0403" SMD-Bauteilen (als Hinweis an diejenigen die nun auf einen Bausatz oder ähnliches hoffen), bestehen.

Sobald der neue Prototyp (Bild vom unvollständigen Layout links) bestellt, geliefert und aufgebaut wurde, fängt die eigentliche Arbeit mit diesem erst wirklich an. Die Firmware muss angepasst werden, neue Hardwarekomponenten in Betrieb genommen, Messungen durchgeführt müssen werden, (hoffentlich
keine) Korrekturen vorgenommen werden und sehr viel Zeit damit verbracht werden, das neue System (mindestens) auf den Stand.

Es ist viel zutun!

 

Hier noch ein paar Fragen und Antworten aus den Emails:
  • Verkaufen Sie das Gerät/Bausätze/etc.? NEIN 
  • Wird das Gerät auch HDMI und HDCP verarbeiten können? Über einen HDMI zu Composite-Wandler und einem zusätzlichen HDMI-Splitter (wird beides beispielsweise von der Firma Ligawo angeboten) ist es möglich auch digitale Medien mit dem Gerät zu verarbeiten. Da es jedoch am Markt HDMI-Chips gibt wäre dies im neuen Prototyp theoretisch möglich, HDCP steht auf einem anderen Blatt.
  • Funktioniert das Gerät auch mit anderen TV-Größen als 32 Zoll? Ja das ist definitiv möglich und bereits vorbereitet.
  • Wie steht es mit der Benutzerfreundlichkeit? Das System wird mit dem Video-Signal und mit einer Stromquelle verbunden. FERTIG. Es schaltet sich selbstständig ein und aus, und kann per Bluetooth oder USB bzw. mittels einer Android-App konfiguriert werden (wenn überhaupt nötig).
  • Wieso sind die Ecken auf dem Video schlechter ausgeleuchtet und wird das noch verbessert? Das liegt zum einen an der Art wie die LED-Streifen angebracht wurden. Und zum anderen reichen diese in meinem Fall nicht bis in die Ecken. Verwendet man entsprechend längere Streifen kann die Beleuchtung lückenlos aufgebaut werden.
  • In einem der letzten Videos scheint die Beleuchtung nicht synchron zu dem dargestellten Bild zu sein, wird das noch behoben? Richtig, die Beleuchtung ist nicht synchron. Meine Hardware berechnet die anzuzeigenden Farben schneller und zeigt diese auch früher an als der TV das dazugehörige Bild darstellt. Daher kann die Verarbeitungsgeschwindigkeit, Software-seitig und zur Laufzeit vom Anwender, individuell angepasst werden.
  • Wie schnell ist das System denn wirklich? Es verarbeitet alle empfangenen Bilder des Eingangssignals zur Laufzeit, ohne Verluste.
  • Wieso werden die Farben in den vorherigen Videos falsch dargestellt? Da ich all meine finanziellen Mittel in das Projekt stecke, besitze ich leider ausreichend gute Videokamera und verwende mein Smartphone für die Aufnahmen. Daher ist die Qualität auch dementsprechend "hochwertig".
  • Kann ich dann mein HDMI-Kabel durch das Gerät durchschleifen? Nein, siehe oben.
  • Was kostet das System? Die Materialkosten belaufen sich (inklusive aller Prototypen) auf einen gerade noch 3-stelligen Betrag. Die Arbeitszeit innerhalb der fast 3 Jahre die ich an dem System arbeite nicht mitgerechnet. 
  • Wieso mache ich mir den Aufwand und kaufe mir nicht einfach ein Gerät das das schon kann? Weil ich es kann, Spaß daran habe die Probleme zu lösen, meine Hardware ist besser, in dieser Form hat das noch keiner geschafft (verschiedene haben es versucht)... es gibt viele Gründe, aber warum hat man ein Hobby?

UpConverter fixed

Vor einiger Zeit berichtete ich darüber das mein Versuch einen UpConverter für mein rad1o zu bauen leider fehlgeschlagen ist. Es lag an der...