RC-Car mit Raspberry Pi steuern

  • Hallo liebes Raspberry Pi Forum,


    ich bin neu auf dieser Seite und auch neu im Raspberry Pi Programmieren.


    Mein Anliegen: Ich möchte ein RC-Car von HPI Racing mit meinem Raspberry Pi 3 Model B steuern bzw. in den Antriebsstrang eingreifen, da mit einem Ultraschallsensor, einem HC SR04, ein Hindernis erkannt wird und das Fahrzeug nicht auf die Wand fahren soll.


    Problem: Wie nehme ich die Signale vom Empfänger am Fahrzeug in meinem Raspberry Pi auf und gebe die geänderten Signale an den Motor Regler weiter. Der Empfänger am Fahrzeug ist ein "RF-40 hpi 2.4 GHz 3 Channel Receiver". Ich habe die Signale natürlich mit einem Oszillator gemessen und es sieht wie im folgenden Bild aus. Das Signal ist ein PWM Signal mit einer Spannung von 3,275V und einer Pulsbreite von 1,48ms, in der Neutralstellung der Fernsteuerung. Die Fernsteuerung ist ein "TF-40 hpi-racing 2.4 GHz FHSS Digital RC System".



    forum-raspberrypi.de/attachment/17635/



    Frage: Was muss ich zwischen Receiver und Raspberry Pi schalten damit ich die Daten auswerten kann und was muss ich zwischen Raspberry Pi und Motor Regler schalten damit der Motor vernünftige Signale bekommt?



    Ich bedanke mich im Voraus bei euch und hoffe auf eine nette Unterhaltung.



    Mit freundlichen Grüßen

    Lars Mayer

  • Foto vom Auto?


    Kein Raspberry, sondern vllt einen arduino oder ESp8266.

    Dann hast du schnellere Bearbeitung von den Ereignissen.

    Soll es denn autonom fahren oder warum sollen noch Signale der Fernbedienung berücksichtigt werden?

    Wenn's brennt 112 hilft weiter!

  • Linus


    Naja, stimmt schon.. aber dann würden sich die Signale der Fernbedienung und der Schutzvorrichtung beißen ..

    Deshalb die Frage, denn dann wäre autonom besser ;)

    Wenn's brennt 112 hilft weiter!

    Edited once, last by raspbastler ().

  • Servus LarsMayer

    mal abgesehen davon, dass der Link zu Deinem Bild kaputt ist ...


    Das ist imho jetzt nicht so ganz trivial. Zudem ist ein Raspi da eher ungünstig, weil er nicht echtzeitfähig (siehe Post von raspbastler) und zudem vollkommen oversized ist.


    Ich sehe da jetzt mehrere Möglichkeiten:

    1. Du verbaust einen "Schalter" für die Stromversorgung des Motors, den Du über einen Mikrocontroller ansteuerst, der den Ultraschall-Sensor abfragt und bei einem Hindernis einfach den Strom abschaltet.

    Vorteil: pragmatische und einfachste Lösung

    Nachteil: der Wagen rollt trotz Stromabschaltung einfach weiter und knallt gegen die Wand.

    Hardware: Relais ist in dem Fall imho suboptimal (Stichwort Funkenschlag) , besser ein entsprechender MOSFET mit passendem Kühlblech.


    Du hängst einen Arduino in die Signalleitung zwischen Empfänger und Motorregler.

    Das Signal des Empfängers wird vom Arduino an einem EIngang gelesen und 1:1 an den Ausgang weitergegeben, an dem der Motorregler angeschlossen ist.

    Allein diese Funktion wird ein Raspi imho nicht leisten können (Stichwort Scheduler und Latenzzeiten).

    An diesem Arduino kannst Du nun den Sensor aschliessen und auswerten. Im Falle eines Hindernisses ignoriert der Arduino die vom Empfänger eingehenden Signale und schickt stattdessen das Signal für "Bremsen" an den Motorcontroller.
    Vorteil: imho zuverlässigster Ansatz

    Nachteil: mehr Aufwand.


    cu,

    -ds-

  • Hallo Leute,


    danke für eure Vorschläge und Anregungen.


    Ich will bzw. "muss" einen Raspberry Pi verwenden, da es bereits Projekte vor mir gab. Die haben einige andere Sensoren an eine Externe-Platine angebracht, die aber für mich nicht relevant sind, jedoch muss ich meinen Ultraschallsensor auch dort integrieren was für mich keine Probleme darstellt.


    raspbastler in diesem Link gibt es das Handbuch zum Fahrzeug, ist besser als Bilder.8o

    https://www.hpiracing.com/asse…_bullet_flux_glb_m_v1.pdf


    Das Fahrzeug soll nicht Autonom fahren, sondern soll noch über die Fernsteuerung kontrolliert werden.

    Die Idee war das Signal mit dem Raspberry abzufangen, auszuwerten und bei Gefahr verändert an den Motor Regler weiter zu geben.


    dreamshader eine Abschaltung der Stromversorgung führt eben zu einem weiterrollen des Fahrzeuges und ist nicht besonders gesund. =O


    Gibt es nicht die Möglichkeit einen AD/DC oder Pegelwandler zu benutzen? Wenn ja weiß ich leider nicht was für einen man hierfür verwenden kann und wie man sowas Programmiert.


    Beste Grüße

    Lars Mayer

  • Die Idee war das Signal mit dem Raspberry abzufangen, auszuwerten und bei Gefahr verändert an den Motor Regler weiter zu geben.

    Nichts anderes macht die von mir vorgeschlagene Arduino-Lösung.

    Du kannst das mit einem Raspi nach demselben Schema versuchen, ich bezweifle nach wie vor, dass das vernünftig funktioniert.

    In diesem Fall benötigst Du in der Tat unbedingt Pegelwandler.

    Wobei mir der Grund für den Raspi nach wie vor unklar ist, wenn es nur um genau diese Funktionalität geht ...


    cu,

    -ds-

  • Dann mach’s anders.. Der RasPi ist nur der Empfänger für die 2.4ghz Signale dieser leitet sie an einen arduino weiter um dort dann verarbeitet zu werden.


    Dann benutzt du einen RasPi und hast einen guten Kompromiss.


    Für wen baust du das eigentlich ?

    Wenn's brennt 112 hilft weiter!

  • Der RasPi ist nur der Empfänger für die 2.4ghz Signale

    Du meinst sicherlich was anderes, denn das wird ziemlich schwierig, da das ja u.a. auch die Signale für die Lenkung beinhaltet, die dann für den Lenk-Servo umgesetzt und weitergeleitet werden müssten.

    cu,

    -ds-

  • Nene,


    Über die Fernbedienung werden Informationen wie Gas,Bremse und die Lenkung übertragen.

    Jetzt empfängt der RasPi allesund leitet es an den Arduino weiter. Dieser kontrolliert dann ob ein Hindernis vorhanden ist und gibt anstatt das Signal Gas den Befehl langsamer fahren und schließlich das bremssignal weiter.

    Der Motorregler im Fahrzeug übersetzt das alles für die Servo und den Motor..



    Komme aus dem Modellbaubereich ;)

    Wenn's brennt 112 hilft weiter!

  • Na aber was soll der Arduino mit den Lenksignalen ... ?

    Einfach wäre, das PWM-Signal zwischen Motorregler und Empfänger abzugreifen und durchzuschleifen. Bei einem Hindernis dann Rückwärtsgang oder Bremse. Der Rest bleibt so wie er ist ...

    Das arbeitet autonom und unabhängig vom Rest und wenn dann noch ein Raspi eingebaut werden soll, dann soll er ihn halt einbauen.


    cu,

    -ds-

  • Hallo Leute,


    ich habe heute nochmals nachgefragt ob ich einen Arduino benutzen darf. Die Antwort war ziemlich direkt NEIN.

    Deswegen hab ich mir einen Pegelwandler besorgt und versuche es jetzt damit. Das ist ein BOB-12009 von SparkFun https://www.sparkfun.com/products/12009


    Jetzt hab ich das Problem was für Widerstände/Dioden/Kondensatoren/Spulen muss ich vor und nach dem Pegelwandler anbringen.

    Programmier seitig stehe ich auch auf dem Schlauch, da die Signale sehr "langsame" Frequenzen aufweisen.


    Beste Grüße

    Lars Mayer


  • Hi,

    gar nix ... LV an 3V3, HV an 5V, GND an GND ...

    und dann GPIO auf LV rein, HV auf ... den korrespondierenden Pin mit 5V


    btw: was wandelst Du da und was bitte soll das für ein Signal sein?

    Wie genau hast Du das jetzt alles, inkl. Levelshifter, verschaltet -> Skizze, Schaltplan ...


    cu,

    -ds-

  • Für wen machst du denn das Projekt?

    Woher die strengen Auflagen?


    Wenn du pfiffig bist, dann Bau dir ein shield für den Pi, auf diesem wird dann ein arduino montiert und kann dann mit dem pi kommunizieren.

    Du kannst dann auch die weitere Elektronik drauf auslagern. Ist zwar mehr Aufwand, lohnt sich aber und dein (prof) wird beeindruckt sein!

    Wenn's brennt 112 hilft weiter!

  • Ich hatte das selbe Problem, allerdings nicht mit einem RC-Car sondern mit einen Lasekanonenpanzer (fährt langsamer).

    Ich hab einfach Sender und Empfänger selber gemacht mit Atmega's und RFM12 433Mhz Transceiver Modulen, und einfach einen 8 Byte Datenstream hin und her geschickt, damit hat man alle Möglichkeiten. Da kann man sicher auch einen Raspi nehmen, ist halt ein wenig platzraubend.

  • Hallo Leute,


    ich war die Tage an diesem Projekt und andere Prüfungen, deswegen konnte ich nichts im Forum schreiben, sorry.


    Ich habe den Pegelwandler jetzt komplett weggelassen, wollte nicht so wie ich will.


    Nun habe ich einen Relais verwendet mit dem die Signale entweder durchgelassen werden oder nicht. Das funktioniert auch so schon ganz gut, zumindest im Testprogramm, aber wenn ich es im Ultraschall-Programm genau so mache, springen die Räder kurz an und dann wieder aus und dann wieder an usw. Meine Vermutung ist, dass die Pins obwohl sie auf LOW gesetzt sind immer ein-wenig strom durchlassen und es kommt dann nicht zum Stillstand der Räder.

    Stimmt das so oder wie kann ich das lösen.


    Eure Vorschläge sind Willkommen.


    Beste Grüße

    Lars Mayer