[Projekt] Arduatmo - Ambilight auf Arduino-Basis

  • Hallo,


    auch wenn die letzte Nachricht in diesem Thread schon etwas her ist hoffe ich, dass das der richtige Ort ist für meine Frage.
    Ich habe nun einen WS2812B Stripe, den ich an einem Arduino UNO (hat einen CH340G Konverter) zusammen mit dem Seduatmo Plugin meines VDR betreiben möchte. Meinen Sketch kann man hier einsehen: https://pastebin.com/Gn7m1VgZ
    Also "program" habe ich "10" (police_lightsALL) ausgewählt. Wenn ich den LED Stripe an den Arduino anschließe beginnt ein Grün/Blaues Lauflicht zu laufen.
    Im Linux des VDR taucht das Gerät als /dev/ttyUSB0 auf. Ich habe einen symlink von /dev/ttySEDU darauf gelegt und die Rechte so gesetzt, dass der VDR auf das Device zugreifen darf. Wird das Plugin gestartet, kann es sich erfolgreich mit dem Device verbinden:


    Code
    1. Mar 29 20:34:46 vdr vdr: SEDUATMO: Opening '/dev/ttySEDU' succeeded!



    Solange im Plugin der Modus "Detached" ausgewählt ist läuft das default-Programm, also das Lauflicht. Sobald ich einen beliebigen anderen Modus auswähle werden ALLE LEDs dauerhaft rot. Schalte ich wieder auf "Detached" läuft wieder das Lauflicht los.


    Hat jemand eine Idee was da falsch läuft? Die Kommunikation scheint ja grundsätzlich zu funktionieren, die Frage ist nur: Warum werden alle LEDs rot anstatt anzuzeigen, was man im jeweiligen Modus erwarten würde?


    Viele Dank im Voraus für Eure Tips!



    Viele Grüße,
    Stephan

  • Viele Dank im Voraus für Eure Tips!


    Eventuell wegen der Zeile


    Code
    1. oneColorAll(255,0,0);


    oder


    Code
    1. default: oneColorAll(0,0,255); break;


    Kann sein, dass was bei der Kommunikation schief läuft und dann default eintritt. Mit Arduinos ohne FTDI hatte ich damals auch kein Glück so richtig.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Ja, es scheinen tatsächlich die oneColorAll Zeilen zu sein, wegen denen der Strip rot leuchet. Wenn ich den ändere, ändert sich auch die Farbe.


    Ich habe mal /dev/ttySEDU als normale Datei angelegt und somit mitgeschnitten was das Plugin so an den Arduino sendet. Dann habe ich die Baudrate auf 115200 gesetzt und debugging aktivert, den Arduino neu bespielt und direkt an meinen Rechner angeschlossen. Dann eine Serielle Konsole aufgemacht und die zuvor mitgeschnittenen ttySEDU
    Daten dort hingesendet (cat ttySEDU > /tmp/ttyUSB0). Interessanterweise werden vom Arduino (sichtbar in der seriellen Konsole) nicht alle Daten _so_ empfangen, wie sie in der ttySEDU Datei stehen! Der Anfang stimmt, aber dann werden z.T. andere Werte empfangen als gesendet! Vor allem nicht nur andere, sondern MEHR Daten. Dadurch tritt dann ein Fehler auf, weil vor dem erwarteten End-Byte zu viele Daten kommen. Es kommen auch nicht immer die gleichen Daten an....Alles sehr merkwürdig. Evtl. ist das tatsächlich ein Problem, weil es kein FTDI konverter ist. Allerdings hatte ja jemand hier im Forum geschrieben, dass es mit seinem CH240G (den ich auch habe) funktioniert, daher hatte ich Hoffnung... Ein anderer Arduino UNO von mir hat einen atmel atmega16u2 als Konverter, mit dem es allerdings leider auch nicht klappt. :-(



    Viele Grüße,
    Stephan


    TheChief : Der Originalcode ließ sich übrigens weder mit der aktuellen Arduino GUI noch mit Atom / PlatformIO kompilieren. Ich habe damit das funktioniert in meinem Sketch alle Funktionen ganz oben deklariert, erst damit klappte es mit Atom. Mit der aktuellen Arduino IDE klappt es nach wie vor nicht, da verstehe aber irgendwie die Fehler auch nicht. :-/ Evtl. wäre es schön, wenn Du den code im Repository mal aktualisierst, so dass auch Neueinsteiger eine Chance haben und Leute ohne große Programmierkenntnisse nicht gleich vor ner unüberwindbaren Hürde stehen ;-) Danke für das coole Projekt, ich hoffe ich bekomme das auch mal ans laufen :-/

  • Hi Wolle,


    danke für den Tip, allerdings habe ich gelesen, dass das boblight Plugin die CPU _deutlich_ stärker belastet als seduatmo, deshalb versuche ich die boblight variante zu vermeiden...



    Viele Grüße,
    Stephan

  • Seit dem mein Ambilight läuft, habe ich nicht mehr viel am Code gemacht. Werde demnächst, wenn es mal wieder regnet, meine Arduino IDE auf den aktuellsten Stand bringen und dann den Code aktualisieren.


    Zum aktuellen Problem kann ich momentan nichts sagen. Ich kann Dir nur meine Erkenntnisse berichten, bei denen es nur mit dem FTDI Konverter problemlos lief.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hi,
    FTDIs funktionieren auch in anderen Bereichen wie Astro am Besten.


    MfG,
    Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Na, dann werde ich mal nach nem FTDI Ausschau halten. Das Problem ist aber wohl wie ich las, das man da momentan mit ziemlich hoher Wahrscheinlichkeit nen gefälschten Chip bekommt, der bei hoher Taktung Probleme mach. Daher hatte ich gehofft das mit nem anderen Chip hinzubekommen, aber das scheint ja nicht zu funktionierren. Versuch ich mal mein Glück mit FTDIs ;)

  • So, ich hab in meiner Grabbelkiste tatsächlich noch einen USB-RS323 Adapter gefunden mitnem FTDI Chip. Die Frage, die ich mir nun stelle ist: Kann ich überhaupt nen externen Adapter an den Arduino anschließen, während der einen onboard adapter drauf hat? Die RX und TX Pins die nach Außen geführt werden werden schon mit 5V vom onboard Adapter gespeist... Habt ihr da Erfahrungen mit?



    Viele Grüße,
    Stephan

  • Sollte schon gehen:


    Quote

    Serial. It communicates on digital pins 0 (RX) and 1 (TX) as well as with the computer via USB. Thus, if you use these functions, you cannot also use pins 0 and 1 for digital input or output.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • TheChief : Der Originalcode ließ sich übrigens weder mit der aktuellen Arduino GUI noch mit Atom / PlatformIO kompilieren. Ich habe damit das funktioniert in meinem Sketch alle Funktionen ganz oben deklariert, erst damit klappte es mit Atom. Mit der aktuellen Arduino IDE klappt es nach wie vor nicht, da verstehe aber irgendwie die Fehler auch nicht. :-/ Evtl. wäre es schön, wenn Du den code im Repository mal aktualisierst, so dass auch Neueinsteiger eine Chance haben und Leute ohne große Programmierkenntnisse nicht gleich vor ner unüberwindbaren Hürde stehen ;-) Danke für das coole Projekt, ich hoffe ich bekomme das auch mal ans laufen :-/


    Also bei mir lässt es sich kompilieren (Arduino IDE 1.8.1), ohne dass ich die Funktionen deklarieren muss. Gab nur ein paar Warnings:


    Code
    1. .../tpm2arduino/tpm2arduino.ino:12:0: warning: "SERIAL" redefined
    2. #define SERIAL Serial // Serial port for communication
    3. ^
    4. In file included from sketch/tpm2arduino.ino.cpp:1:0:
    5. /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:54:0: note: this is the location of the previous definition
    6. #define SERIAL 0x0
    7. ^
    8. In file included from .../tpm2arduino/tpm2arduino.ino:3:0:
    9. .../Documents/Arduino/libraries/FastLED-3.1.3/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.003
    10. # pragma message "FastLED version 3.001.003"


    Arduino GUI oder Atom / PlatformIO kenne ich nicht, daher kann es schon sein, dass da was anders gehändelt werden muss.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Es läuft nun bei mir. Ein paar Hinweise dazu von mir für Leute die es nachbauen wollen:


    • Den Sketch habe ich hier geladen: https://github.com/TheChief79/tpm2arduino
    • Ich habe die aktuelle Arduino IDE (1.8.2) auf dem Mac verwendet, da ich mit der Atom IDE o.g. Fehlermeldungen erhalte.
    • In das Arduino Library Verzeichnis ( ~/Documents/Arduino/Libraries ) habe ich die Version 1.4 von Adam Dunkels Protothreads Library (http://dunkels.com/adam/pt/download.html)in ein eigenes Unterverzeichnis entpackt
    • Aus diesem Ordner habe ich alle example* Dateien gelöscht, da diese nicht mit der aktuellen Arduino IDE zusammenarbeiten wollen und dieser daher beim Kompilieren einen Fehler wirft.
    • Ich habe einen Arduino Nano verwendet (http://www.ebay.de/itm/271513578559?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT ). Dieser hat einen FTDI FT232RL USB-Serial converter drauf.
    • Es muss jedoch nicht zwingend ein Arduino mit FTDI Chip sein. Wie ich durch tests herausfand funktioniert ein Arduino UNO mit CH340G Konverter Chip ebenfalls sehr gut. Der atmega16u2 als USB-Seriell Konverter funktionierte zunächst auch gut machte aber - zumindest bei mir - nach einiger Zeit Probleme (Device ließ sich nicht mehr ansprechen).
    • Damit der Zugriff auf den USB Konverter auch ohne Root Rechte funktioniert habe ich folgende udev-rule definiert:
      KERNEL=="ttyUSB?", OWNER="vdr", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="ttySEDU"
    • Ich verwende 181 WS2812B LEDs. Zunächst bekamen die ihre 5V nur vom USB Port des Arduino. Dabei stellten sich jedoch komische Effekte ein. So z.B.: Kleine helle (nahezu weisse) Flächen am Bildschirmrand führen zu schönen ebenfalls nahezu weiß leuchtenden LEDs. Handelt es sich jedoch um eine größere fast weiße Fläche (z.B. eine Landschaftsaufnahme mit sehr hellem Himmel) so leuchten die entsprechenden LEDs nicht mehr weiß, sondern stets rötlich orange. Zudem stieg nach längerer Benutzung z.T. auch der Arduino aus und war nur durch einen reset wieder zum leben zu erwecken.
      Die Lösung war dann die LEDs über eine separate, leistungsfähigere Stromquelle anzusteuern (wobei Ground mit dem Arduino geteilt sein sollte). Nach TheChiefs Tip habe ich mir die 5V von einem freien DVD/HDD Molexstecker meines VDR-Mainboards geholt. Damit ist der orangestich bei großen weißen Flächen weg und auch insgesamt leuchten die LEDs gefühlt etwas heller.


    Was ich noch nicht so ganz durchblicke sind die vielfältigen Einstellungsmöglichkeiten im Seduatmo Plugin des VDR. Kennt jemand für diese eine gute Beschreibung?



    Viele Grüße,
    Stephan

    The post was edited 3 times, last by sboldt: Erkenntnisse zu verschiedenen USB-Seriell Konverterchips hinzugefügt. Erkenntnisse zum Anschluss externer Stromversorgung an die LEDs vs. direkt vom Arduino bezogen hinzugefügt ().

  • Bei mir lässt sich die RGB Reihenfolge nicht ändern, egal was ich anstelle.
    Früher unter einer alten easyvdr hatte das mal funktioniert.
    Nun kann ich nichts mehr ändern, im OSD steht immer RGB und das wird auch benutzt, egal was in der setup.conf eingestellt ist.


    Auf der Seite des Plugins findet sich bei den letzten Revisionen:


    Code
    1. Merge branch 'dev'
    2. dev:
    3. code review
    4. added individual RGB order to seduatmo.conf
    5. added individual RGB order to seduatmo.conf


    Meine durch das perl-script erstellte .conf beinhaltet aber kein RGB Order.
    Bin gerade etwas ratlos.

  • Konnte man aber, soweit ich mich erinnere, auch im Sketch selbst ändern:


    Meine in der Zeile:


    Code
    1. FastLED.addLeds<WS2811, DATA_PIN, RGB>(data.rgb, NUM_LEDS);


    In:

    Code
    1. FastLED.addLeds<WS2811, DATA_PIN, GBR>(data.rgb, NUM_LEDS);


    Oder:

    Code
    1. FastLED.addLeds<WS2811, DATA_PIN, BRG>(data.rgb, NUM_LEDS);


    Ich verwende 181 WS2812B LEDs. Auch wenn der Spanungsregler des Arduino Nano schon sehr heiß wird kommt der ganze Saft ausschließlich vom USB Port meines VDR. Ein separates Netzteil habe ich derzeit nicht angeschlossen.


    Hauptsache Du lässt nicht die gesamten Strom durch den Arduino wandern. Dann hält er sicher nicht lange. Würde dennoch so verkabeln, wie im PDF im ersten Thread, nimmst halt die 5V vom Netzteil des PC, hatte ich anfangs auch mal so und 5V an einem Molex Stecker abgezweigt.


    Was das Plugin angeht, such mal hier im Forum. Da gabs es sicher auch den ein oder anderen Thread zu.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo TheChief,

    Hauptsache Du lässt nicht die gesamten Strom durch den Arduino wandern. Dann hält er sicher nicht lange. Würde dennoch so verkabeln, wie im PDF im ersten Thread, nimmst halt die 5V vom Netzteil des PC, hatte ich anfangs auch mal so und 5V an einem Molex Stecker abgezweigt.

    Vielen Dank für den tollen Tip mit dem Molex Stecker. Mit diesem sind nun alle meine bisherigen Probleme (inkl. der rötlichen weißen Flächen) weg und ich spar mir ein separates Netzteil. Top-Tip! :-)



    Viele Grüße,
    Stephan

  • Habe ich auch so gemacht.
    Bei mir ist der Arduino im Gehäuse verbaut und hängt an einem internen USB-Header.
    Die Versorgung für die LED Streifen und die Daten/Clock Leitung werden mit einer Klinkenbuchse und 2 Bananenbuchsen bereitgestellt.
    diese habe ich in ein Slotblech verbaut.


    TheChief :


    funktioniert nach Änderung im Sketch.
    Trotzdem kurios das es im OSD nicht mehr verstellbar ist.

  • Hm, weiß auch nicht. Müste mal probieren, ob es bei mir geht. Hatte mein Plugin ja modifiziert, um auch die Effekte schalten zu können. Könnte ich mal hochladen, wenn ich Zeit finde.


    Für die Datenleitung/GND hatte ich mir ja auch einen Stecker an den Arduino gelötet. Strom bekommt der ja über USB. Die LED Streifen werden bei mir von einem externen Netzteil gespeist. Muss aber an einer Stelle nochmal nachlöten, manchmal flackern meine LEDs oder einzelne leuchten auf.


    Aber schön, dass es bei Euch läuft und das Projekt noch immer genutzt wird. :)

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Solange im Plugin der Modus "Detached" ausgewählt ist läuft das default-Programm, also das Lauflicht. Sobald ich einen beliebigen anderen Modus auswähle werden ALLE LEDs dauerhaft rot. Schalte ich wieder auf "Detached" läuft wieder das Lauflicht los.


    Hat jemand eine Idee was da falsch läuft? Die Kommunikation scheint ja grundsätzlich zu funktionieren, die Frage ist nur: Warum werden alle LEDs rot anstatt anzuzeigen, was man im jeweiligen Modus erwarten würde?

    sboldt  
    so weit bin ich jetzt auch, wie hast du dieses Problem lösen können?


    @all
    Frohe Ostern! :]

    easyVDR-1: Kontron KTQM77mITX, i7-3520M, 8GB DDR3, Asus NVIDIA GT 630 Rev. 2, DD Octopus LE Bridge 2x DuoFlex v2, Noritake GU256x64D-3900B VFD
    yaVDR2: Kontron KTQM67mITX, i7-3520M, 4GB DDR3, Asus NVIDIA GT 630 Rev. 2, Noritake GU256x64D-3900B VFD, SAT>IP
    yaSRV6: bcm MX3150N, Pentium N3700, 4GB DDR3, ZOTAC GeForce GT 730 1x PCI-E, Sat>IP, Noritake GU256x64-372 VFD
    SAT>iP: DD Octopus NET V2, Max A8, in Nexcom Nise 101 Gehäuse, semipassiv gekühlt

  • Na ich denke mit einem anderen Arduino.


    Und:

    Code
    1. int program = 0;


    im Sketch.


    Ebenso Frohe Ostern!


    EDIT: Achos, und die beiden oneColorAll Zeilen, siehe oben, auf:


    Code
    1. oneColorAll(0, 0, 0);

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    The post was edited 2 times, last by TheChief ().