gpio port aktivierung

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

    Ich möchte gerne eine einfache LED Steuerung mit meinem Raspberry Pi Model B 512 MB ram machen.
    Soweit hab ich alles nach Anleitung aufgebaut, aber ich schaffe es nicht den Gpio Port zu aktivieren.

    Code
    root@raspberrypi:~# echo "2" > /sys/class/gpio/export
    -bash: echo: write error: Device or resource busy
    root@raspberrypi:~#

    Ich habe in dem Verzeichnis [font="Arial, Helvetica, sans-serif"]/sys/class/gpio scheinbar auch keine Rechte die Dateien zu bearbeiten.[/font]
    [font="Arial, Helvetica, sans-serif"]Kann mir einer die Lösung verraten ?[/font]
    [font="Arial, Helvetica, sans-serif"]Ich probier schon seit mindestens 5 Stunden da rum und komme auf keine Lösung.:@[/font]

  • Hallo,

    probier mal Folgendes:

    Die Kathode der LED mit einem GND-Pin der GPIO-Schittstelle verbinden.

    Einen Widerstand berechnen und einsetzen (zu berechnen nach R = (U - Uf) / I
    Uf ist die Vorwärtsspannung der LED. Für eine rote LED z.B. Uf = 1,9 V. U ist die zur Verfügung stehende Spannung - beim Raspberry Pi als 3,3 V. Für den Strom I solltest Du ca. 2mA annehmen.

    Somit erhältst Du für den Widerstand R = (3,3V - 1,9V) / 0,002A = 700 Ohm

    Die Anode verbindest Du mit einem GPIO-Pin (z.B. GPIO2).

    Den Widerstand kannst Du entweder zwischen GPIO2 und Anode der LED oder zwischen GND und der Kathode legen.

    Dann gibstDu folgende Kommandos über das Terminal ein:

    Code
    sudo chown pi /sys/class/gpio/exportsudo echo "2" > /sys/class/gpio/export

    zum Verwenden von GPIO2

    Code
    sudo chown pi /sys/class/gpio/gpio2/directionecho "out" > /sys/class/gpio/gpio2/directionsudo chown pi /sys/class/gpio/gpio2/value
    Code
    echo "1" > /sys/class/gpio/gpio2/value

    zum Einschalten der LED

    Code
    echo "0" > /sys/class/gpio/gpio2/value

    zum Ausschalten der LED

    Code
    sudo chown pi /sys/class/gpio/unexportecho "2" > /sys/class/gpio/unexport

    (Diese Zeilen habe ich meiner GPIO-Library entnommen)
    Bei der Fehlermeldung, die bei Dir erscheint, solltest Du noch die beiden letzten Zeilen an den Anfang setzen, also beginne mit:

    Code
    sudo chown pi /sys/class/gpio/unexportecho "2" > /sys/class/gpio/unexport

    Wenn das nicht funktioniert, dann kannst Du maximal noch die Polarität der LED verwechselt haben

    Viel Erfolg!

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (8. Oktober 2017 um 11:07)


  • Hallo,
    ...
    Einen Widerstand berechnen und einsetzen (zu berechnen nach R = (U - Uf) / I
    Uf ist die Vorwärtsspannung der LED. Für eine rote LED z.B. Uf = 1,9 V. U ist die zur Verfügung stehende Spannung - beim Raspberry Pi als 3,3 V. Für den Strom I solltest Du ca. 2mA annehmen.
    Somit erhältst Du für den Widerstand R = (3,3V - 1,9V) / 0,002A = 700 Ohm

    Tach auch.
    Das ist leider nicht ganz korrekt ;)

    Aufgrund der Lichtfarbe Annahmen über den Strom, den die LED braucht, halte ich für gefährlich :fies:
    Wie man diesem Artikel in Wikipedia entnehmen kann, ziehen Standard-LEDs bis zu 20 mA.
    War Zufall dass ich den Link noch hatte, weil ich vor nicht allzulanger Zeit da was nachgeschaut habe.

    Grüssle,
    -ds-

  • Danke für die schnelle Antwort.
    Ich wollte jetzt nicht gleich das Tutorial verlinken weil das bei manchen Foren unerwünscht ist aber hier:
    http://raspiprojekt.de/anleitungen/schaltungen/8-gpios-ansteuern-led.html?showall=1&limitstart=

    Ich hab ein Starterkit von Conrad in dem Leds und passende widerstände dabei sind.
    ich probier jetzt mal den Tipp von Andreas.

    ->Immer noch der gleiche Error wie oben geschildert......

    Einmal editiert, zuletzt von Rolges (16. November 2013 um 08:13)


  • Aufgrund der Lichtfarbe Annahmen über den Strom, den die LED braucht, halte ich für gefährlich :fies:
    Wie man diesem Artikel in Wikipedia entnehmen kann, ziehen Standard-LEDs bis zu 20 mA.


    Hallo zusammen,

    wenn es eine 20mA LED ist und nur 2mA angenommen wird, ist der Widerstand um's 10fache zu groß - schadet ja nicht.
    Abgesehen davon, 20 mA würde ich nicht direkt über einen GPIO laufen lassen.

    Gruß, mmi

  • Andreas: "sudo" sorgt dafür das Befehle mit root-Rechten ausgeführt werden. Es macht also kein Sinn den Owner der Datei zwischendurch auf "pi" zu stellen wobei aber weiterhin allen Befehle "sudo" vorrangestellt ist...

    Da Rolges aber bereits root ist, brauch er auch kein "sudo" nutzen - root darf eigentlich alles, die Fehlermeldung sagt aber das selbst root (also auch kein "sudo") in die Virtuelle Dateien schreiben kann:

    Code
    root@raspberrypi:~# echo "2" > /sys/class/gpio/export
    -bash: echo: write error: Device or resource busy
    root@raspberrypi:~#

    Aus meiner Sicht geht das nur zu lösen indem er rebootet da das /sys/ Dateisystem vom Kernel erzeugt wird..


    Es spielt eigentlich auch erst mal keine Rolle wie die Schaltung aussieht solange man den GPIO nicht exporten (aktivieren) kann

  • Moin,

    macht imho schon Sinn :)

    Dieses

    Code
    root@raspberrypi:~# echo "2" > /sys/class/gpio/export
    -bash: echo: write error: Device or resource busy
    root@raspberrypi:~#

    exportiert doch den GPIO2, korrekt?
    Na und GPIO2 ist Bestandteil des I2C-Bus.
    Und das wird evtl. vom Kernel (Modul i2cdev) blockiert ;)

    //EDIT:
    Und wenn ich mir das Foto anschaue, dann halte ich es für unwahrscheinlich, dass das Kabel an GPIO2 angeschlossen ist
    Deshalb hätte ich ja gerne eine Skizze seiner Schaltung - nicht so wie es sein sollte sondern so wie es ist.


    cu,
    -ds-


  • Ich hatte ja auch geschrieben, dass ich diese Zeilen aus meiner GPIO-Library entnommen habe. Wenn ich die GPIO-Pins von einem eigenen Programm aus ansteuern will, dann bin ich in den seltensten Fällen als ROOT aktiv. Und dann funktioniert all dieses export/unexport-Zeugs nur als ROOT.

    Wenn ich die GPIO nicht korrekt über unexport beende, dann erhalte beim nächsten Versuch, diesen Pin über export zu nutzen, diese Fehlermeldung. Deswegen ist es erforderlich, entweder am Programmende oder beim nächsten Aufruf diesen GPIO-Pin korrekt zu beenden - bevor ich ihn neu nutzen kann.

    Ansonsten schließe ich mich meinen Vorrednern an, dass man nicht zuviel Strom über einen GPIO-Pin ziehen sollte. Der Raspberry verfügt über 21 GPIO-Pins (17 über die Schnittstelle P1 und die anderen 4 über andere Schnittstellen). 50 mA / 21 ergibt ca. 2 mA.

    Wenn man nicht weiß, was man alles so basteln und testen will, sollte man sich mit diesem Wert aus Sicherheitsgründen begnügen.


    Ich setze für einen Entiwcklungsauftrag gerade einen Raspberry Pi ein - da hat sich genau diese Vorgehensweise bewährt.

    Gutes Gelingen!

    Andreas

    Zitat


    Und wenn ich mir das Foto anschaue, dann halte ich es für unwahrscheinlich, dass das Kabel an GPIO2 angeschlossen ist

    Das sehe ich auch so, der GPIO-Pin liegt woanders.
    Wenn über das Terminal der GPIO-Pin 2 angesteuert wird, aber dort keine LED angeschlossen ist, dann kann auch niemandem ein Licht aufgehen.

    Gutes Gelingen

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (17. November 2013 um 21:15)

  • Vielleicht hilft dir folgendes weiter um zu wissen an welche GPIO Pins du anschliesen musst


    Genauere Details findest du auch > hier < (etwas runter scrollen)

Jetzt mitmachen!

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