AW: [Vorstellung] Ambilight für PC
Deinen Vorhaben ist nichts entgegen zu setzen, du hast lediglich die Falsche Plattform und das falsche Grundwissen über einen Raspberry PI
Fangen wir mal von vorne an, der PI wurde zu Schulungszwecken entwickelt als günstiger Einplatinen Computer auf Linux basis, Zielgruppe waren Schüler von 9-12 Jahren, die GPIO sind als Goody ne Zugabe um simpelste Steueraufgaben zu erledigen und den Kids eine "relativ" Hardware nahe Programmierumgebung zu Simulieren über Python ( vorteil ist das es ähnlich wie C++ ist ) das ding hat sich halt als leistungsfähig rausgestellt und wurde beliebt unter Bastlern. Es bleibt aber nen nen Schulung Rechner der für komplexere Steuerungen nicht ausgelegt ist, es geht aber über verdammt viel umwege und der PI ist dann für nix anderes mehr zu gebrauchen, also voll am ziel vorbei geschossen weil es genau dafür bessere günstigere Lösungen gibt. Nämlich reine Echtzeit Mikrocontroller, als bsp Arduino´s von 8 bit 64Bit, PIC Controller, und neu aufm Markt die ESP8266.
Diese Teile gibts als einzelnen Microprozessor zu kaufen, oder als quasi Experimentier Kit auf einer Platine samt Stromversorung und Anbindung an die Pins, sowie einem Seriel2Usb Controller um die Teile über USB Programmieren zu können, um den einzelnen Chip zu programmieren braucht man einen sog. ISP Controller ( In System Programmierung, sehr mächtiges Tool, damit kann ich z.b zerschossene Bios neu programmieren oder durch Firmware zerschossene Geräte Reparieren, oder aus der Hardware einer Kaffemaschine zu nem LED Controller bauen )
Und das ist sowas was du willst und brauchst, programmiert werden die üblicherweise in der Arduino IDE Programmierumgebung deren Basic ziemlich C++ gleicht.
In meinem fall greife hier sehr gerne auf die Arduino Mega und Nano zu wenn ich ne direkte USB bzw Serielverbindung brauch oder das Gerät als Standalone agiert , ein Anwendungsbeispiel : Ich baue daraus Controller für 3D Drucker und CNC Steuerungen, man kann daraus auch USB Peripherie bauen, wie Tastatur, Maus, Touchscreen, einfach alles was mit USB geht.
Wenn ich Controller mit Wlan oder Bluetooth brauche wie jetzt bei dem Ambilight womit meine ganze Wohnraum Beleuchtung gesteuert werden kann dann greife ich zu einem ESP8266, der ist extrem leistungsfähig und kost nen Appel und Ei, und das richtig schöne ist er ist von der Programmierung zu 100% Kompatibel zum Arduino, man kann also nach Anpassung auf die Pinbelegung sogar die Programme vom Arduino auf den ESP8266 laden. Zudem sind beide Controller auch Pinkompatibel untereinander ( d.h man kann auf nen Arduino nen ESP8266 als Slave setzen und dessen Wlan nutzen, oder z.b nen Arduini auf den ESP als Slave um z.b 8PWM ausgänge mehr zu nutzen, das ganze wird über I2C Realisiert, und man kann das gleiche mim PI machen, man kann auf den PI nen Arduino als Slave setzen und dessen Hardware PWM fähigkeit nutzen. In deinen fall aber unbrauchbar weil man dazu sich gut auskennen muss, und es dauert zu lang bis du nen Ergebnis hin bekommst als quer einsteiger.
Für Arduino und co findest auf Github alle erdenklichen (grund)Programmcodes auch fürs Ambilight oder generell zur Ansteuerung von LED´s
Mein Aufbau besteht eigentlich größtenteils nur aus Slaves im Netzwerk. Der ist wie folgt, wie gehen mal vom Ambilight am PC aus
PC ( Streamt per Nvidia Shield Technik ) --> Raspberry PI ( Hier laufen 2 Hyperion instanzen, eine Instanz Analysiert die Bilddaten ( und zwar direkt aus dem Grafikspeicher vom PI daher brauch es keine wirkliche Rechenpower da die daten schon da sind man muss sie nur aus dem Datenstrom rausfischen wenn sie aus dem Speicher abgefragt werden, damit reduziert man dann auch den Zugriff auf den Speicher
) nachdem aus den Bilddaten die Ambilight daten gewandelt wurden werden sie statt auf den GPIO per Json und Proton Weiterleitung über bestimmte Ports auf die 127.0.1 Home IP( Json sind die LED Daten Proton die Bilddaten ), hier wartet jetzt die Zweite Hyperion Instanz und fragt die Ports ab an welche die erste Instanz die Daten senden, die zweite Hyperion Instanz vereint die Json und Proton zu einem Datensatz und sendet sie über UDP Broadcast, und hier warten dann meine ganzen Wlan LED Controller als Slaves um die Daten entgegen zu nehmen, die errechnen dann alles Weitere und Steuern die LED´s direkt an.
Vorteil von der Config ist eben das ich kein definierten Server hab, sondern eben auch jeden einzelnen Slave übers Hand, Pc, Server, TV, steuern kann, die einzige vorraussetzung die man brauch, man muss HTTP webseiten aufrufen können, da auf jeden Slave nen Webserver Läuft, inklusive FTP Server mit 4Mb Ram um z.b programmierte Effekte auf den Controller zu laden und dem Slave dann zu sagen "spiele Programm 1 ab"
Wie man merkt ich plane gern im Vorraus vorallem mag ich es wenn man Systeme erweitern kann und nicht unbedingt an irgendwas zwingend gebunden ist. Noch ein kleiner Vorteil von meinem System, es ist 100% Kompatibel zu nahezu jeden Hausautomatisierungsystem das momentan auf dem Markt ist, ist also kein Problem das ganze so einzubinden das die Helligkeit vom Ambilight abhängig von der Umgebungshelligkeit ist, oder von der Tageszeit, oder das es Automatisch ausgeht wenn keiner im Raum ist, oder das es erkennt das du eingeschlafen bist und das Licht dimmt, oder oder oder ( das sind alles dinge die ich schon experimentell probiert hab )
Hier mal 2 Bildchen von 2 Digital LED Controller die ich gebaut hab, sind beides Prototypen
Der Eine ist ein Arduino der Eigenständig Läuft und per Knopfdruck Effekte Abrufen kann ( per USB kann man effekte Hochladen ) das nen Protoyp für eine LED Weihnachtsbeleuchtung mit 500 WS2811 und bis zu 250 WS2812b die in 4er Cluster jeweils ein Kerzenlicht Imitieren können. Steuern tut sich das Teil eigenständig per Fotodiode misst es die Helligkeit und Dimmt bei Abenddämmerung das Licht langsam parallel zum Sonnenuntergang Hoch, und Morgens bei Dämmerung wird das Licht parallel zum Sonnenaufgang runtergedimmt und Ausgeschalten, die LED´s für die Kerzen werden nicht gedimmt die werden erst eingeschalten wenn es Dunkel ist und gehen aus sobald es Hell ist. Kerzen dimmen sieht ja Blöd aus
Das ganze hat nen Einstellbaren DC DC Wandler mit Überlastungs, Überspannungs und Kurzschluss Schluss, der kann von 5-36V alle Spannungen annehmen und gibt exakt die gewünscht eingestellte Spannung aus, bis maximal 5 Ampere.
Kostenpunkt für den ganzen spass an Material 8€. Nen Pi wäre da schon hoffnungslos überfordert Softwareseitig. Obwohl der Arduino nur 8bit und 16mhz hat.
Das Nächste ist der Prototyp von dem Ambilight Wlan Controller den ich für den TV gebaut hatte an dem auch mein PC hing, also jenes Teil was ich beschrieben hab.
Verbaut ist hier nen ESP8266 ( AmicaLUA Modul ) ein SN74HC595 Shift Register den ich als Highspeed Pegelconverter benutze ( diese billig dinger auf auf Transitor basis wie der TE Verbaut hat sind meist so träge und lahm das sie das Timming nicht schaffen, damit baut man sich nur Fehlerquellen in die Schaltung deswegen macht man sowas grundsätzlich nicht ) lieber die 20 cent mehr ausgeben, außerdem hat man dann gleich Sperrdioden in der Schaltung und schützt grundsätzlich den Mikrocontroller, wobei wenn es um Schutz geht baut man ne galvanische Trennung mit ein in form von nem sehr schnellen Optokoppler, sehe ich und die VDE hier aber nicht als zwingend nötig bei den strömen die hier fließen können.
Das ganz kleine ding ist ebenfalls ein ESP8266 genau das gleiche wie der AmicaLUA nur das er lediglich 2 PWM Ausgänge und 2 Eingänge besitzt, dieses mini Teil nennt sich Wimeos D1 die kommen bei mir zur Digital LED Steuerung für die Wohnraum Beleuchtung zum einsatz, passt in jede Unterputz Dose wo vorher ein Lichtschalter war z.b an die Eingänge kommt ein Taster zum ein und aus schalten, oder ein PIR Sensor der erkennt ob ein Mensch im raum ist, oder oder.
Bei meinen Prototypen nehm ich tatsächlich gesockelte Module, bei den Fertigen Teilen mach ich auch die Leiterplatinen und die Schaltung komplett selbst und arbeit dann auch mit den einzelnen bauteilen und nicht mehr mit modulen. Von Breadboards halt ich garnix ehrlich gesagt. Die haben Teilweise übergangswiederstände zwischen gut und böse für meine zwecke unbrauchbar, daher löt ich prototypen auf Lochraster Platinen.