Arduino mit Raspberry Pi steuern um mehrere Steppermotoren anzusteuern

  • Guten Tag zusammen,


    Vorerst. Ich habe keine Ahnung und davon jede Menge. Ich bin an einer Fachschule und bin mein Elektrotechnikerprojekt am Planen. Würde ganz gerne einen Roboterarm bauen, der Positionen speichern und wieder anfahren kann. Würde das gerne über ein Pi und Arduino realisieren. Über Python würde ich gerne eine GUI erstellen, die den Arm steuern kann, Position speichert und wieder anfährt. Der Arm soll über den Arduino angesteuert werden. Meine Frage ist nun, wie kann ich mit dem Pi über den Arduino den Motor ansteuern? Also Softwaremäßig. Finde zwar wie die Zwei miteinander kommunizieren können aber keinen Programmablauf dazu. Sprich, wo muss ich programmieren. Arduino (C oder C+) oder Python bzw. Raspberry. Wie kann ich über den Raspberry den Ausgang vom Arduino ansteuern oder Eingänge abfragen? Hab nichts nützliches im Netz gefunden. Kann mir jemand da helfen. Kennt da jemand doch eine gute Seite. Habe bis jetzt eine Arduino Mega und PI 4 mit 8GB RAM. Leichte Python und Arduino Kenntnisse

  • Verbinde den Arduino per USB mit dem Raspberry.


    Der Arduino meldet sich als serielle Schnittstelle an und kann so mit dem Raspberry kommunizieren. Auf dem Raspberry sieht man den Arduino an der seriellen Schnittstelle und auf dem Arduino kommen die Daten von der Konsole. (Das ist zumindest bei einem Uno so)

  • Moinsen

    Meine Frage ist nun, wie kann ich mit dem Pi über den Arduino den Motor ansteuern? Also Softwaremäßig.

    Das musst du in zwei Aufgabenbereich unterteilen. Einmal die Programmierung des Arduino selber, und dann die Kommunikation des Arduino mit dem RasPi während der eigentlichen Programmausführung.
    Die Kommunikation zur Programmierung erfolgt wie Tell schon richtig sagte über die USB Schnittstelle.
    Ob du diese Schnittstelle auch nutzen möchtest um über einen SW Schnittstelle Serial dann im Betrieb mit dem PI zu kommunizieren, oder ob du dann aber auch mit einem notwendigen Levelshifter ( Pegelwandler 3,3 V auf 5 Volt und umgekehrt ) dann eine andere Bus- oder Kommunikationsschnittstelle nutzen möchtest bleibt dir überlassen. Dabei sollte man die räumliche Entfernung RasPi zum steuernden Arduino Board im Auge behalten. Hier kann man je nach Art der Schnittstelle nur gewisse Distanzen überbrücken.
    Dann ist die noch die eigentlich erste Frage zu stellen, wie kommt die Information ( auch wieder Abhängig um wie viele Freiheitsgrade es sich bei diesem "Roboter-Arm" handelt ) der einzelnen Gelenke / Stellmotoren / Servos in das PI ?
    Willst du dich hier, wenn Servos ( Modellbauservos ) zur Anwendung kommen rein auf den letzten angefahrenen und damit ausgegebenen Winkelwert = PWM Value verlassen, oder willst du diese Motorbewegungen mit einem eigenen, unabhängigen Meßsystem verifizieren ?


    Was passiert dann im Falle eines Stromausfalles, oder dem kurzzeitigen Ausfall der Steuerelektronik auf dem Arduino Board ? Hier nur der Hinweis falls du auf PWm gesteuerte Servos setzen möchtest, aber die ganze Sache einen ernsthaften Hintergrund hat, und nicht nur eine technische Spielerei werden soll: Wenn das Arduino in eine RESET geht warum auch immer als "Störfaktor" woher weiß dann die Steuereinheit RasPI in welcher Winkelstellung sich die einzelnen Elemente des Armes befinden, und was würde passieren wenn diese beim Neustart zwanghaft auf oder in eine Startposition gefahren werden ? Können hierbei Kollisionen entstehen ?

    Dazu fehlen hier nun weitere Angaben wie die Gelenke oder was du an diesem Arm, als Aktoren verwenden möchtest, angesteuert werden.

    Franky

  • Moin Arends98,


    erstmal: Herzlich Willkommen im Forum!


    Mein erstes Ziel wäre, das der Arduino Mega alles machen kann.

    Er wird eingeschaltet. Der Arm fährt in eine Grundposition. Dann fährt der Arm seinen programmierten Weg ab.

    Der Mega weiß, nach der Initialisierung, immer wo der Arm steht. Immer von der Grundpositonierung ausgehend.

    Wenn du mehrere Haltepunkte vorgesehen hast, dann kann man sie in einem Speicherbereich speichern oder auch in dem Eeprom des Megas speichern. Das ist dann die Anlernphase.

    Dann brauch man später nur sagen,fahre Position 3 an.


    Wenn das Alles funktioniert, dann kann man sich überlegen wie man die API gestaltet.

    Grob geschrieben, kann man alle Funktionsaufrufe aus der Loopschleife des Arduinos in den Raspberry verlagern. Er gibt dann, via Schnittstelle, die Befehle und auf dem Arduino rennt nur eine Empfängerschleife.


    So würde ich das machen. Nur ein Vorschlag...


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Dabei sollte man die räumliche Entfernung RasPi zum steuernden Arduino Board im Auge behalten. Hier kann man je nach Art der Schnittstelle nur gewisse Distanzen überbrücken.

    für meinen rolladen Arduino nano328p (im Zählerkasten) nutze ich für Daten und Programmierung den

    sharkoon USB lan 400 webserver, ein Raspi als USB Webserver ginge auch.

    https://www.tecchannel.de/a/us…rfuegbar-machen,2075505,2

    Images

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Man könnte aber auch statt dem Arduino einen ESP verwenden und die Steuerung damit drahtlos machen.

    der Plan existiert, genau wie eine Platinen Vartiante, aber keiner macht es!

    Merke, nichts ist dauerhafter als ein funktionierendes Provisorium, denn "never touch a running system" :lol::angel:


    Beim ESP habe ich bei OTA und Serialprint über putty aufgegeben, ich bin halt kein begnadeter Progger und dann stänkert meine Fritzbox auch noch mit den gehaltenen wlan Verbindungen nach ESP Neustart, also ohne disconect am Start, kein connect und lauter solche Fallstricke.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • jar

    Natürlich, wenn's funktioniert dann passt's auch. :)


    Ist nur die Frage ob beim Projekt des TE die Kabelvariante machbar ist. Kommt halt auf die Distanz zwischen RPi und Arduino an und ob das Kabel sinnvoll verlegt werden kann. Ich habe hier eine kleine Wetterstation mit einem ESP und e-Paper-Display, das von einem 18650 Akku gespeist wird und sich die Wetterdaten per WLAN aus dem Internet zieht. Das Ding hängt komplett kabellos an der Wand und funktioniert prächtig. Es geht also.

  • Kommt halt auf die Distanz zwischen RPi und Arduino an und ob das Kabel sinnvoll verlegt werden kann

    dann macht er eben ein wlan Brücke zwischen 2 PI geht ja auch. Man kann auch auf den abgestzten Raspi die Arduino Ide installieren den Arduino anstecken und fernprogrammieren sowie serial print lesen und den auch fernsteuern mit jedem Terminalprogramm, mache ich ja auch über sharkoon usb lan400, über VNC und so weiter.

    Sitze gerade in der Küche und frage über wlan und Hyperterm die Rolladenfunke am nano328p ab:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar ().