Turtle Roboter

  • Hallo Bernhard,


    wenn du den bestehenden Ultraschallsensor durch einen der neuen Sensoren ersetzen möchtest, dann kann einfach die Klasse Augen auf den neuen Sensor umgeschrieben werden. Oder besser eine Kopie von 'Augen' machen und als 'Augen2' abspeichern.


    Ich wollte eigentlich die 'Augen' stehen lassen, inklusive der Möglichkeit nach links und recht zu schauen. Allerdings nur wegen dem visuellen Effekt. Drei der neuen Sensoren sollten unscheinbar im Roboter montiert werden und die eigentliche Messung durchführen.


    Jetzt habe ich ein Problem. Die neuen Sensoren haben eine I2C - Schnittstelle. Das wäre eigentlich gut, da damit mehrere Sensoren an denselben zwei Pins angeschlossen werden können. Allerdings müssen sie dazu verschiedene I2C - Adressen haben. Leider haben aber alle dieselbe I2C-Adresse und diese lässt sich nicht verändern. Somit kann ich nur einen Sensor anschliessen.


    Ich bin noch nicht dazu gekommen, das Problem zu lösen, darum kann ich dir momentan auch noch keinen Code liefern. Am Donnerstag soll das nächste Roboter-Video kommen. Diesmal geht es um Linienverfolgung.


    Sobald das Video fertig ist, werde ich schauen, ob ich auf die Schnelle ein 'Augen2' hinkriege, das mit einem der neuen Sensoren arbeitet.


    Gruss

    René

  • Hallo René,


    nun sind meine neuen Sensoren angekommen. Sie funktionieren prächtig. Meine Fragen: wie implementiere ich den neuen Sketch (f.TOF10120) in das Hauptprogramm (4_Hindernis7b.ino)? Wahrscheinlich muß man augen.cpp/augen.h komplett austauschen. Und wie beeinflußt dieser die anderen Programmteile?


    Gruss

    Bernhard

  • Hallo René,


    danke für deine Info. Mein v.g. Sketch läuft sehr wohl auf dem Arduino und schreibt auf den SM , aber der Sensor zeigt keinerlei Aktivitäten - habe ihn per I2C Schnittstelle an A4 und A5 (SDA/SCL) angeschlossen. Kann es sein, dass in meinem Sketch eine fehlende Verknüpfung zwischen Mikrocontroller und Sensor besteht? Da ich die Programmierung noch nicht so richtig beherrsche, meine Frage an dich: könntest du, wenn du die Zeit dafür hättest, dir diesen Sketch einmal anschauen?


    Gruss

    Bernhard

  • Hallo René,


    heute ist nun endlich der lang ersehnte Sensor (ToF 10120) angekommen. Leider scheint er nicht funktionsfähig sein. Nachdem ich über folgende Site (https://create.arduino.cc/proj…asure-distance-lcd-9e549a) informiert habe, wurde der angehängte Sketch verwendet. Der SM gab daraufhin nur 0mm aus. Die eingebaute Laser-Diode zeigte auch keine Reaktion (dunkel).

    Vieleicht siehst eine Möglichkeit dieses Modul doch noch in Gang zu bringen?

    Hast du übrigens deine Sensoren schon erhalten?


    Gruss

    Bernhard

  • Hallo René,


    danke für die Auskünfte. Mal schauen, was der neue Sensor leistet. Es dauert nur eben ein bisschen. Übrigens habe ich mir schon die Software für den neuen Kurs installiert. Hat alles prima geklappt. Den ESP32 (WiFi kit 32 von Heltec) habe ich mir auch schon besorgt. Das gehört aber sicher in die andere Forenrubrik ;)


    Gruss

    Bernhard

  • Theoretisch ist das nicht möglich. 1000 zeigt er an, wenn innerhalb von 50 ms kein Echo empfangen wird. Das entspricht etwa 85 cm. Dann wird angenommen, dass kein Hindernis festgestellt wurde.

    225 ( das wäre dann ja 225 cm!) sollte es gar nie geben, da der Timeout vorher kommen sollte.


    In früheren Programmen wurde remote_init() verwendet. In den neueren Programmen ist es remote.init(). Das hat mit der Version von remote.h und remote.cpp zu tun. Das liegt an einer Fehleinschätzung meinerseits. Ich dachte, die Einführung von Klassen würde die Zuschauer überfordern und habe daher klassenlose Module vorgestellt (das sind die mit remote_init()). Ich musste aber feststellen, dass diejenigen Zuschauer, die in der Lage sind selbst Module zu schreiben auch in der Lage sind Klassen zu erstellen. Für diejenigen welche den Code nur lesen oder herunterkopieren ist es eigentlich egal. Daher werde ich es in Zukunft richtig machen und immer mit Klassen arbeiten (das wäre dann remote.init()). Eine etwas genauere Erklärung zu Klassen ist im Arduino - Kurs zu finden.


    Gruss

    René

  • Hallo Bernhard,


    vielen Dank: Ich hoffe, dass der neue Kurs für Viele verständlich und nützlich wird. Es gibt einige sehr gute deutschsprachige Kanäle auf Youtube. Jeder versucht ein ausgewogenes Verhältnis zwischen Unterhaltung und Wissensvermittlung zu finden. Bei mir sind die Inhalte oft etwas softwarelastig. Das hat wahrscheinlich mit meinem beruflichen Hintergrund zu tun.


    Ich habe übrigens einige der kleinen Lasersensoren bei Aliexpress bestellt. Ich bin gespannt, was man damit erreichen kann.


    Gruss

    René

  • Hallo René,


    habe versucht den Augenabstand auf dem Seriellen Monitor auszugeben. Dazu habe ich geringf. Änderungen im HP (bei mir ist es "HindernisTest1") vorgenommen, wie du im T.5 Hinterniserkennung beschreibst.

    Zwei Fragen habe ich:

    - SM zeigt, wenn kein Hindernis 225 und wenn ein Hindernis 1000 an. Wie kann das sein?

    - ist es irrelevant, ob man die Befehlszeilen mit Unterstrich oder mit Punkt kommentiert? (bspw. remote.init() oder remote_init() )


    Gruss

    Bernhard

  • Hallo René,


    habe gleich den benannten Sensor bestellt, und werde auch so noch mit den Einstellungen experimentieren. Mal schauen was man herauszuholen kann.

    Übrigens, deine Beiträge zu diesen Themen hier im Forum und bei Youtube sind absolute Spitze (jedenfalls im deutschsprachigem Raum - die anderen kann ich nicht beurteilen). Das ist genau das Richtige für Leute wie mich als Beginner (mit etwas Elektronikvorkenntnissen). Ich wünschte nur, es würden sich etwas mehr Leute (vor allem junge Menschen) für diese Themen interessieren.

    Also, vielen Dank und einen guten Start für deinen neuen Kurs Micropython mit ESP32!

    Ich freu mich drauf.


    Gruss

    Bernhard

  • Hallo Bernhard,


    schön, dass es funktioniert. Das Ganze kann natürlich noch stark verbessert werden. So sind die verwendeten Ultraschallsensoren zwar recht beliebt, da sie sehr billig sind und vom Aussehen her an Augen erinnern. Mehrere kleinere und unscheinbarere, aber qualitativ hochstehende Sensoren (z. Bsp. https://www.aliexpress.com/item/33046911235.html ) könnten das Ergebnis sicher verbessern.


    Gruss

    René

  • Hallo René,


    der Roboter reagiert, wie du es beschrieben hast. Vielen Dank dafür! Nach ersten Fahrversuchen kann ich einschätzen, dass er seine Sache schon ganz gut macht. Natürlich bedarf es noch einiger Feineinstellungen, was die Motorgeschwindigkeit und die Ultraschallmessung betrifft. So habe ich z.B. festgestellt, dass der Roboter zu nah an das Hindernis heranfährt und damit keine vernünftigen Echo-Signale erhält. Das gleiche gilt dann auch, wenn der US-Sensor nur zur Hälfte vom Hindernis bedeckt wird.

    Mit besten Grüssen

    Bernhard

  • Hallo Bernhard,


    versuche bitte dieses Programm.

    Beim Einschalten sollte der Roboter stehen bleiben.

    Ein Druck auf die 'Vorwärts-Taste' sollte den Roboter starten. Er sollte ausweichen und sich dabei umschauen.

    Mit der Taste 2 sollte er gestoppt werden können.


    Es könnte sein, dass rechts und links vertauscht sind. Dann müssten in motor.cpp die Pins getauscht werden.


    //=== Konstanten

    //Pindefinitionen für L298N mit ENA/ENB

    const int links_richtung_PinB = 9;

    const int links_richtung_PinF = 8;

    const int links_geschwindigkeit_Pin = 10;


    const int rechts_richtung_PinB = 7;

    const int rechts_richtung_PinF = 6;

    const int rechts_geschwindigkeit_Pin = 5;


    Gruss

    René

  • Hallo Bernhard,


    tut mir leid, dass ich momentan etwas auf Tauchstation gegangen bin. Ich bin das ganze Wochenende unterwegs und habe vermutlich erst wieder am Dienstag Zeit, um etwas anzuschauen.

    Wenn du die Ansteuerung mit ENA und ENB geschafft hast, ist das ideal. Der H-Brücken - Chip L298N wird auch normalerweise so angesteuert. Ich werde es sicher anschauen, es wird leider aber noch einige Tage dauern.


    Gruss

    René

  • Hallo René,


    habe einmal versucht mit folgendem Sketch (s.Anhang) den Motor-Controller (LH-95) anzusteuern. Dazu mußte ich Pin-Belegungen am Arduino verändern, einschließlich der Einbindung von ENA und ENB. Macht für mich den Eindruck, dass dies von Seiten des Motor-Controllers funktioniert. Vielleicht kann man das ja in das Gesamtkonzept 4_Hindernis7.ino einbinden?


    Gruss

    Bernhard

  • Hallo René,

    im Anhang sende ich dir die gewünschte Datei remote.ccp. In dieser habe ich nur die vorhandenen Senderadressen mit denen meines IR-Senders ausgetauscht.


    Freundlichen Gruss

    Bernhard