kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Zielstellung #4: Motorsteuerung (und Temperaturerfassung)

(EN google-translate)

(PL google-translate)

Nun soll zum Videostream noch die Möglichkeit ergänzt werden, die beiden Gleichstrommotoren des esp32AV vom PC aus anzusteuern und Temperaturdaten vom esp32AV zu empfangen. Dazu wird nun Gebrauch von der UDP-Bibliothek von Processing gemacht.

Materialien zusätzlich zum Laborversuch "Videostream"
  1. Motortreiber L9110
  2. Beide Elektromotoren aus dem Bausatz (siehe Karton "SmartCarChassis")
  3. Rot/weiß-isolierter zweiadrig verdrillter Klingeldraht
Arbeitsschritte
  1. Verlöten der Kontakte der Motoren mit dem isolierten Klingeldraht
  2. Verbinden der Motoren mit dem Motortreiber
  3. Verbinden des Motortreibers mit dem esp32-Modul und FT232RL
  4. Flashen des Testprogramms esp32_CameraWebServer8temperatur auf den esp32.
  5. Installation, Start und Test des Processing-Sketches CaptureJavaRT2022_008temperatur
Blick in die Box

Bild 0-1: Blick in die Box "SmartCarChassis".

zu 1.: Verlöten der Kontakte der Motoren mit dem isolierten Klingeldraht

Da die Kabel bei "SmartCarChassis" zu kurz sind und sich Klingeldraht auch besser mit Lüsternklemmen verbinden lässt, wird Klingeldraht für die Motorverbindungen konfektioniert.

  1. Schneiden Sie zweimal 20cm zwei adrig verdrillten Klingeldraht von den verfügbaren Rollen ab.
  2. Benutzen Sie eine Abisolierzange, um die vier Enden abzuisolieren.
  3. Ordnen Sie die zwei Motoren vor sich geometrisch an, wie im Bild wieter unten (Motorkontakte weisen nach außen) und markieren mittels Edding-Stift den linken mit R, den rechten mit L (entspricht Seiten vertauschtem Blick von unten auf das Chassis)
  4. Führen Sie die Lötarbeiten (SIEHE FAQ "#5 Was ist beim Löten zu beachten?") so aus, dass das rote Kabel oben ist, wenn die Motoren geoemtrisch wie beim späteren Chassis angeordnet sind (siehe nachfolgendes Bild):
...siehe FAQ "#5 Was ist beim Löten zu beachten?" hier: 05_esp32AV/01_Bauanleitung/03_FAQs

Kürzen Sie nach dem Anlöten die überstehenden blanken Kabelenden an den Motorkontakten unter Verwendung eines Elektronikschneiders, damit kein Kurzschluss über das metallene Motorgehäuse entstehen kann!



Ab nun können die Leitungen eindeutig bezeichnet werden und sollten bei allen Fahrzeugen das gleiche bedeuten:


MOTOR-RECHTS-ROT
MOTOR-RECHTS-WEISS
MOTOR-LINKS-ROT
MOTOR-LINKS-WEISS

Code 0-1: Bezeichnungen der vier Motorleitungen

zu 2.: Verbinden der Motoren mit dem Motortreiber

Die Motoren werden wie folgt mit dem Motortreiber verbunden:


Die hier festgelegten Verbindungen sind die endgültigen für das esp32AV.



Werden Kabel vertauscht, führt das zu falschen Reaktionen auf die Steuerbefehle.


Anschluss der Motoren an den Motortreiber.

Bild 0-2: Anschluss der Motoren an den Motortreiber.

Anschluss der Motoren an den Motortreiber (2. Ansicht).

Bild 0-3: Anschluss der Motoren an den Motortreiber (2. Ansicht).


Um induktive Störungen durch die Motoren zu verringern, können Keramikkondensatoren an den Motorkontakten parallel angelötet werden.


zu 3.: Verbinden des Motortreibers mit dem esp32-Modul und FT232RL

Anschluss des Motortreibers an den esp32cam und den USB-Seriell-Umsetzer (FT232RL), der hier als Stromversorgung dient.

Bild 0-4: Anschluss des Motortreibers an den esp32cam und den USB-Seriell-Umsetzer (FT232RL), der hier als Stromversorgung dient.

Gesamt-Schaltplan für das esp32AV.

Bild 0-5: Gesamt-Schaltplan für das esp32AV.


esp32 <-> FT232RL (USB-Seriell-Umsetzer und Stromversorgung)
VCC   <-> VCC
GND   <-> GND
U0R   <-> TX
U0T   <-> RX

L9110 (Motortreiber-Platine) <-> esp32 
1. B-IA: Motor B Input A     <-> IO2
2. B-IB: Motor B Input B     <-> IO14
5. A-IA: Motor A Input A     <-> IO12
6. A-IB: Motor A Input B     <-> IO15

L9110 (Motortreiber-Platine) <-> FT232RL
3. GND: ground               <-> GND
4. VCC: 2.5V-12V DC          <-> VCC

L9110 (Motortreiber-Platine) <-> MOTOR L (links)
MOTOR A aussen               <-> MOTOR-LINKS-ROT
MOTOR A innen                <-> MOTOR-LINKS-WEISS

L9110 (Motortreiber-Platine) <-> MOTOR R (rechts)
MOTOR B aussen               <-> MOTOR-RECHTS-WEISS
MOTOR B innen                <-> MOTOR-RECHTS-ROT

LED mit Vorwiderstand <-> esp32
Kathode               <-> GND
Anode                 <-> IO16

RESET-Leitung  <-> esp32
GND <-> IO16


Code 0-2: Tabellarische Übersicht über alle Verbindungen.


Die Elektronik mit den verbundenen Motoren wird so unverändert in das Fahrzeug eingebaut.


zu 4.: Flashen des Testprogramms esp32_CameraWebServer8temperatur auf den esp32.

Ablauf, vergleiche auch "Elektronik und Software / Videostream" und siehe FAQ#7.

esp32_CameraWebServer8temperatur.zip
CaptureJavaRT2022_008temperatur.zip
  1. Laden Sie esp32_CameraWebServer8temperatur.zip herunter.
  2. Kopieren Sie esp32_CameraWebServer8temperatur.zip nach /home/fhbstud/Arduino/ und entpacken es dort (Rechte Maustaste "hier entpacken").
  3. Laden Sie CaptureJavaRT2022_008temperatur.zip herunter.
  4. Kopieren Sie CaptureJavaRT2022_008temperatur.zip nach /home/fhbstud/sketchbook/ und entpacken es dort (Rechte Maustaste "hier entpacken").
  5. Verbinden Sie die Schaltung über USB mit dem PC.
  6. VERBINDEN SIE DEN BOOT-mode Jumper beim ESP32-Board
  7. BETÄTIGEN SIE EINMAL RESET beim ESP32-Board.
  8. Starten Sie die Arduino-IDE
  9. Wählen Sie im Sketchbook "esp32_CameraWebServer8temperatur" aus.
  10. Speichern Sie eine Kopie des Sketches unter dem Namen "esp32_CameraWebServer9temperatur" ab
  11. Passen Sie die Zeilen 24 und 25 in dem Sketch "esp32_CameraWebServer9temperatur" passend zu Ihrem Hotspot an.
  12. Übertragen Sie den Sketch "esp32_CameraWebServer9temperatur" auf den esp32.
  13. Trennen Sie die USB-Verbindung zwischen PC und Schaltung.

Der Reset muss vor jedem neuen Flash-Vorgang beim esp32 betätigt werden.



Der BOOT-mode Jumper ist beim Flashen verbunden, aber beim Normalbetrieb getrennt.



Also: BOOT-mode Jumper vor Verbinden mit Akku (Normalbetrieb) trennen und vor dem Verbinden mit dem PC verbinden.



Nach dem Flashen NICHT MEHR RESET BETÄTIGEN!


zu 5.: Installation, Start und Test des Processing-Sketches CaptureJavaRT2022_008temperatur

Ablauf, vergleiche auch "Elektronik und Software / Videostream" und siehe FAQ#8.

  1. Starten Sie Ihren Hotspot
  2. Verbinden Sie zuerst den PC/Laptop mit dem Hotspot
  3. TRENNEN SIE DEN BOOT-mode Jumper beim ESP32-Board
  4. Versorgen Sie die Schaltung über die Powerbank, dann sollten nach einer Weile zwei Geräte beim Hotspot als verbunden angezeigt werden.
  5. Starten Sie Processing.
  6. Wählen Sie im Sketchbook von Processing CaptureJavaRT2022_008temperatur aus.
  7. Speichern Sie eine Kopie von CaptureJavaRT2022_008temperatur unter CaptureJavaRT2022_009temperatur ab.
  8. Passen Sie in CaptureJavaRT2022_009temperatur die IP-Adresse des esp32 in Zeile 6 an.
  9. Starten Sie CaptureJavaRT2022_009temperatur und das Kamerabild des esp32 sollte in einem Fenster sichtbar werden.

Sollte der esp32 nicht im Hotspot sichtbar werden, so booten Sie testweise verbunden mit dem PC und schauen sich die Ausgaben beim Seriellen Monitor in der Arduino-IDE an.



Entfernen Sie immer die Motortreiber-Platine (ausstecken) vor jeder Inbetriebnahme des esp32cam:


  1. entfernen Sie den Akku
  2. Entfernen Sie den Motortreiber,
  3. verbinden den Akku,
  4. warten Sie, (jetzt sollten wieder zwei Geräte verbunden sein)
  5. stecken Sie den Motortreiber wieder auf.

Erfahrungsgemäß muß beim Booten des esp32 kurz der Motortreiber abgesteckt werden, damit es sich beim Hotspot anmeldet.



Sollte der esp32 immer noch nicht im Hotspot sichtbar werden, so booten Sie testweise verbunden mit dem PC und schauen sich die Ausgaben beim Seriellen Monitor in der Arduino-IDE an.


Analysieren Sie in CaptureJavaRT2022_009temperatur die Zeilen 146 bis 207 testen anhand dessen die Motorensteuerung und die Datenübertragung der Temperatur.

HINWEIS: Der Fokus der Maus muss dabei im Fenster sein, der das Video anzeigt. Klicken Sie dazu einmal in dieses Fenster und betätigen Sie erst danach die Tasten 0 bis 8, sowie die Leertaste.

void keyPressed() 
{
  if (key == ' ') 
  {
    if (cam.isAlive()) 
    {
        cam.stop();
        NACHRICHT = "Kamera gestoppt";
    }    
    else
    {
        cam.start();
        NACHRICHT = "Kamera gestartet";
    }    
  }
  else if(key=='0') //stopp
  {
       fahrt(0.0,0.0);
       NACHRICHT = "Fahrt gestoppt";
  }
  else if(key=='1') //beide vor
  {
       fahrt(1.0,1.0);
       NACHRICHT = "Fahrt VORWÄRTS";
  }
  else if(key=='2') //beide rueck
  {
       fahrt(-1.0,-1.0);
       NACHRICHT = "Fahrt RÜCKWÄRTS";
  }
  else if(key=='3') //links langsam vor
  {
       fahrt(0.75,0.0);
       NACHRICHT = "Fahrt LINKS langsam vor";
  }
  else if(key=='4') //rechts langsam vor
  {
       fahrt(0.0,0.75);
       NACHRICHT = "Fahrt RECHTS langsam vor";
  }
  else if(key=='5') //links langsam rück
  {
       fahrt(-0.75,0.0);
       NACHRICHT = "Fahrt LINKS langsam zurück";
  }
  else if(key=='6') //rechts langsam rück
  {
       fahrt(0.0,-0.75);
       NACHRICHT = "Fahrt RECHTS langsam zurück";
  }
  else if(key=='7') //Kameralicht AN
  {
       send(4,1);
       NACHRICHT = "Kameralicht AN";
  }
  else if(key=='8') //Kameralicht AUS
  {
       send(4,0);
       NACHRICHT = "Kameralicht AUS";
  }
  
}

Code 0-3: Auszug der Zeilen 146 bis 207 von CaptureJavaRT2022_009temperatur (Methode "keyPressed(){}").