LED Streifen mit PWM über PHP steuern

  • Hallo,

    Ich bin neue hier im Forum und wollte fragen ob jemand eine Lösung dafür hat wie man ein LED Streifen mit PWM über eine Website über PHP steuert.
    Über ein Python Script ist es ja kein Problem 3 Pins über PWM anzusteuern aber, so kann ich nicht die Werte über eine Website selber bestimmen.
    Bei WiringPi ist das Problem das ich nur Pin 12 über PWM ansteuern kann. Ich brauche ja aber 3 für rot, grün und blau :s .
    Hat jemand vielleicht eine Lösung dafür?

    Danke im voraus. :D

  • Der RaspberryPI hat nur einen einzigen PWM Fähigen Pin, und das ist #12 bzw GPIO18.

    Also erst mal brauchst du einen Port Expander der dir weitere PWM Ports zur Verfügung stellt.

    Oder du machst Software-PWM, was du mit jedem GPIO machen kannst, wäre aber ein klein wenig CPU Lastiger, macht aber i.d.R. nichts.

    Dann sei gesagt das es immer mehrere Möglichkeiten gibt, es gibt immer mehrere Wege. Als erstes solltest du dir dann folgendes mal angucken: FAQ --> Nützliche Links / Linksammlung --> Anleitung zum schalten von GPIO

    Da findest du schon mal die Grundlagen und auch einige Beispiele - wobei für dich vermutlich die 2.Möglichkeit von Belang sein würde.

    Dann muss Du entscheiden wie du die PWM Werte auf deiner Webseite einstellen möchtest - zum Beispiel über ein Eingabefeld, oder über einen Schieberegler.

  • Erst ein mal bedanke ich mich für die schnelle Antwort.
    Ich entscheide mich für Software-PWM denn, meiner Meinung nach ist es etwas zu aufwändig einen I2C PWM zu kaufen und dass dann noch über I2C zu Programmieren.
    Da ich die LED's sowieso nicht dauerhaft laufen lassen will ist dies wohl die bessere lösung.
    Jetzt wollte ich fragen wie sich denn genau mann denn Befehl von PHP auf pigpiod umsetzt?

  • Das Besondere an pigpiod ist wie bereits erwähnt die Netzwerkfähigkeit, die es einem ermöglicht von X-beliebig anderen Rechnern aus die GPIO's bestimmter RaspberryPi's übers Netzwerk zu steuern. Dadurch wäre es also auch möglich ein Python Script auf einem MAC oder Windows Rechner auszuführen, welches dann auf die GPIO's eures PI's zugreift.
    Diese Funktionalität kann man aber natürlich auch abschalten, oder den Standard Port ändern - Das gilt für sowohl Socket als auch Fifo.
    pigpio nutzt ausschließlich die Broadcom GPIO Nummerierung (GPIO.BCM).

    Installation:

    Code
    sudo su
    cd /usr/src
    git clone https://github.com/joan2937/pigpio
    cd pigpio
    make
    make install
    pigpiod   #start daemon

    Beim Source sind auch Examples (oder hier) dabei und es wird auch ein Konsolen Befehl pigs eingerichtet (mächtiger Befehl).

    Sobald der Daemon (pigpiod) läuft kann man die GPIO's mittels Socket ansprechen.


    Bevor ich auf Details eingehe, sei vielleicht auch noch zu erwähnen das du auch in Python Webseiten erstellen kannst, mithilfe von Modulen wie bottle oder Flesk. Wenn du diesen Weg nimmst kannst du auch direkt folgendes nutzen:
    [code=php]
    import pigpio

    pi = pigpio.pi() #accesses the local Pi's gpios

    pi.set_mode(4, pigpio.OUTPUT)
    pi.write(4, 0) # set local Pi's gpio 4 low

    pi.stop()
    [/php]


    ..Ansonsten müsstest du in PHP halt fsockopen auf den Port 8888 anwenden ;)


    Quellen:
    GPIO ohne sudo - bitte Link
    GPIO über LAN/IP, geht das?

  • Ich hab auch schon versucht über cgi Web Python zu nutzen.
    Mir fiel aber da keine Methode ein die GPIO's anzusteuern da es über RPi.GPIO nicht möglich ist
    kann ich das also auch mit CGI ist ja ne (simple Lösung) mit pigpio benutzen?
    Die Daten kann ich ja über die GET Methode von einem Formular an das Script übergeben.
    (übrigens eignet sich meiner Meinung nach das Element <input type="color"/> gut dafür :D .)

    Einmal editiert, zuletzt von DragonPi (10. Januar 2016 um 21:02)

Jetzt mitmachen!

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