Hyperion Receiver Vorstellung und Danksagungen

  • Wollte jetzt mal mein fertiges Ambilight-Projekt vorstellen und mich herzlich bei diesem Forum bedanken.


    Danksagungen insbesondere an:


    *****************************************************************************


    Assispachtel, besten Dank für Dein Image (4GB)


    a.schaefer85, Danke für die Hilfestellung bezüglich des Hyperion eigenen Players


    @.bismark, mit Deiner Hilfe geht jetzt auch "Blackboarder"


    dreamshader, für Deinen Einsatz zur Display-Steuerung


    Kernkrank, für Dein Taster-TUT


    *****************************************************************************



    So, aber nun zu meinem Projekt.


    Ich hatte zu meinem ungenutzt in der Ecke rumliegendem Raspberry zu Weihnachten das nötige Zubehör
    für den Aufbau eines Ambilight´s geschenkt bekommen.


    Nach jetzt knapp 3 Monaten läuft das Gerät so, wie ich mir das vorgestellt hatte.


    Zum Einsatz kam mei RPI (älteres Modell 2 mit 256 MB RAM und ohne Befestigungslöcher),


    50 Stück LED-Kette WS2801 (verkabelte Version),


    Logilink-Grabber mit STK1160 (hatte ich auch schon nutzlos mehrere Jahre rumliegen),


    4-Fach Relaisplatine mit Optokoppler,


    HAMA USB-HUB,


    Netzteil-Platine von "Reichelt" 5 + 12V / 4A


    Display 2 Zeilen mal 16 Zeichen


    HDMI-auf Video-Converter und ein HDMI-Spliter 4 auf 2,


    Eingebaut habe ich das Ganze dann in das Gehäuse eines alten Sat-Receivers, wobei die Rückwand abgesägt wurde, und eine passende neu gebaut wurde.


    Aufgrund eines Wärmestaus im Gehäuse, wurde ein 25mm 12v Lüfter eingebaut, zur Geräuschreduzierung ein 100 Ohm in Reihe an 12V.
    Ergebnis jetzt 50 bis 52 Grad, ohne Lüfter zeitweise an die 70 Grad Prozessortemparatur.


    Die Relaisplatine wird über ein Pegelwandler mit 74HCT08 angesteuert, das Gleiche gilt auch für SDA/SCK der LED-Kette. Aufgebaut alles auf der zentralen Lochraster-Platine.


    Die original Bedienteil-Platine wurde auch kpl. durch Lochraster ersetzt, da die vorhandene Platine nur eine 7-Segment-Anzeige hatte.


    Die Pegelwandlung des IR-Empfängers mit NPN-Transistor an den GPIO-Eingang wurde auch auf der
    Bedielteil-Lochraster-Platine aufgebaut.


    Die Eingangswahl der Signalquelle kann mit den Tasten am Gerät, wie auch mit der FB (kommt von einer Technisat SkyStar2) erfolgen, wobei Taste "1" der FB "HDMI" bedeutet und Taste "2" somit "Video" entspricht. "HDMI" ist dabei die Grundeinstellung, und wird nach dem Hochfahren automatisch gewählt.


    Auf dem Display wird nach einer kurzen Verzögerung die Eingangswahl dargestellt, wobei die Verzögerung von der while-Schleife abhängt. In meinem Fall 2 Sekunden, da bereits 0,5 Sekunden die Prozessorlast auf 5-7% ansteigen lässt und sich das mit zeitweiligen "Blitzen" des Ambilights bemerkbar macht.
    Somit ist auch die Bedienung am Gerät über die Tasten "etwas" träge, aber die FB arbeitet dafür verzögerungsfrei.
    Zudem sind noch die Uhrzeit und Temparatur auf dem Display zu sehen.


    Jetzt noch ein par Bilder:




    Bei ausreichendem Interesse kann ich das Schaltbild (eagle) und die
    Lochmaster-Datei veröffentlichen. (Sind aber noch nicht ganz fertig)


    Für Fragen bitte das Forum benutzen!


    Gruß Claus

  • Wow, respekt! Das sieht echt gut aus. Da wird man neidisch :D
    Wie hast du die hintere blende hinbekommen? Als unerfahrener Handwerker ohne entsprechendes Werkzeug wird das nichts, oder?


    Die Idee, ein altes Gehäuse zu "missbrauchen" ist echt gut.

  • Versprochener Nachtrag:


    Schaltbild und Platinenlayout erstellt mit "eagle 6.5" und "Lochmaster 4.0"






    Leider hat mein Raspi Modell B Rev. 1 im laufenden Betrieb sein Zeitliches gesegnet und kann nur jedem raten, für ausreichende Kühlung zu sorgen.


    Der LAN 9512 hat eine maximale Betriebstemparatur von 70 Grad
    Da ich den BCM schon einmal auf 72 Grad hatte, in der Regel aber der LAN noch um einiges wärmer wird, denke ich mal, dass das den LAN-Chip zerstört hat (Bootvorgang wird noch ausgeführt, USB und LAN sind aber tot. Alle Reparaturversuche erfolglos).


    Raspi jetzt gegen neue Version ausgetauscht und noch einen 2. Lüfter direkt über den RPI eingebaut.
    Daher auch noch eine mit Poti regelbare Lüftersteuerung hinzugefügt, um den Geräuschpegel auf angenehme Werte zu reduzieren.


    Würde mich mal interessieren, welche Temparaturen Ihr hier so habt.
    Einfach mal in der Konsole unter Benutzer: "root", Passwort: "root" :


    Code
    vcgencmd measure_temp


    Eingeben und das Ergebnis hier kurz mitteilen.


    Ich bin jetzt bei 45 - 47 Grad und hoffe, der hält jetzt länger.

    Edited once, last by Pieper ().


  • [...]

    Code
    vcgencmd measure_temp


    Eingeben und das Ergebnis hier kurz mitteilen.


    Ich bin jetzt bei 45 - 47 Grad und hoffe, der hält jetzt länger.


    Erstmal ein großes Lob für deine tolle Arbeit! ;)


    Hier meine Temperatur:

    Code
    $vcgencmd measure_temp
    temp=46.5'C


    Mein Raspberry hat montierte Kühler (Affiliate-Link), ist nicht übertaktet und läuft momentan mit offenem Gehäuse und hyperion bei einer Dauerauslastung von ca. 20% CPU.

  • Nicht schlecht. So wird meins hoffentlich bald auch aussehen. Aber eine Frage hätte ich noch und zwar was für ein Netzteil benutzt du bzw. wie viel Strom braucht deine ganze Schaltung?

  • Super Sache!


    Wollte mir auch ein kleines Gehäuse bauen und gerne eine Steckverbindung für die LEDs haben. Wie nennt sich die Buchse, die du verwendet hast?


  • ... was für ein Netzteil benutzt du bzw. wie viel Strom braucht deine ganze Schaltung?


    Netzteil kommt von Reichelt, Käfig entfernt, da ja neues Gehäuse genügend "Berührungsschutz" bietet.


    http://www.reichelt.de/Schaltn…PID=4959&artnr=SNT+RD+35A


    Stromaufnahme habe ich irgend wann mal in der Entwiklungsphase gemessen und lag bei ca. 2,1 bis max. 2,5 A mit 50 bedrahteten LED´s WS2801.


    Dabei war aber noch kein Display, keine Relais-Karte und RPI Modell 2 Rev. 1.


    Sollte also bei der aktuellen Konfiguration bei weitem 3 A nicht übersteigen.



    Als Buchse für´s Ambilight habe ich eine Standart-Dioden-Buchse verwendet, lag hier schon gefühlte 25 Jahre rum (wußte doch, irgendwann brauch ich die mal ;)).

    Edited once, last by Pieper ().

  • Nachtrag:


    Ich bin jetzt mit der Lüfterdrehzahl soweit unten, das ein sicheres Anlaufen der beiden Lüfter beim Hochfahren nicht mehr gegeben ist.


    Temparatur bei 48 Grad.


    Zur Beseitigung dieses Problems habe ich dazu "C 8" mit 100 uF in der Lüftersteuerung hinzugefügt.
    Dieser sorgt jetzt dafür, das nach dem Anlegen der Stromversorgung der Transistor für ca. 1 - 2 Sekunden ein erhöten Basisstrom erhält und die Lüfter auch sicher anlaufen.


    Der Widerstand "R 17" hat jetzt zudem die Aufgabe, den Elko nach dem Abschalten wieder schnell zu entladen, um auch für ein "reboot" gerüstet zu sein.




    Würde mich auch weiterhin über Temparaturen von Euch freuen!

  • Ich hab hier ein sehr, sehr enges Gehäuse... wie viel mm hast du durch das weglassen des HDMI2AV Gehäuses gespart? Bzw. Wie hoch ist der HDMI2AV Adapter ohen Gehäuse?

  • Höhe vom HDMI-Adapter entspricht ca. der HDMI-Buchse evtl. 2-3 mm mehr (Elko Höhe), je nach dem, welche Bauteile verwendet wurden.


    Mach doch mal ein par Foto´s :geek:
    Und gemessene Temparaturen nicht vergessen :thumbs1:


    Und denke daran, kleine Lüfter haben ENORME Drehzahlen =(
    Meine verwendeten 25 mm, 12V Lüfter liegen bei 12000 UPM, die 20 mm, 5V Teile liegen sogar bei 17000 UPM und das lärmt gewaltig!

  • Ich warte noch auf meinen HDMI2AV Adapter und mein Netzteil. Das Gehäuse, das ist bestellt habe, kommt mir aber doch etwas klein vor, daher hatte ich nachgefragt. Im Datenblatt stehen 2 cm Höhe des HDMI2AV Adapters, ich krieg aber nur noch 1,6 cm geschickt unter. Ein 25 mm Lüfter ist auch im Gehäuse, ich bin sehr gespannt auf die Lautstärke.


    Danke auf jeden Fall schonmal für die Infos. Ich hoffe, das Schiffchen aus China schippert was schneller, dann berichte ich auch bald von meinem Vorhaben :D

  • Weitere Änderung:


    Relais "K2" wird jetzt über "IC2A" von Pin3 des RPI angesteuert, um eine sofortige Reaktion vom Tastendruck der Fernbedienung wie auch vom Bedienteil am Gerät zu erhalten, wenn "Aus" geschaltet wird.


    Vorher wurde der RPI bei Tastenbetätigung zwar heruntergefahren, angezeigt hatte er es aber nur, das dann sofort die Ambi-LED´s nicht mehr angesteuert wurden ("killall hyperiond" im skript).
    Das aber nur bei druck auf der FB-Taste, (nicht aber am Gerät) und das war bei heller Umgebung oder dunklem Bildinhalt nicht sichbar.
    Jetzt hört man sofort ein "klick" wenn der Tastenbefehl registiert wurde und werde wohl noch die Displaybeleuchtung damit schalten.:cool:


  • Update


    Display-Backlight jetzt über Relais 2 geschaltet, wobei R22 nur für eine geringere Helligkeit beim Herunterfahren sorgt, bis dann irgendwann die rote Stand-By LED leuchtet und das Display kpl. aus geht.


    Angepasstes Schaltbild und Platine:





    Hier mal meine aktuellen Dateien:


    rc.local


    [code=php]#!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.


    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
    printf "My IP address is %s\n" "$_IP"
    fi





    #sudo python /home/pi/shutdown.py &


    sudo python /home/pi/display_shutdown.py &





    # Freigabe der Rechte für GPIO



    # IR-Fernbedienung


    sudo chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport




    # Display für Shutdown (2) und Quellen-Relais (9)


    echo "2" > /sys/class/gpio/export
    echo "9" > /sys/class/gpio/export


    echo "out" > /sys/class/gpio/gpio2/direction
    echo "out" > /sys/class/gpio/gpio9/direction



    # Ende Freigabe



    sudo irexec &




    /usr/bin/gpio2spi </dev/null >/dev/null 2>&1 &
    /usr/bin/hyperion-v4l2 --width 360 --height 288 --crop-width 5 --crop-height 10 --size-decimator 3 --frame-decimator 1 --skip-reply --signal-threshold 0.05
    #/usr/bin/mplayer -tv driver=v4l2:width=128:height=64 device=/dev/video0 -vo fbdev -fs -fps 24 -aspect 16:9 -nosound tv:// </dev/null >/dev/null 2>&1 &
    #/usr/bin/mplayer -tv driver=v4l2:width=320:height=180 device=/dev/video0 -vo fbdev -fs -fps 20 tv:// </dev/null >/dev/null 2>&1 &
    /usr/bin/hyperiond /etc/hyperion.config.json </dev/null >/dev/null 2>&1 &




    exit 0
    [/php]



    shutdown-display:


    [code=php]# Shutdown + Display-script for Raspberry Model A


    #!/usr/bin/python
    import RPi.GPIO as GPIO
    import time
    import re
    import subprocess
    import os



    # watch LOW level on pin 5 to enter sleep mode
    # standBy Relais on pin 7
    # Set Pin 7 als output und LOW, Pin 5 ist input
    # Ausschalten und Einschalten ueber Pin 5



    GPIO.setmode(GPIO.BOARD)


    GPIO.setup(3, GPIO.OUT)
    GPIO.output(3, False)
    GPIO.setup(7, GPIO.OUT)
    GPIO.output(7, False)
    GPIO.setup(5, GPIO.IN)



    # Pins zur Relaissteuerung: Taster = Pin 13 und 15, Relais ueber Optokoppler = Pin 21


    GPIO.setup(21, GPIO.OUT)
    GPIO.output(21, True)
    GPIO.setup(13, GPIO.IN)
    GPIO.setup(15, GPIO.IN)




    #Programm zum Auslesen der gpio_Value-Datei
    #Muss einen Wert uebergeben bekommen, gpio_uebergabe, der fuer die Ordnerwahl genutzt wird
    #Gibt eine 1 oder 0 als String zurueck


    def get_gpio_value(gpio_uebergabe):
    "Returns either 1 or 0"
    try:
    s = subprocess.check_output(["cat","/sys/devices/virtual/gpio/gpio%s/value" %(gpio_uebergabe)])
    eingang = s.split("\n")
    return eingang[0]
    except:
    return None



    #Programm zum Auslesen der GPU Temperatur
    #Gibt die Temperatur als Kommazahl zurueck


    def get_temperature():
    "Returns the temperature in degrees C"
    try:
    s = subprocess.check_output(["/opt/vc/bin/vcgencmd","measure_temp"])
    return float(s.split('=')[1][:-3])
    except:
    return 0



    #Programm zum Auslesen der lokalen Zeit
    #Gibt die Zeit als HH:MM zurueck


    localtime = time.strftime("%H:%M", time.localtime())



    # Zuordnung der GPIO Pins nach !"BOARD"-Anordnung! (ggf. anpassen)


    DISPLAY_RS = 10
    DISPLAY_E = 8
    DISPLAY_DATA4 = 22
    DISPLAY_DATA5 = 18
    DISPLAY_DATA6 = 16
    DISPLAY_DATA7 = 12



    DISPLAY_WIDTH = 16 # Zeichen je Zeile
    DISPLAY_CHR = True
    DISPLAY_CMD = False
    DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile
    DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile


    E_PULSE = 0.0005
    E_DELAY = 0.0005



    def main():


    #Startvariablen um das Display nur bei Aenderungen der Temparatur, des Eingangs oder der Zeit zu aktualisieren


    eingang_alt = 2
    temp_alt = 1
    start = 1
    zeit_alt = 1



    while True:



    # GPIO.setmode(GPIO.BOARD)
    # !----------------------!


    GPIO.setup(DISPLAY_E, GPIO.OUT)
    GPIO.setup(DISPLAY_RS, GPIO.OUT)
    GPIO.setup(DISPLAY_DATA4, GPIO.OUT)
    GPIO.setup(DISPLAY_DATA5, GPIO.OUT)
    GPIO.setup(DISPLAY_DATA6, GPIO.OUT)
    GPIO.setup(DISPLAY_DATA7, GPIO.OUT)



    localtime = time.strftime("%H:%M", time.localtime())




    # Start Relaisschaltung
    if not (GPIO.input(13)):
    GPIO.output(21, False)
    elif not (GPIO.input(15)):
    GPIO.output(21, True)
    # Ende Relaisschaltung




    # Start Shutdown
    elif not (GPIO.input(5)):
    GPIO.output(3, True)
    os.system("sudo killall /opt/hyperion/bin/hyperiond")
    os.system("sudo shutdown -h now")
    # Ende Shutdown
    # else:



    # Start Display




    #Display nur einmalig initialisieren


    if (str(start) == "1"):
    display_init()
    start = 0



    #Variable temp mit dem Rueckgabewert aus get_temperature fuellen


    temp = get_temperature()



    #Aktualisierung der 1. Zeile nur ausfuehren, wenn der Wert sich geaendert hat


    if (temp_alt != temp):
    lcd_byte(DISPLAY_LINE_1, DISPLAY_CMD)
    lcd_string('Hyperion '+str(temp)+chr(223)+ 'C')
    temp_alt = temp



    #Variable eingang mit dem Rueckgabewert aus get_gpio_value fuellen


    eingang = get_gpio_value(9)



    #Aktualisierung der 2. Zeile nur ausfuehren, wenn sich der Eingang oder die Zeit geaendert haben

    if (eingang_alt != eingang) or (zeit_alt != localtime):
    lcd_byte(DISPLAY_LINE_2, DISPLAY_CMD)
    if (eingang == "1"):
    lcd_string("HDMI "+str(localtime))
    eingang_alt = eingang
    zeit_alt = localtime

    if (eingang == "0") or (zeit_alt != localtime):
    lcd_string(" "+str(localtime)+" VIDEO")
    eingang_alt = eingang
    zeit_alt = localtime



    time.sleep(1)
    # GPIO.cleanup()




    def display_init():
    lcd_byte(0x33,DISPLAY_CMD)
    lcd_byte(0x32,DISPLAY_CMD)
    lcd_byte(0x28,DISPLAY_CMD)
    lcd_byte(0x0C,DISPLAY_CMD)
    lcd_byte(0x06,DISPLAY_CMD)
    lcd_byte(0x01,DISPLAY_CMD)


    def lcd_string(message):
    message = message.ljust(DISPLAY_WIDTH," ")
    for i in range(DISPLAY_WIDTH):
    lcd_byte(ord(message[i]),DISPLAY_CHR)


    def lcd_byte(bits, mode):
    GPIO.output(DISPLAY_RS, mode)
    GPIO.output(DISPLAY_DATA4, False)
    GPIO.output(DISPLAY_DATA5, False)
    GPIO.output(DISPLAY_DATA6, False)
    GPIO.output(DISPLAY_DATA7, False)
    if bits&0x10==0x10:
    GPIO.output(DISPLAY_DATA4, True)
    if bits&0x20==0x20:
    GPIO.output(DISPLAY_DATA5, True)
    if bits&0x40==0x40:
    GPIO.output(DISPLAY_DATA6, True)
    if bits&0x80==0x80:
    GPIO.output(DISPLAY_DATA7, True)
    time.sleep(E_DELAY)
    GPIO.output(DISPLAY_E, True)
    time.sleep(E_PULSE)
    GPIO.output(DISPLAY_E, False)
    time.sleep(E_DELAY)
    GPIO.output(DISPLAY_DATA4, False)
    GPIO.output(DISPLAY_DATA5, False)
    GPIO.output(DISPLAY_DATA6, False)
    GPIO.output(DISPLAY_DATA7, False)
    if bits&0x01==0x01:
    GPIO.output(DISPLAY_DATA4, True)
    if bits&0x02==0x02:
    GPIO.output(DISPLAY_DATA5, True)
    if bits&0x04==0x04:
    GPIO.output(DISPLAY_DATA6, True)
    if bits&0x08==0x08:
    GPIO.output(DISPLAY_DATA7, True)
    time.sleep(E_DELAY)
    GPIO.output(DISPLAY_E, True)
    time.sleep(E_PULSE)
    GPIO.output(DISPLAY_E, False)
    time.sleep(E_DELAY)


    if __name__ == '__main__':
    main()



    # Ende Display
    [/php]



    config:


    [code=php]// 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.7000
    },
    "red" :
    {
    "threshold" : 0.2000,
    "gamma" : 2.1000,
    "blacklevel" : 0.0000,
    "whitelevel" : 0.7000
    },
    "green" :
    {
    "threshold" : 0.2000,
    "gamma" : 2.2000,
    "blacklevel" : 0.0000,
    "whitelevel" : 0.5000
    },
    "blue" :
    {
    "threshold" : 0.2000,
    "gamma" : 2.1000,
    "blacklevel" : 0.0000,
    "whitelevel" : 0.5000
    }
    }
    ],
    "smoothing" :
    {
    "type" : "linear",
    "time_ms" : 120,
    "updateFrequency" : 30.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.4375, "maximum" : 0.5000 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 1,
    "hscan" : { "minimum" : 0.3750, "maximum" : 0.4375 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 2,
    "hscan" : { "minimum" : 0.3125, "maximum" : 0.3750 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 3,
    "hscan" : { "minimum" : 0.2500, "maximum" : 0.3125 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 4,
    "hscan" : { "minimum" : 0.1875, "maximum" : 0.2500 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 5,
    "hscan" : { "minimum" : 0.1250, "maximum" : 0.1875 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 6,
    "hscan" : { "minimum" : 0.0625, "maximum" : 0.1250 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 7,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0625 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 8,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 9,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.8571, "maximum" : 1.0000 }
    },
    {
    "index" : 10,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.7143, "maximum" : 0.8571 }
    },
    {
    "index" : 11,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.5714, "maximum" : 0.7143 }
    },
    {
    "index" : 12,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.4286, "maximum" : 0.5714 }
    },
    {
    "index" : 13,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.2857, "maximum" : 0.4286 }
    },
    {
    "index" : 14,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.1429, "maximum" : 0.2857 }
    },
    {
    "index" : 15,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.1429 }
    },
    {
    "index" : 16,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0200 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 17,
    "hscan" : { "minimum" : 0.0000, "maximum" : 0.0625 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 18,
    "hscan" : { "minimum" : 0.0625, "maximum" : 0.1250 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 19,
    "hscan" : { "minimum" : 0.1250, "maximum" : 0.1875 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 20,
    "hscan" : { "minimum" : 0.1875, "maximum" : 0.2500 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 21,
    "hscan" : { "minimum" : 0.2500, "maximum" : 0.3125 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 22,
    "hscan" : { "minimum" : 0.3125, "maximum" : 0.3750 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 23,
    "hscan" : { "minimum" : 0.3750, "maximum" : 0.4375 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 24,
    "hscan" : { "minimum" : 0.4375, "maximum" : 0.5000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 25,
    "hscan" : { "minimum" : 0.5000, "maximum" : 0.5625 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 26,
    "hscan" : { "minimum" : 0.5625, "maximum" : 0.6250 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 27,
    "hscan" : { "minimum" : 0.6250, "maximum" : 0.6875 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 28,
    "hscan" : { "minimum" : 0.6875, "maximum" : 0.7500 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 29,
    "hscan" : { "minimum" : 0.7500, "maximum" : 0.8125 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 30,
    "hscan" : { "minimum" : 0.8125, "maximum" : 0.8750 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 31,
    "hscan" : { "minimum" : 0.8750, "maximum" : 0.9375 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 32,
    "hscan" : { "minimum" : 0.9375, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 33,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.0200 }
    },
    {
    "index" : 34,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.0000, "maximum" : 0.1429 }
    },
    {
    "index" : 35,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.1429, "maximum" : 0.2857 }
    },
    {
    "index" : 36,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.2857, "maximum" : 0.4286 }
    },
    {
    "index" : 37,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.4286, "maximum" : 0.5714 }
    },
    {
    "index" : 38,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.5714, "maximum" : 0.7143 }
    },
    {
    "index" : 39,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.7143, "maximum" : 0.8571 }
    },
    {
    "index" : 40,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.8571, "maximum" : 1.0000 }
    },
    {
    "index" : 41,
    "hscan" : { "minimum" : 0.9800, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 42,
    "hscan" : { "minimum" : 0.9375, "maximum" : 1.0000 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 43,
    "hscan" : { "minimum" : 0.8750, "maximum" : 0.9375 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 44,
    "hscan" : { "minimum" : 0.8125, "maximum" : 0.8750 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 45,
    "hscan" : { "minimum" : 0.7500, "maximum" : 0.8125 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 46,
    "hscan" : { "minimum" : 0.6875, "maximum" : 0.7500 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 47,
    "hscan" : { "minimum" : 0.6250, "maximum" : 0.6875 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 48,
    "hscan" : { "minimum" : 0.5625, "maximum" : 0.6250 },
    "vscan" : { "minimum" : 0.9800, "maximum" : 1.0000 }
    },
    {
    "index" : 49,
    "hscan" : { "minimum" : 0.5000, "maximum" : 0.5625 },
    "vscan" : { "minimum" : 0.9800, "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.1
    },


    /// 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" :
    [
    "/opt/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" : 117,
    "height" : 89,
    "frequency_Hz" : 40.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" : false,
    "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"
    }
    [/php]



    .lircrc:


    [code=php]
    begin
    remote = Technisat_TTS35AI.conf
    button = Power
    prog = irexec
    repeat = 0
    config = killall hyperiond
    end


    begin
    remote = Technisat_TTS35AI.conf
    button = Power
    prog = irexec
    repeat = 0
    config = echo "1" > /sys/class/gpio/gpio2/value
    end


    begin
    remote = Technisat_TTS35AI.conf
    button = Power
    prog = irexec
    repeat = 0
    config = sudo shutdown -h now
    end


    begin
    remote = Technisat_TTS35AI.conf
    button = 1
    prog = irexec
    repeat = 0
    config = echo "1" > /sys/class/gpio/gpio9/value
    end


    begin
    remote = Technisat_TTS35AI.conf
    button = 2
    prog = irexec
    repeat = 0
    config = echo "0" > /sys/class/gpio/gpio9/value
    end
    [/php]


    Evtl. kann das jemand mal brauchen ;)

  • So, hole das aus aktuellem Anlass mal wieder rauf!


    Das von mir vorgestellte Konzept funzt auch prima mit dem "Google Chromecast" . :thumbs1:


    So sind dann auch alle im Heimnetz verfügbaren Filme, die vom "NAS-Server" an den Stick gestreamt werden, auch mit Ambilight zu genießen.
    Somit 35,- €, die sich lohnen.


    Angeschlossen am HDMI-Umschalter, USB-Strom kommt vom HUB im Receiver.


    Im Übrigen läuft die AL-Sache mit dem RPi bei ca 49-50 Grad extrem stabil.
    Bisher keinerlei Abstürze erlebt. :bravo2:

  • Update "erforderlich"?


    Ist wohl nicht zwingend, wollte aber trotzdem mal berichten.


    Mein 42" LG wollte nicht mehr, nachdem ich mir schonmal
    ein Philips der 8000-Serie zurecht gelegt hatte (war wohl beleidigt).


    Der Philips hat eigebautes AL, das ist aber zum Vergleich zum Hyperion
    "unbrauchbar"!
    Also, wer ein Philips mit AL hat, einfach im TV-Menü ausschalten und das hier
    nachbauen!

  • ui.


    da werd ich neidisch und gehäuse hab ich genug rumliegen.
    und die klebepads mit meiner hardware lösen sich leider so langsam von meiner tv-rückwand -_-


    klingt nach meinem neuen projekt!

  • Neues Jahr, neues Licht :lol:


    Damit ihr hier auf dem laufendem bleibt, kleines Update:


    Umstieg auf 47 " Gerät erforderten neue LED´s.


    Zum Einsatz kommen jetzt WS2801-Stripes mit 32 LED/m.
    Insgesammt werden es jetzt 100 werden und somit doppelt so viele als vorher mit bedrahteten LED´s.
    Befestigung muß ich noch "konstruieren", aber die Baumärkte bieten ja bekanntlich unendliche Möglichkeiten. :denker:


    Zum Test habe ich mal den Stripe mit 100 LED´s angeschlossen um den Stromverbrauch zu ermitteln und bin mehr als Überrascht. :thumbs1:


    Selbst bei 100% weiß (volle Helligkeit) über alle LED´s waren nur 1,31 A in der Zuleitung zum Stripe zu messen.
    Habe dann mal den Verbrauch vom Rest der im Gerät verbauten Baustufen gemessen und bin dabei auf max. 1,1A gekommen (Schwankungen von ca. 95 mA meßbar).


    Ich hatte schon befürchtet, mein 5/12V/4A Netzteil würde dann bis zur Belastungsgrenze betrieben, aber "no Problemo".
    Ich hätte ja die 12V-Schiene noch mit einem Step-Down-Regler nachrüsten können und hätte dann nochmals weit mehr als 4 A zur Verfügung (Wirkungsgrad Step-Down von ca. 85%) wo bisher nur die Lüfter dran sind, ist aber wohl nicht nötig.


    Würde mich mal interessieren, wo ihr so mit dem Stromverbrauch seit? :huh:



    Ansonsten ein Frohes Neues Jahr :danke_ATDE:

  • Hallo Pieper,


    ich habe 206 LEDs (LPD8806) angeschlossen und versorge es mit einem 5V /10 A Netzteil. Mit einem Multimeter (Strom-/Spannungsmessung) habe ich diverse Tests bei weißem Licht durchgeführt. Zuerst hatte ich die LED-Leiste von beiden Seiten mit Spannung versorgt (Kabelquerschnitt 0,5mm², 1m Kabellänge). Bei der LED, die am weitesten von der Spannungsversorgung entfernt ist (oben mittig), konnte ich nur noch 3,38V messen und der Gesamtstrom lag bei 2,4A. Danach habe ich an vier Stellen die LED Leiste mit Spannung versorgt und die Kabellänge reduziert. Nun liegen alle LEDs minimal an 4,66V an und der Strom ist gestiegen auf 3,9A.


    Auch dir ein frohes neues Jahr 2015!

  • Besten Dank für das Feedback :thumbs1:


    Den Spannungsabfall am Kabel konnte ich zum Zeitpunkt der Messung vernachlässigen
    ( 20 cm Klingeldraht ), und die LED´s waren noch auf der Rolle.
    Könnte sein, das das noch keine 100% Helligkeit waren, da ich meine alte Config nur um die Anzahl der LED´s angepasst habe, werde in kürze hier ein Update der Werte geben.


    HDMI-Switch hat aber dabei ein eigenes Netzteil, da der immer in Betrieb sein muß, damit auch ohne Ambilight TV schaubar ist ( Familienfreundlich, ohne diesen
    blöden Technik-Schnick-Schnack =( )


    Ich werde das aber bei der Endmontage des Gerätes an der Wand auch mal nachmessen und berichten.


    Bisher muß ich aber sagen, System am jetzigen Gerät läuft bei gleichbleibender Temparatur von 49 bis 51 Grad EXTREM Stabil :bravo2: