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"
|
Arbeitsschritte
|
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.
|
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.
Bild 0-2: Anschluss der Motoren an den Motortreiber.
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
Bild 0-4: Anschluss des Motortreibers an den esp32cam und den USB-Seriell-Umsetzer (FT232RL), der hier als Stromversorgung dient.
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.
CaptureJavaRT2022_008temperatur.zip
|
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.
|
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:
|
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(){}").