OpenElec + Hyperion, Leds zeigen unerklärbares Verhalten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen!

    Ich habe ein Problem damit meinen LED Streifen WS2801 anzusteuern. Da ich die letzten Tage schon daran herumbastle und mir das Ergebnis nicht erklären kann, hoffe ich das vielleicht hier jemand eine Lösung weiß bzw. zumindest noch eine Idee hat. Probiert habe ich schon einiges, deshalb hier mal kurz zusammengefasst:

    Der ursprünglicher Plan war es, mit OpenElec und Hyperion meinem TV ein Ambilight zu spendieren. Nach der Installation und dem Zusammenbau war ich aber enttäuscht. Die LEDs blinken wie wild in allen möglichen Farben. Im Menü bleiben die Farben dann weiß (habe in der Config die Option Menu off gestellt). Läuft ein Video beginnen sie dann wieder zu blinken.
    In der Config habe ich zum Test 20 Leds eingestellt, es leuchtet aber ein andere Anzahl, meist 7 oder 8.
    Mein erster Gedanke war dann, vielleicht liegt es an der Spannung worauf hin ich mit die Pufferschaltung aus der Hyperion Wiki hinzugefügt habe. Damit konnte ich das blinken beheben, die Leds leuchten danach aber alle weiß - egal bei welcher Bildausgabe. Die Anzahl der Leds stimmte außerdem noch immer nicht mit der aus der Config überein
    Im nächsten Versuch - um Kontaktprobleme auszuschließen ging ich weg vom provisorischen Aufbau am Steckbrett und verlötet alles, machte die Verbindung mit Steckern, etc. Auch das brachte keinen Erfolg. Die Farben stimmen nicht, es leuchten nur die ersten Leds aber viel weniger als eingestellt.

    Als ich dann x mal die Config Datei veränderte und sich keine Verbesserung zeigte dachte ich mir, ich gehe mal eine Schritt zurück. Um die Funktion der Leds und des SPI Pins zu testen nutzte ich die SpiDev Library unter Raspbian. Der Test zeigte mir, dass ich über die SPI Schnittstelle senden und empfangen kann. Den Clock konnte ich leider nicht testen.
    Ein einfaches Python Skript, dass ich im Netz gefunden habe um die Leds anzusteuern funktionierte - aber wie schon Hyperion auch nicht richtig. Das Skript ermöglicht die Eingabe einer Anzahl an LEDs und mit welchem RGB Farbwert diese leuchten sollen(alle gleich). Angesteuert werden aber immer weniger Leds als im Skript angegeben, außerdem stimmt die Farbe nicht - die Leds leuchten immer sehr hellblau bis weiß.

    Kann mir jemand einen Tipp geben was ich noch testen könnte bzw. wo der Fehler liegen könnte? Als Netzteil für die Versorgung der LEDs verwende ich ein 5V 7A Schaltnetzteil von MeanWell. Den Pi versorge ich getrennt über ein USB Netzteil mit 5V und 2A. Die Masse von Pi und Leds habe ich über meinen gelöteten Stecker verbunden. Als Test habe ich auch schon einen anderen LED-Streifen angesteckt, machte aber auch keinen Unterschied. Hoffe jemand hat eine Idee wo der Fehler sein könnte

  • OpenElec + Hyperion, Leds zeigen unerklärbares Verhalten? Schau mal ob du hier fündig wirst!

  • Also für mich hört sich das nach einem Hardware-Fehler an.

    Hast du schon gecheckt, dass du die LEDs mit der IN-Seite an den Raspberry geschlossen hast und nicht mit der 'OUT'-Seite?

  • Danke für die ersten Antworten. Hier noch ein paar Fotos von meinem Aufbau - hoffe das klappt mit den Bildern einfügen als Attachment...

    Wie zu sehen ist, leuchten 4 LEDs. Nach dem Starten von OpenElec waren es nur 3. Die vierte hat sich erst eingeschaltet nachdem ich rund eine Minute ein Video lief. Der Ledstreifen hat eine Länge von 27 LEDs. Sollten eigentlich entsprechend meiner Config 24 Leds sein.
    Hier noch meine Hyperion-Config, vielleicht liegts ja daran

    Spoiler anzeigen

    // Automatically generated configuration file for 'Hyperion daemon'
    // Generated by: HyperCon (The Hyperion deamon configuration file builder

    {
    /// Device configuration contains the following fields:
    /// * 'name' : The user friendly name of the device (only used for display purposes)
    /// * 'type' : The type of the device or leds (known types for now are 'ws2801', 'ldp8806',
    /// 'lpd6803', 'sedu', 'adalight', 'lightpack', 'test' and 'none')
    /// * 'output' : The output specification depends on selected device. This can for example be the
    /// device specifier, device serial number, or the output file name
    /// * 'rate' : The baudrate of the output to the device
    /// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
    "device" :
    {
    "name" : "MyPi",
    "type" : "ws2801",
    "output" : "/dev/spidev0.0",
    "rate" : 250000,
    "colorOrder" : "rgb"
    },

    /// Color manipulation configuration used to tune the output colors to specific surroundings.
    /// The configuration contains a list of color-transforms. Each transform contains the
    /// following fields:
    /// * 'id' : The unique identifier of the color transformation (eg 'device_1') /// * 'leds' : The indices (or index ranges) of the leds to which this color transform applies
    /// (eg '0-5, 9, 11, 12-17'). The indices are zero based. /// * 'hsv' : The manipulation in the Hue-Saturation-Value color domain with the following
    /// tuning parameters:
    /// - 'saturationGain' The gain adjustement of the saturation
    /// - 'valueGain' The gain adjustement of the value
    /// * 'red'/'green'/'blue' : The manipulation in the Red-Green-Blue color domain with the
    /// following tuning parameters for each channel:
    /// - 'threshold' The minimum required input value for the channel to be on
    /// (else zero)
    /// - 'gamma' The gamma-curve correction factor
    /// - 'blacklevel' The lowest possible value (when the channel is black)
    /// - 'whitelevel' The highest possible value (when the channel is white)
    ///
    /// Next to the list with color transforms there is also a smoothing option.
    /// * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning
    /// parameters:
    /// - 'type' The type of smoothing algorithm ('linear' or 'none')
    /// - 'time_ms' The time constant for smoothing algorithm in milliseconds
    /// - 'updateFrequency' The update frequency of the leds in Hz
    "color" :
    {
    "transform" :
    [
    {
    "id" : "default",
    "leds" : "*",
    "hsv" :
    {
    "saturationGain" : 1.0000,
    "valueGain" : 1.0000
    },
    "red" :
    {
    "threshold" : 0.0000,
    "gamma" : 1.0000,
    "blacklevel" : 0.0000,
    "whitelevel" : 1.0000
    },
    "green" :
    {
    "threshold" : 0.0000,
    "gamma" : 1.0000,
    "blacklevel" : 0.0000,
    "whitelevel" : 1.0000
    },
    "blue" :
    {
    "threshold" : 0.0000,
    "gamma" : 1.0000,
    "blacklevel" : 0.0000,
    "whitelevel" : 1.0000
    }
    }
    ],
    "smoothing" :
    {
    "type" : "none",
    "time_ms" : 200,
    "updateFrequency" : 20.0000
    }
    },

    /// The configuration for each individual led. This contains the specification of the area
    /// averaged of an input image for each led to determine its color. Each item in the list
    /// contains the following fields:
    /// * index: The index of the led. This determines its location in the string of leds; zero
    /// being the first led.
    /// * hscan: The fractional part of the image along the horizontal used for the averaging
    /// (minimum and maximum inclusive)
    /// * vscan: The fractional part of the image along the vertical used for the averaging
    /// (minimum and maximum inclusive)
    "leds" :
    [
    {
    "index" : 0,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 1,
    "hscan" : { "minimum" : 0.8333, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 2,
    "hscan" : { "minimum" : 0.6667, "maximum" : 0.8333 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 3,
    "hscan" : { "minimum" : 0.5000, "maximum" : 0.6667 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 4,
    "hscan" : { "minimum" : 0.3333, "maximum" : 0.5000 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 5,
    "hscan" : { "minimum" : 0.1667, "maximum" : 0.3333 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 6,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.1667 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 7,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    },
    {
    "index" : 8,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.7500, "maximum" : 1.0000 }
    },
    {
    "index" : 9,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.5000, "maximum" : 0.7500 }
    },
    {
    "index" : 10,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.2500, "maximum" : 0.5000 }
    },
    {
    "index" : 11,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.2500 }
    },
    {
    "index" : 12,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 13,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.1667 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 14,
    "hscan" : { "minimum" : 0.1667, "maximum" : 0.3333 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 15,
    "hscan" : { "minimum" : 0.3333, "maximum" : 0.5000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 16,
    "hscan" : { "minimum" : 0.5000, "maximum" : 0.6667 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 17,
    "hscan" : { "minimum" : 0.6667, "maximum" : 0.8333 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 18,
    "hscan" : { "minimum" : 0.8333, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 19,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    },
    {
    "index" : 20,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.2500 }
    },
    {
    "index" : 21,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.2500, "maximum" : 0.5000 }
    },
    {
    "index" : 22,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.5000, "maximum" : 0.7500 }
    },
    {
    "index" : 23,
    "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.7500, "maximum" : 1.0000 }
    }
    ],

    /// The black border configuration, contains the following items:
    /// * enable : true if the detector should be activated
    /// * threshold : Value below which a pixel is regarded as black (value between 0.0 and 1.0)
    "blackborderdetector" :
    {
    "enable" : true,
    "threshold" : 0.01
    },

    /// The configuration of the effect engine, contains the following items:
    /// * paths : An array with absolute location(s) of directories with effects
    /// * bootsequence : The effect selected as 'boot sequence'
    "effects" :
    {
    "paths" :
    [
    "/storage/hyperion/effects"
    ]
    },

    "bootsequence" :
    {
    "effect" : "Rainbow swirl fast",
    "duration_ms" : 3000
    },

    /// The configuration for the frame-grabber, contains the following items:
    /// * width : The width of the grabbed frames [pixels]
    /// * height : The height of the grabbed frames [pixels]
    /// * frequency_Hz : The frequency of the frame grab [Hz]
    // "framegrabber" :
    // {
    // "width" : 64,
    // "height" : 64,
    // "frequency_Hz" : 10.0
    // },

    /// The configuration of the XBMC connection used to enable and disable the frame-grabber. Contains the following fields:
    /// * xbmcAddress : The IP address of the XBMC-host
    /// * xbmcTcpPort : The TCP-port of the XBMC-server
    /// * grabVideo : Flag indicating that the frame-grabber is on(true) during video playback
    /// * grabPictures : Flag indicating that the frame-grabber is on(true) during picture show
    /// * grabAudio : Flag indicating that the frame-grabber is on(true) during audio playback
    /// * grabMenu : Flag indicating that the frame-grabber is on(true) in the XBMC menu
    /// * grabScreensaver : Flag indicating that the frame-grabber is on(true) when XBMC is on screensaver
    /// * enable3DDetection : Flag indicating that the frame-grabber should switch to a 3D compatible modus if a 3D video is playing
    "xbmcVideoChecker" :
    {
    "xbmcAddress" : "127.0.0.1",
    "xbmcTcpPort" : 9090,
    "grabVideo" : true,
    "grabPictures" : true,
    "grabAudio" : true,
    "grabMenu" : true,
    "grabScreensaver" : true,
    "enable3DDetection" : true
    },

    /// The configuration of the Json server which enables the json remote interface
    /// * port : Port at which the json server is started
    "jsonServer" :
    {
    "port" : 19444
    },

    /// The configuration of the Proto server which enables the protobuffer remote interface
    /// * port : Port at which the protobuffer server is started
    "protoServer" :
    {
    "port" : 19445
    },

    /// The configuration of the boblight server which enables the boblight remote interface
    /// * port : Port at which the boblight server is started
    // "boblightServer" :
    // {
    // "port" : 19333
    // },

    "endOfJson" : "endOfJson"
    }

    pmmd: Nein, die sind richtig angeschlossen, so wie auch der Rest der Beschaltung stimmen müsste. Fehler konnte ich zumindest keinen entdecken.

    Hier sind noch zwei Links zu Videos die ich während dem Starten gemacht habe. Nach rund einer Minute starte ich in beiden Fällen einen Film. Daraufhin beginnen die Leds wie wild zu blinken.
    Einmal mit dem Steckbrett-Aufbau:
    http://youtu.be/cB_qpfA7ceI
    und einmal der in den Bildern gezeigte, gelötete Aufbau mit Steckern:
    http://youtu.be/S_Nxr_bdcOo

  • Für was isn dieser zusätzliche Mikroprozessor? Wieso gehst du nicht direkt auf die Pins vom RPi? Ist das deine Pufferschaltung?

    Nochwas: Hast du mal probiert mit hyperion-remote eine feste farbe zu setzen? ggf auch ohne pufferschaltung sondern direkt auf die pins vom rpi und strom direkt vom netzteil

    Hier war mal eine Signatur.

    Einmal editiert, zuletzt von TPmodding (18. Juni 2014 um 17:19)

  • Ja genau, ist sie. Das ist ein IC, genauer gesagt ein 74HCT08N mit 4 UND-Gattern. Davon verwende ich 2 als Spannungspuffer, je ein Gatter für den MOSI Pin und einer für den SCLK Pin. Die Ausgänge der Gatter gehen dann zum Stecker der zu den Leds führt. Ist im Prinzip die Schaltung aus der Hyperion Wiki nur mit UND Gattern anstelle der NAND Gatter. Hier der Link zur Schaltung https://github.com/tvdzwan/hyperion/wiki/Hardware.
    Versorgt wie die Schaltung über die 5V aus dem Netzteil, die Masse ist die gemeinsame Masse von PI und Schaltnetzteil.

    Nicht direkt probiert - zumindest nicht in OpenElec. Kann ich dort über SSH überhaupt eine feste Farbe setzen? Wenn ja, wie lautet der Befehl dafür?

    Einmal editiert, zuletzt von patrik84 (18. Juni 2014 um 17:28)

  • Wenn ich den Befehl eingebe kommt die Meldung -sh: hyperion-remote: not found. Scheinbar funktioniert das so nicht in OpenElec.

    Offenbar habe ich den Fehler jetzt aber gefunden :D. Scheinbar liegt es an den beiden LED Streifen die ich getestet habe.
    Ich habe mir von der 5m Rolle vier Stücke abgeschnitten, eine für jede Seite. Zwei davon habe ich getestet, Hyperion funktionierte mit keiner.
    Nachdem ich jetzt auch noch die Stecker auf ein drittes Stück gelötet habe und diesen LED Streifen zum Testen verwendete funktioniert alles so wie es sein soll. So viel Pech kann man doch nicht haben aus vier Streifen zwei defekte zu nehmen :s.

    Wie auch immer, bin froh das ich jetzt zumindest den Fehler eingrenzen kann. Danke für die schnelle Hilfe von euch!
    Vielleicht hat noch jemand einen Tipp wie ich die defekte Stelle in den LED-Streifen einfach finden kann? Die Spannung von 5V kommt an jedem IC an und auch GND ist durchgängig verbunden.

  • Heute hab ich auch noch den Fehler in den beiden LED Streifen gefunden. Beim Anfangsstück der 5m Rolle waren die Kabel des Steckers falsch angelötet - CLK und Data waren ausgekreuzt. Der zweite LED Streifen hatte ein Kontaktproblem. Eine LED in der Mitte des Streifens dürfte wohl nicht ordentlich gelötet worden sein. Nachdem ich da nachgelötet hatte funktionierte es auch damit.

    Somit war der Testaufbau doch noch erfolgreich und ich kann nächste Woche damit starten alles am TV zu montieren und die Komponenten in meinem Gehäuse unterzubringen:D
    Sag nur kleiner Fehler große Wirkung...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!