GPIO ohne sudo - bitte Link

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi, ich spiele / experimentiere gerne mit zusätzlicher Hardware an den GPIO Ports. Dabei nutze ich gerne die Bibliotheken von Lady Ada und anderen Autoren von Adafruit. Allein die Umstellung auf den PIB2 hat doch länger gedauert, bis alles wieder lief (DHT22, BMP180, I2C OLED Mini Display, 433MHz Sender / Empfänger, DS1820). Ja, Jessie habe ich auch schon installiert und getestet. Ein Upgrade ist definitiv nicht zu empfehlen. Es gab zu viele Sachen, die nicht funktionieren. Selbst der Browser ist abgestürzt.
    Beim Einsatz von Jessie sollte man auch bei Drogons GPIO Utilities auf der Webseite genau nachlesen, was alles noch einzustellen ist. Getreu nach dem Motto: Neuer Kernel, neue Bibliotheken.Die Adafruit Bibliotheken zu testen habe ich mir dann geschenkt.
    Sorry, ich bleib erst einmal beim Wheezy.

  • Soweit mir bekannt ist, hast du nur folgende Möglichkeiten:

    • Den normalen Benutzer in die System-Gruppe gpio aufnehmen, anschließend neu anmelden und dann kann man auf die Virtuellen Dateien in /sys/class/gpio/ zugreifen.
      Der Weg funktioniert aber nicht für das Python Module 'RPi.GPIO'!

      • Wenn es unbedingt das Python Module 'RPi.GPIO' sein muss bleibt dir nur übrig dies als root (zB. mit sudo) auszuführen... Es gibt aber auch noch andere Python Module für die GPIOs wie zB. RPIO oder WiringPi2-Python oder pigpio ...
    • Ein Dienst (daemon) namens pigpiod als root zu starten, wodurch es normalen Benutzern ermöglicht wird über diesen Dienst auf die GPIOs zuzugreifen. Das funktioniert sogar übers Netzwerk.
    • ..Solch ein Programm oder Script selber schreiben, zum Beispiel mithilfe von Socket oder ebenfalls einer FIFO Datei.


    Bezüglich 1. liegt das an der Verwendung des "DMA memory", worauf nur der Hauptbenutzer (root) Zugriff drauf hat und sich dies auch nicht ändern lässt. (wäre zudem unsicher falls man das doch täte)


    Ich gehe jetzt mal aus Bequemlichkeit detailliert nur auf den vorletzten - pigpiod - ein, da ich glaube schon mal irgendwo eine ausführlichere Beschreibung zusammentextet hab, welche ich aber grad nich mehr wiederfinde :(


    pigpiod

    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 ein normaler Benutzer wie folgt die GPIO's nutzen:


    Socket (Netzwerkfähig)

    (mit STRG+c beenden)
    Alternativ anders herum:

    Code
    cat /dev/pigout &
    echo help >/dev/pigpio

    dann erfolgt jede Ausgabe automatisch und sofort

    Ein weiteres Beispiel dazu findet man auch > hier <
    Man kann auch mehrere Commands auf ein mal ausführen lassen.. Siehe dazu pigs Link oben.


    pigpio FIFO über Python zu nutzen macht eigentlich kein Sinn da man dort ja das pigpio Module nutzen kann. Wer es aber trotzdem drauf anlegen will muss sich Funktionen basteln um in die Pipe zu schreiben sowie ggf die beiden pigout sowie pigerr Dateien auszulesen.


    Es stehen zudem ausnahmslos alle GPIOs zur Verfügung (nicht nur die der P1 Stiftleiste) - man kann auch alle problemlos auslesen, nur schreiben/verändern sollte man nur die P1 GPIOs (user gpios) da man sonst den PI zum crashen bringen kann... Das ist aber nur eine Randnotiz. pigpio unterteilt dies in mehrere Types: http://abyz.co.uk/rpi/pigpio/

  • Ein Update auf ein neues Betriebssystem ist fast nie direkt nach dem Erscheinen zu empfehlen... Da sind immer Anfangsprobleme. Wenn man kein Poweruser ist, sollte man ein paar Wochen wenn nicht Monate abwarten bis die Anfangsschwierigkeiten von Leuten gelöst wurden, die sich entsprechend auskennen.
    Jessie wird in Küre genausogut funktionieren wie aktuell wheezy.
    Und "Neuer Kernel" war auch unter Wheezy ständig, daran liegt es definitiv nicht :P
    Neues OS != neuer Kernel

  • Hallo,
    ich muss bei einem Projekt (Pan/Tilt-Cam) den PIGPIOD verwenden. Ich hoffe, dass ich mich richtig ausdrücke. Bin echter Neuling mit dem raspi.
    Nun muss ich immer nach dem Booten diesen mit sudo pigpiod wieder neu starten. Gibt es nicht eine Möglichkeit, diesen Daemon direkt beim Booten mit zu starten?
    Ich hatte schon einen Tipp bekommen, diesen mit
    sudo nano /etc/rc.local
    und dann vor exit 0 mit einer neuen Zeile
    sudo pigpiod
    zu starten. Das würde dann wohl gleich beim Booten erledigt.
    Hat bei mir irgendwie nicht funktioniert. Kann jemand helfen?

    Einmal editiert, zuletzt von BillowingFog33696 (5. Februar 2016 um 16:34)

  • /etc/rc.local wird bereits als root ausgeführt, sudo ist dann also überflüssig.

    Damit ein aus /etc/rc.local gestartetes Programm/Script die Datei nicht blockiert musst du noch ein "&" ans Ende einfügen damit es in den Hintergrund geschickt wird - ansonsten wird gewartet bis der Befehl / Script sich beendet hat.

    Siehe dazu auch FAQ --> Nützliche Links / Linksammlung --> Autostart


  • /etc/rc.local wird bereits als root ausgeführt, sudo ist dann also überflüssig.

    Damit ein aus /etc/rc.local gestartetes Programm/Script die Datei nicht blockiert musst du noch ein "&" ans Ende einfügen damit es in den Hintergrund geschickt wird - ansonsten wird gewartet bis der Befehl / Script sich beendet hat.

    Siehe dazu auch FAQ --> Nützliche Links / Linksammlung --> Autostart


    Ich habe nun folgendes eingegeben:

    sudo nano /etc/rc.local

    Im Editor habe ich vor exit 0 die Zeile

    pigpiod &

    eingefügt und neu gebootet. Dann wollte ich die Servos des Pan-Tilt-Kits bewegen
    . Funktionierte nicht. Erst als ich im Terminal mit sudo pigpiod den Daemon gestartet habe, funktionierte es wieder.
    Automatisch zusammengefügt:
    Ah,
    habe noch einmal gebootet und nun geht es. Danke.

    Einmal editiert, zuletzt von BillowingFog33696 (5. Februar 2016 um 16:51)

Jetzt mitmachen!

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