Projekt_Rasenmäherroboter mit Raspberry/Arduino und C-Sprache

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo alle zusammen,

    ich arbeite an meinem Abschlussprojekt.

    Ich möchte einen Rasenmäherroboter bauen mit Raspberry und C-Sprache, dafür benutze ich die IDE Geany und die Bibliothek pigpio.

    Ich habe grade pigpio installiert und wollte ich folgende Testprogramm mittels Geany ausführen:

    als auf einmal wurde auf die konsole folgendes gezeigt:

    Code
    |Sorry, you don't have permission to run this program.    |
    |Try running as root, e.g. precede the command with sudo. 

    kann mir einer sagen wie ich das Problem löse? ich würde gerne das Program mit Geany ausführen und nicht über den LX-Terminal.

    Das kompilieren war kein Problem.

    Der Linker (Build) bei Geany sieht so aus:

    Code
    gcc -Wall -o "%e" "%f" -lpigpio -lrt

    Danke!

    Grüße aus Berlin,

    Golpe

    P.S. Ich wäre auch dankbar, wenn ihr mir sagt Threads, wo ich hilfreiche Information für das Projekt rausholen kann (falls ihr welche kennt)

    Grüße aus Berlin,

    Golpe



  • Projekt_Rasenmäherroboter mit Raspberry/Arduino und C-Sprache? Schau mal ob du hier fündig wirst!

  • ich würde gerne das Program mit Geany ausführen und nicht über den LX-Terminal.

    Du willst das Programm (für das evtl. root-Rechte erforderlich sind) via Geany testen?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Servus,

    nun ... der Zugriff auf die GPIO-Register erfordert root-Rechte.

    Bei Geany weiss ich das jetzt nicht, wo man den Programm-Aufruf konfigurieren kann.

    Da müsstest Du halt noch ein sudo reinbauen.

    Dürfte irgendwo bei "build options" unter "run" oder "execute" sein ...

    cu,

    -ds-

  • Erstmal danke für die Antwort.

    Ja, das ist meine Idee , wenn es überhaupt geht. Mit der Bibliothek bcm2835 ging´s und ich dachte mit pippio auch.

    Mit root Rechte usw. kenne ich mich nicht so aus.

    Bin ziemlich Neuling mit Raspberry...

    Grüße aus Berlin,

    Golpe



  • Warum nicht?

    pigpio nutzt u.a. /dev/mem ... und da brauchts halt root-Rechte.

    Ja, warum nicht? Du hast mich falsch verstanden, weil ich habe aus meiner Sichtweise, für den TE seine Frage präzisiert.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Dürfte irgendwo bei "build options" unter "run" oder "execute" sein ...

    Kann man Geany nicht so konfigurieren, dass es in so einem Fall (... bei der Ausführung des binary sind root-Rechte erforderlich), nach dem Passwort fragt?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Das weiss ich nicht, sorry ...

    Geany habe ich nur mal so nebenbei kurz angeschaut ...

    Meine IDE heisst vi und mein build-Environment "Makefile" ;)

    Du kannst natürlich über die sudoers für den Nutzer pi ein Passwort vorschreiben.

    //EDIT: ist halt der Natur der Sache geschuldet ... je näher man an die Hardware kommt, um so häufiger braucht man root-Rechte.

    bye,

    -ds-

  • Ich google grade nach.

    Mein Problem wäre in dem Fall u.a., dass ich den Password von Root nicht mehr weiß...

    Es ist Jahre her, das ich dieses Password geändert habe..

    Ich Trottel....

    Ich vermute, dass ich hier etwas ändern soll (

    Grüße aus Berlin,

    Golpe



  • Ich vermute, dass ich hier etwas ändern soll (

    Genau ... bei execute ein sudo und ein Leerzeichen an den Anfang.

    Zum Thema Root-Passwort ... nun, "normalerweise" sollte pi ohne Passwort-Abfrage root-Rechte bekommen.

    Einfach mal ausprobieren mit z.B. sudo bash ... wenn das klappt (der Prompt wird zu einem Hash) kannst Du direkt auch das Passwort für root mit passwd ändern.

    Sollte es nicht ausreichen, den ausführenden User in die Gruppe gpio zu packen?

    Leider nicht ... da ist er i.d.R. eh schon drin.

    Hier geht's um /dev/mem ... und da darf (gottseidank) nur root dran ;)

    cu,

    -ds-

  • Passt imho ... warum der lock nicht erzeugt werden kann, weiss ich jetzt auch nicht.

    Evtl. das Programm noch mal ausführen, nachschauen ob die Datei /var/run/pigpio.pid existiert und ggf. löschen, ...

    Ich teste derzeit auch ein Programm mit sudo und pigpio aus:

    Spoiler anzeigen

    pi@pi-lcurr:~/Projects/HC12Radio/build $ sudo LD_LIBRARY_PATH=~/Projects/HC12Radio/build:$LD_LIBRARY_PATH ./hc12Test -c /dev/ttyS0

    enter Command mode

    command >AT

    ERRPONSE: O

    timeout 716

    timeout 730

    RESPONSE: ERRR

    timeout 716

    command >AT+RX

    RESPONSE: OK+B900

    OK+B ...

    O+P+20BE: O+C0

    timeout 716

    leave Command mode

    dumpSerialParam

    ---------------

    device ...: /dev/ttyS0

    dev_fd ...: -1

    baud .....: 9600

    databit ..: 8

    parity ...: N

    stopbits .: 1

    handshake : N

    dumpFWInfo

    ----------

    major ....: 0

    minor ....: 0

    patch ....: 0

    dumpHC12Param

    -------------

    setPin ...: 17

    powerPin .: -1

    comChannel: 1

    ttMode ...: 3

    power ....: 8

    pi@pi-lcurr:~/Projects/HC12Radio/build $

    Das tut anstandslos ...

    Dein OS ist schon einigermassen aktuell?

    cu,

    -ds-

  • so ich danke euch alle für eure schnelle Antworte.

    Das erste Problem ist erledigt

    Code
    pigpio initialised okay
    
    
    ------------------
    (program exited with code: 0)
    Press return to continue

    die Execute Einstellung war richtig

    Damit das Program läuft, sollte ich das in der Konsole eingeben:

    Code
    sudo killall pigpiod

    ich habe es hier gelernt:

    https://raspberrypi.stackexchange.com/questions/3864…-run-pigpio-pid

    Danke und bis zum nächsten Problem!!!

    Mein OS ist aufm neue Zustand.

    Grüße aus Berlin,

    Golpe



  • ...

    Damit das Program läuft, sollte ich das in der Konsole eingeben:

    Code
    sudo killall pigpiod

    ich habe es hier gelernt:

    https://raspberrypi.stackexchange.com/questions/3864…-run-pigpio-pid

    Ok, damit Du den killall nicht nach jedem Neustart des Pi machen musst, kannst Du über raspi-config -> Interfacing Options den Punkt "Remote-GPIO" ausschalten.

    Na dann weiterhin viel Spass,

    -ds-

  • Guten Abend euch alle!

    Da bin ich mal wieder.

    Für mein Rasenmäherprojekt übe ich in der Wohnung mit meinem alten Saugroboter.

    Letzte Woche hatte ich ein Programm mit geany und die Bibliothek bcm2835 geschrieben und es der Roboter läuft wie erstmal gewünscht.

    Ich habe mich aber gestern für die Bibliothek pigpio entschieden, nach langes Belesen und Ratschläge Einholen.

    Nach eure Hilfe gestern habe ich weiter gemacht und den Code von letzte Woche für pigpio angepasst (scheinbar nicht richtig) und deswegen bräuchte ich eure Hilfe. Ich finde den Fehler nicht.

    Beschreibung

    Ich steuere die 2 unbhängige Motoren des Roboters mit raspberry 3 und ic l293d.

    Für Funktionstesten habe ich ein Tastermodul mit 2 Tastern. Mit einem aktiviere ich beide enable pins des ICs und mit dem anderen simuliere ich die Erkennung eines Hindernisses.

    Mit dem Programm für die Bibliothek bcm2835 Fährt der Roboter vorwärts beim Drücken des ersten Tasters, beim drücken des zweitens hält, fährt ein bisschen zurück, dreht sich und dannach fährt weiter bis man der 2te Taster wieder drückt ( dann dreht er wieder) oder bis man ihm mit dem ersten Taster ausschaltet ( enable)

    Nach dem ich den Code für pigpio angepasst habe funktioniert es nicht.

    Wenn ich den raspi Neustarte und das Programm ausführe kommt das auf die Konsole:


    Und dann passiert nichts. Egal ob ich die Tastern drücke oder nicht.

    Wenn ich die Taster gedrückt habe, die Konsole zumache und das Programm neu ausführe, dann kommt auf die Konsole die ganze Zeit mein Printf "turned " danach ein paar mal " pigpio muss initialisiert werden" danach mein Printf Motors disabled danach pigpio muss initialisiert werden und die ganze Zeit so.

    Wenn ich den raspi neustarte und das Programm ausführe kommt wieder das vom Screenshot.

    Das ist der Code für pigpio

    Und das ist der funktionierenden Code für die lib bcm2835

    Ich hoffe dass ihr mir bei Gelegenheit helfen könnt.

    Auf Code Inhalt, Form, struktur usw. Verbesserungstipps würde ich mich sehr freuen.

    Grüße aus Berlin,

    Golpe



  • Servus,

    das wundert mich jetzt nicht, dass das Programm, das Du für pigpio umgeschrieben hast, nicht funktioniert.

    Wenn Du Dir mal den Sourcecode anschaust wirst Du feststellen, dass Du innerhalb der Schleife gar keine Abfragen der Pin Stati mehr machst. Da kannst Du drücken, so viel Du willst ... das Programm bekommt das nicht mit.

    Der Unterschied liegt hier:

    #define value_b bcm2835_gpio_lev(button)

    #define value_in_en bcm2835_gpio_lev(pin_in_en)

    #define value_out_en bcm2835_gpio_lev(pin_out_en)

    ValEnIn=gpioRead(EnIn);

    ValEnOut=gpioRead(EnOut);

    ValBtn=gpioRead(Btn);

    In Deinem bcm-Programm hast Du die relevanten Daten nicht als Variablen sondern als Makro definiert.

    Eine Sache noch:

    Dein Code ist sehr schlecht lesbar ... u.a. fällt das mit den Makros statt der Zuweisung nicht sofort auf, weil Du Makros so benennst wie normale Variablen.

    Ich halte das zwar auch oft nicht 100% ein, aber bei manchen Sachen solltest Du Dich zumindest an C-Coding-Standards annähern, sonst verstehst Du ziemlich schnell Deinen eigenen Code nicht mehr.

    Also ... checken, ändern, ausprobieren ;)

    cu,

    -ds-

Jetzt mitmachen!

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