Raspberry Pi gibt auf einem Pin kein Ausgangssignal raus

  • Hallo,

    ich bin ganz unerfahren im Thema Raspberry Pi und wurde nun mit einem Projekt so ziemlich ins kalte Wasser geworfen:(:rolleyes: Das Programm und auch der Hardwareaufbau liegen so vor, wie es vor einiger Zeit mal funktioniert hat...

    Das Problem ist nun, dass bei einigen der verwendeten Pi's genau ein Ausgang nicht reagiert, wenn er durch das Programm angesteuert wird. Wenn ich den GPIO über die Konsole direkt ansteuere, kann ich damit den Ausgang auf "1" und "0" setzen, aber im Programmzyklus funktioniert es komischerweise nicht.


    Was mich nun verwirrt ist, das bei einem Raspberry Pi (bei dem der HDMI-Ausgang nicht läuft, kann übers Netzwerk drauf zugreifen, ist für das Projekt an sich aber nicht ausreichend) dieses Problem nicht auftaucht. Dieses ist ein Raspberry Pi 3 Model B.

    Verwende ich einen anderen Pi - ebenfalls 3 Modell B - , bei dem der HDMI-Ausgang funktioniert, so läuft wieder genau dieser Ausgang nicht...

    Das Problem tritt auch beim Model B+ auf.


    Bin völlig ratlos, was ich tun kann und wo ich den Fehler suchen/beheben kann:@

    • Official Post

    Ich sehe nur JavaSkript und einen Hinweis auf ein HTTP Request zu einer gpio.php, aber von Python keine Spur.


    Zeige bitte mal den Code der gpio.php, vielleicht bringt der etwas Licht ins Dunkel und beschreibe bei der Gelegenheit auch mal das Projekt konkreter.


    Das Programm und auch der Hardwareaufbau liegen so vor, wie es vor einiger Zeit mal funktioniert hat...

    Liegt das noch so vor oder wurde neu Aufgebaut und installiert?

  • Zeige bitte mal den Code der gpio.php, vielleicht bringt der etwas Licht ins Dunkel


  • beschreibe bei der Gelegenheit auch mal das Projekt konkreter.

    Das Projekt dient zur Simulation einer Druckmaschine. Eine Bahn läuft über mehrere Walzen (zwei Richtungen möglich); an einer Stelle befindet sich eine Kamera, die auf einer Traverse in beide Richtung verfahren werden kann. Außerdem gibt es eine Leuchte, die ein- und ausgeschaltet werden kann.

    Das Projekt beinhaltet zwei Pi's mit jeweils einem Display.

    Das eine Pi ist zur Steuerung der Bahn, Kamera und Lampe. Dies kann entweder über eine URL, die direkt über das Display geöffnet wird geschehen oder aber mithilfe des Netzwerkes über Smartphones, Laptop etc.

    Das andere Pi ist für die Kamera. Das aktuelle Bild der Kamera wird angezeigt, wenn das Signal eines Sensors vorliegt.


    Hoffe das ist einigermaßen verständlich und nun etwas besser nachzuvollziehen:conf:

    • Official Post

    Darin wird auch kein Pin 16 (GPIO23) geschaltet.


    BTW. Ich hatte noch weitere Fragen hier.


    Edit: Hat sich überschnitten...

    Liegt das noch so vor oder wurde neu Aufgebaut und installiert?

    Die Antwort darauf fehlt leider noch.


    Edit2: Mechatroniker99 Der Zusammenhang vom Code aus Beitrag #7 und #9 passt irgendwie nicht. Davon ab darf ein Webserver nicht ohne Anpassungen die GPIO schalten. Deshalb auch die Nachfrage bezüglich des Aufbaus.

  • Das liegt eigentlich noch alles so vor. Es wurden lediglich die Touch-Displays getauscht (gleicher Typ beibehalten).



    Der Zusammenhang vom Code aus Beitrag #7 und #9 passt irgendwie nicht.

    Habe noch einmal die Beiträge geprüft. #9 war vom anderen Pi:wallbash:

    Dieser Code sollte der passende sein:

  • Außerdem noch ein Skript, in dem die GPIOs erstellt werden


  • Das Problem ist nun, dass bei einigen der verwendeten Pi's genau ein Ausgang nicht reagiert, wenn er durch das Programm angesteuert wird. Wenn ich den GPIO über die Konsole direkt ansteuere, kann ich damit den Ausgang auf "1" und "0" setzen, aber im Programmzyklus funktioniert es komischerweise nicht.

    Vom Scriptinhalt abgesehen kann ein Programm/Script nur dann funktionieren, wenn der aufrufende User auch Schreibrechte an den verwendeten Ausgabegeräten hat.


    Funktioniert ein "GPIO"-Script in der Konsole des Users pi, so (meistend) nur deshalb, weil der User pi Gruppenmitglied von "gpio" ist, welche Gruppe Schreibrechte an den GPIO Pins besitzt.


    Wird dasselbe Script vom User www-data (Webserver) ausgeführt, kann der Zustand der GPIO Pins nicht geändert werden, weil der User www-data auch nicht über seine Gruppenzugehörigkeiten Schreibrechte an den GPIO Pins besitzt.


    Das kann auch nicht durch "chmod 777" auf die Scriptdatei berichtigt werden.


    Die Logdatei /var/log/syslog (samt rotierter Vorgänger) beinhaltet auch Hinweise, was alles falsch läuft, wenn ein Srcipt nicht "funktioniert".



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Das kann ich als unerfahrener User gut nachvollziehen. Allerdings ist meine Frage nun, warum genau einer von den PINs (PIN 16) nicht funktioniert. Falls ich keine Schreibrechte habe, dann müssten doch alle Ausgänge funktionslos sein:conf:

    • Official Post

    Das liegt eigentlich noch alles so vor. Es wurden lediglich die Touch-Displays getauscht (gleicher Typ beibehalten).

    Dann kann ich mir das Verhalten auch nicht erklären, es sei denn, dass die neuen Display nicht Baugleich zu den alten sind.

  • Wenn nur ein Pin im nicht interaktiven Modus nicht beschrieben werden kann, klnnte schon ein anderer Prozess den Pin an sich gebunden haben, oder der Prozess auf eine Eingabe von der Konsole warten (die er non interaktiv nicht bekommt). Theoretisch sind noch viele Fehlermöglichkeiten gegeben. Auch wenn nur ein Pin nicht "beschrieben" wird, ist der Fehler meistens schon in syslog sichtbar, oder Du schaltest den Debugger ein.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Habe mich jetzt über längere Zeit damit beschäftigt und kann den Fehler etwas mehr eingrenzen.

    Habe das Skript aufgerufen, auf das die Website zugreift und habe dort den "defekten" GPIO (23) mit einem "funktionierenden" (24) getauscht. Nun funktioniert GPIO 23, GPIO 24 ist über die Website nicht ansprechbar...


    Ich schließe daraus: Es liegt NICHT an dem GPIO an sich, sondern offensichtlich am Button auf der Website.:daumendreh2:


    Da ich mich mit der Programmierung einer Website bisher überhaupt nicht auskenne, würde ich gerne wissen wollen, in welche Richtung in weitergehen müsste, um den Fehler zu beheben.



    Ich hoffe, meine Schilderung ist verständlich...:helpnew: