kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Zielstellung #2: Blinkende LED

(EN google-translate)

(PL google-translate)

Zunächst soll die Entwicklungsumgebung für den esp32 eingerichtet und getestet werden. Eine blinkende LED kann als so etwas wie ein "Hello world-Programm" im Mikrocontrollerbereich angesehen werden: Es ist meistens das einfachste, was sich programmieren lässt, bei dem ein nach Außen sichtbarer Effekt auftritt, durch den nachgewiesen wird, dass man den Umgang mit der Entwicklungsumgebung beherrscht.

Voraussetzungen
  • Sie sollten in der Lage sein, die PCs im PC-Pool IWZ140 unter Linux zu booten und sich dort mit Ihrem Account anzumelden.
Materialien
  1. USB-Mini-Datenkabel
  2. USB-Seriell-Umsetzer (FT232RL FTDI USB zu TTL serieller Konverter)
  3. ESP32-CAM
  4. PC oder Laptop (hier Betriebssystem Xubuntu)
  5. Arduino IDE 1.8.X (beispielsweise 1.8.3, 1.8.5 oder 1.8.19, nicht 2.0)
  6. 5mm LED
  7. 220 Ohm Kohleschicht-Widerstand (Farbcode rot rot braun gold)
Internet-Adressen
https://www.arduino.cc/en/software -- Quelle für die Arduino IDE 1.8.19 (bitte weiter herunterscrollen, erst erscheint derzeit Version 2.0).
https://cdn.shopify.com/s/files/1/1509/1638/files/ESP32-Cam_DE.pdf -- Anleitung bei AZ-Delivery
Arbeitsschritte
  1. Falls nicht vorhanden: Arduino-IDE 1.8.X installieren, nicht 2.0 und ESP32-Bibliotheken nachinstallieren.
  2. Auf ESP32-CAM die Kamera aufstecken und mit Doppelklebeband fixieren.
  3. Schutzfolie der Kamera entfernen.
  4. Jumper auf USB-Seriell-Umsetzer links auf 5Volt-Seite zum GND-Anschluss hin aufsetzen.
  5. LED mit Vorwiderstand, ESP32-CAM und USB-Seriell-Umsetzer auf Steckboard miteinander verkabeln (siehe Bild weiter unten).
  6. ESP32-CAM via USB-Seriell-Umsetzer und USB-Mini-Datenkabel mit PC oder Laptop verbinden.
  7. Quelltext in einen neuen Sketch übernehmen, speichern, kompilieren und auf das Board flashen.
Erläuterungen

zu 1.: Falls nicht vorhanden: Arduino-IDE 1.8.X installieren, nicht 2.0 und ESP32-Bibliotheken nachinstallieren

Die Arduino-IDE ist die Entwicklungsumgebung, mit deren Hilfe Programme für den ESP32 kompiliert und auf diesen übertragen werden können.

Siehe auch in den FAQs: #2 Wie erfolgt die Installation der Arduino IDE unter Linux?

Nach der Installation der Arduino-IDE stehen nicht die Bibliotheken aller möglichen Mikrocontroller zur Verfügung, sondern speziellere müssen nachinstalliert werden, so auch die für den ESP32-CAM. Die Installation kann aber nach Start der Arduino-IDE von dessen Oberfläche her erfolgen. Die nachfolgenden Punkte folgen der von AV-Delivery mit dem ESP32-CAM herausgegebenen Anleitung (siehe Link oben):

Folgender Link muss der IDE bekannt gemacht werden, indem er unter Datei->Voreinstellungen hinzugefügt wird:

https://dl.espressif.com/dl/package_esp32_index.json

Code 0-1: Von Hier kann der Link einfach in die Zwischenablage kopiert und in die Voreinstellungen eingetragen werden.

Screenshot der richtigen Voreistellungen.

Bild 0-1: Screenshot der richtigen Voreistellungen.


siehe auch FAQ #6 (python Problem beim ersten Kompilieren)


Damit dieser Suchpfad der IDE bekannt gemacht wird, muss zunächst die IDE noch einmal beendet und dann neu gestartet werden.

Jetzt werden Ihnen im Netz bereit stehende Bibliotheken vorgeschlagen, wenn Sie auf Werkzeuge -> Board -> Boardverwalter gehen und dort als Suchwort esp32 eintippen.

Installieren Sie "esp32 by Espressif Systems" in der Version 1.0.6.

Nach der Installation wird die esp32-Bibliothek so angezeigt.

Bild 0-2: Nach der Installation wird die esp32-Bibliothek so angezeigt.

Ab jetzt können Quelltexte für ESP32-Boards mit der Arduino-IDE kompiliert und auf die Boards übergragen (geflasht) werden.

zu 2. und 3.: Auf ESP32-CAM die Kamera aufstecken und mit Doppelklebeband fixieren / Schutzfolie der Kamera entfernen

Um die Kamera zu fixieren, muss zunächst der Bügel des Verbinders etwas herausgezogen und nach oben geklappt werden.

Kurz vor der Montage der Kamera.

Bild 0-3: Kurz vor der Montage der Kamera.


Wird die Kamera nicht ganz gerade und bis zum Anschlag eingesteckt, funktioniert das esp32cam oft nicht.


Montierte und mit Doppelklebeband fixierte Kamera.

Bild 0-4: Montierte und mit Doppelklebeband fixierte Kamera.


Sollte die Kamera nicht halten, kann auf das Doppelklebeband unter die Rückseite der Kamera ein Tropfen Pattex aufgetragen werden.


Die Kamera muss in ihrer Position fixiert sein, damit später die regelungstechnischen Versuche (Linienverfolgung) funktionieren und untereinander vergleichbar sind.

zu 4.: Jumper auf USB-Seriell-Umsetzer links auf 5Volt-Seite zum GND-Anschluss hin aufsetzen

Jumper von USB-Seriell-Umsetzer auf 5-Volt-Seite eingesetzt.

Bild 0-5: Jumper von USB-Seriell-Umsetzer auf 5-Volt-Seite eingesetzt.

zu 5.: LED mit Vorwiderstand, ESP32-CAM und USB-Seriell-Umsetzer auf Steckboard miteinander verkabeln (siehe Bild weiter unten)

Siehe auch in den FAQs: #6 Wie arbeitet man sinnvoll mit Steckboards?

Der Aufbau wird so umgesetzt, dass er später unverändert auf dem Fahrzeug übernommen werden kann.


...darum werden zwei Steckboards und die längsten Steckboardkabel von 30cm benutzt!

Angeschlossener Programmierer und LED mit Vorwiderstand bei IO16 (Erweiterter schematischer Aufbau auf der Grundlage des Datenblattes von AZ-Delivery).

Bild 0-6: Angeschlossener Programmierer und LED mit Vorwiderstand bei IO16 (Erweiterter schematischer Aufbau auf der Grundlage des Datenblattes von AZ-Delivery).

Realer Aufbau mit zwei Steckboards.

Bild 0-7: Realer Aufbau mit zwei Steckboards.

Siehe auch in den FAQs: #3 Mit welcher Polung werden LEDs verbaut?

zu 6.: ESP32-CAM via USB-Seriell-Umsetzer und USB-Mini-Datenkabel mit PC oder Laptop verbinden

Nach dem Verbinden von ESP32-CAM und PC sollte die Arduino-IDE gestartet werden. Da der ESP32 kein Standard-Board von Arduino ist, wird es nicht automatisch erkannt, sondern man muss die richtigen Einstellungen für das Kompilieren und spätere Flashen bei "Werkzeuge" von Hand vornehmen. Folgender Screenshot von "Werkzeuge" zeigt die richtigen Einstellungen:

Einstellungen bei Werkzeuge.

Bild 0-8: Einstellungen bei Werkzeuge.

..das sind insbesondere:

  • Board: ESP32 Dev Module
  • Upload Speed: 921600
  • Port: /dev/ttyUSB0
  • Programmer: Arduino as ISP

zu 7.: Quelltext in einen neuen Sketch übernehmen, speichern, kompilieren und auf das Board flashen

  • Erzeugen Sie mit "Datei -> Neu" einen neuen Sketch in der Arduino IDE.
  • Kopieren Sie den nachfolgenden Quelltext in den Sketch hinein und speichern ihn unter esp32camBLINK16.
  • Kompilieren Sie den Sketch (Haken oben links).
  • Übertragen Sie den Sketch auf das Board (Pfeil nach rechts oben links)

Damit das Flashen funktioniert, muss IO0 mit GND verbunden sein ("Jaumper for BOOT-mode") und einmal kurz der Reset-Knopf gedrückt werden.


Während des Flashens muss IO0 mit GND verbunden sein (a), beim normalen Betrieb getrennt(b).

Bild 0-9: Während des Flashens muss IO0 mit GND verbunden sein (a), beim normalen Betrieb getrennt(b).


Außerdem muss während des "Connecting"-Vorgangs kurz die Reset-Taste auf dem Board betätigt werden.


Connecting-Vorgang.

Bild 0-10: Connecting-Vorgang.

Die Reset-Taste ist wenn das Board auf dem Steckbrett sitzt gerade so eben mit dem Fingernagel zwischen Steckboard und ESP32 zu erreichen.

#define AUSGANG 16
void setup() 
{
    pinMode(AUSGANG, OUTPUT);
}

void loop() 
{
   //Blinken mit einem Hertz (1Hz)
   digitalWrite(AUSGANG, HIGH);
   delay(500);
   digitalWrite(AUSGANG, LOW);
   delay(500);
}

Code 0-2: Quelltext des Blink-Programms, das IO16 als Ausgang verwendet.

Konsolenbereich in der IDE nach erfolgreichem Übertragungsvorgang.

Bild 0-11: Konsolenbereich in der IDE nach erfolgreichem Übertragungsvorgang.

  • Entfernen Sie kurz die USB-Verbindung zwischen Board und PC.
  • Trennen Sie nun den BOOT-mode-Jumper. (Aber betätigen Sie NICHT den Reset-Taster!)
  • Verbinden Sie den USB-Anschluss wieder: Nun sollte die LED blinken.

Statt die USB-Verbindung zu kappen, ist es besser die rote +5-Volt-Leitung zwischen esp32cam und USB-Seriellumsetzer zu trennen.