ESP32 Cam + PlatformIO + VS Code

ESP32 Cam + PlatformIO – Erstes Projekt: Blitzlicht (Hello World)

Wenn man eine neue Programmiersprache lernt, dann gehört ein „Hello World“ als Erstprojekt zum guten Ton. Dabei werden die Wörter „Hello World“ auf dem Monitor ausgegeben.

Da man bei Mikrocontrollern (meistens) keinen Bildschirm zur Ausgaben hat, hat sich hier die blinkende LED als das Pendant zu Hello World etabliert.

Die ESP32 Cam von AI Thinker hat eine eingebaute LED, um sie als Blitzlicht zu verwenden. Diese bringen wir jetzt zum Blinken.

In diesem ersten ESP32 Cam Tutorial geht es zunächst darum zu verstehen, wie man Code aus PlatformIO & VS Code auf die ESP32 Cam lädt. Daher ist das Code-Beispiel sehr einfach gehalten. In künftigen Artikeln gehe ich dann auf komplexere Beispiele ein.

Vorraussetzungen für dieses Tutorial

Ich gehe davon aus, dass du schon mal mit dem Arduino Framework programmiert hast. Konzepte wie man LEDs an einem Mikrocontroller zum Leuchten bringt, sollten dir bekannt sein. D.h. du weisst wofür die setup() und loop() Funktionen da sind. Und auch die Funktionen pinMode(), digitalWrite() und delay() sind dir nicht unbekannt.

Ich gehe auch davon aus, dass du PlatformIO und VS Code bereits installiert hast. Wenn nicht, schaue zunächst meinen Einführungs-Artikel zum Thema PlatformIO an und kehre dann wieder  hierher zurück.

Ich benutze in diesem Tutorial das ESP32 Cam Modell von AI Thinker. Zusätzlich verwende ich einen FTDI, um die Verbindung zum Computer herzustellen und ein paar dafür benötigte Jumper-Kabel und ein USB-Kabel.

ESP32 Cam über FTDI anschließen

Das ESP32 Cam Modell von AI Thinker ist sehr weit verbreitet, es besitzt jedoch keinen USB-Port, um es direkt am Computer anzuschließen. Daher wird ein zusätzliches FTDI benötigt. In meinem Artikel über ESP32 Cam und FTDI kannst du alles darüber nachlesen und wie man das FTDI korrekt mit der ESP32 Cam verkabelt. Ich gehe davon aus, dass du die ESP32 Cam und das FTDI so wie am Ende dieses Artikels verdrahtet hast.

Wir können das USB-Kabel nun am FTDI anschließen und so mit dem Computer verbinden.

Neues Projekt in VS Code und PlatformIO anlegen

Starte nun PlatformIO indem du zunächst VS Code öffnest. Wenn sich nicht automatisch das letzte Projekt öffnet, sollte der Screen etwa so aussehen:

Falls sich dein letztes Projekt öffnet, kannst du oben im Menu unter Files > New Window bzw. Datei > Neues Fenster ein neues frisches VS Code Fenster öffnen. Das andere Fenster kannst du dann schließen.

Es gibt in der Regel immer mehrere Wege, um bei PlatformIO den gewünschten Bereich zu öffnen. Falls du also andere Klicke-Wege nutzt, ist das natürlich auch in Ordnung.

Um ein neues Projekt in PlatformIO anzulegen, klicke die nummerierten Punkte nacheinander an.

Für ein neues Projekt benötigt PlatformIO ein paar Informationen. Orientiere dich an folgendem Screenshot.

Der Name ist frei wählbar, aber die Einstellungen für Board und Framework solltest du übernehmen. Location würde ich auch einfach bei den Standard.Einstellungen belassen, also Haken dran lassen. Es sei denn, du weisst hier schon, was du tust.

In der Dateiauswahl findest du den aktuellen Code in der Datei src/main.cpp. Klicke diese Datei an, um ihn im Editor zu öffnen. Du siehst zunächst den Standard-Code, den PlatformIO für jedes neue Projekt erzeugt.

Diesen Standard-Code müssen wir nun austauschen mit dem folgenden Code:

#include <Arduino.h>

 #define PIN_FLASHLIGHT 4

 void setup() {
   pinMode(PIN_FLASHLIGHT, OUTPUT);
 }

 void loop() {
   digitalWrite(PIN_FLASHLIGHT, HIGH);
   delay(1000);
   digitalWrite(PIN_FLASHLIGHT, LOW);
   delay(1000);
}

Kopiere den Code und Füge ihn in der Datei ein.

Oben wird ein Platzhalter mit dem Namen PIN_FLASHLIGHT erzeugt. Dieser Platzhalter wird beim kompilieren des Codes mit dem Wert 4 ausgetauscht.

Die 4 ist in diesem Fall die Pin Nummer der Blitzlicht-LED der ESP32 Cam.

In der main() Schleife wird nun das Blitzlicht für jeweils eine Sekunde an- und ausgeschaltet.

ACHTUNG: die Blitzlicht-LED ist sehr hell!

Code auf Fehler prüfen

Um den Code einmal zu prüfen, ob er fehlerfrei kompiliert werden kann, kannst du dieses Häkchen Icon in der unteren blauen Fußleiste verwenden (siehe Markierung im Bild unten links).

Beim ersten mal werden dabei benötigte Bibliotheken runtergeladen und kompiliert, daher dauert es hier einen kleinen Moment länger.

Wenn in der Konsole eine Success Meldung erscheint (wi im Bild oben), ist der Code kompilierbar.

Um den Code nun auf das Board zu laden, prüfen wir zunächst, ob das FTDI von PlatformIO erkannt wurde.

FTDI und ESP32 Cam in der Geräte-Liste prüfen

Klicke dazu in der linken Icon-Leiste auf das PlatformIO Logo (der Alien-Kopf). Und Öffnen dann die Liste der erkannten Geräte über den Punkt Devices. Entweder über das Icon oder aus dem Quick Access Menu.

Auf einem Mac erscheint mein FTDI in der Übersicht folgerndermaßen:

Und auf einem Windows-Rechner wird in der Spalte Port ein COM Port angezeigt werden.

Wenn dein FTDI nicht auftaucht, klicke den Refresh-Knopf oben rechts, um die Liste der verbundenen Mikrocontroller erneut zu laden. Falls er weiterhin nicht auftaucht, schaue in die Hinweise zu möglichen Fehlern am Ende des Artikels.

Wenn dein FTDI in der Geräte-Liste auftaucht, so wie im Bild oben zu sehen, dann können wir jetzt den Code hochladen.

Programm-Code auf ESP32 Cam hochladen

Du kannst wieder zur main.cpp wechseln, ist aber nicht wirklich notwendig. Der Code muss nicht sichtbar sein, um ihn hochzuladen.

Unten in der Fußleiste neben den Icons kannst du sehen, welche Gerät ausgewählt ist, um den Code hochzuladen. Falls du mehrere Microcontroller angeschlossen haben solltest, kannst du hier das Richtige auswählen.

Nutze nun das Pfeil-Icon unten in der blauen Fußleiste, um den Upload zu starten.

Es sollten nun LEDs auf dem FTDI blinken, die die Übertragung des Codes auf die ESP32 Cam  signalisieren.

Wenn in der Konsole in VS Code eine Success Meldung angezeigt wird, ist der Vorgang abgeschlossen.

Programm auf ESP32 Cam ausführen

Da sich die ESP32-Cam im Boot-Modus befindet, kann die ESP32 Cam nicht automatisch neu Starten. 

Deswegen musst du nun den Jumper für den Boot-Modus entfernen und den Reset-Button auf der ESP32 Cam drücken. Danach sollte das neue Programm sofort starten und das Blitzlicht anfangen zu blinken.

Falls du dich fragst, was es mit dem Jumper auf sich hat und warum du den Boot-Modus manuell aktivieren und deaktivieren musst, schau dir dazu meinen Artikel zum Thema ESP32 Cam und FTDI an.

Outro

Du hast nun gelernt, wie du Code mit PlatformIO, VSCode und einem FTDI auf die ESP32 Cam ohne USB-Port laden kannst. Das Prinzip lässt sich auf alle Mikrocontroller Entwicklungs-Boards ohne USB-Port übertragen, wie z.B. das Arduino Mini Pro.

Wir haben jetzt erstmal nur das Blitzlicht zum Blinken gebracht. D.h. die Verbindung zum Board konntest du aufbauen und Code auf die ESP32 Cam laden. 

In kommenden Artikeln werden wir uns anschauen, wie man Fotos und Videos mit der ESP32 Cam aufnimmt, auf der SD-Karte speichert und wie man einen Live-Video Stream erstellt.

Mögliche Fehler

Falls du auf Fehlermeldungen bei diesem Tutorial stößt, sind hier noch ein paar Tipps, die helfen könnten.

Das FTDI bzw. der FT232 Chip taucht nicht in der Geräteliste auf

Lösungsmöglichkeiten:

  • Versuche den FTDI anzuschließen, bevor du PlatformIO und VS Code startest
  • Prüfe, ob eventuell Treiber für das FTDI benötigt werden, siehe auch diese Dokumentationen von FTDI zu deinem Betriebssystem: https://ftdichip.com/document/installation-guides/
  • Neustart des Rechners

In der Konsole von VS Code kommt ein Upload Failed Error, statt Upload Success

Lösungsmöglichkeiten:

  • Schau nach, ob dein FTDI wirklich in der Geräteliste auftaucht
  • Überprüfe die Verkabelung zwischen FTDI und ESP32 Cam
  • Überprüfe, dass der FTDI auf 5V eingestellt ist
  • Überprüfe, ob sich die ESP32 Cam im Boot-Modus befindet (Jumper-Kabel)
  • Nachdem du das Jumper-Kabel für den Boot-Modus gesteckt hast, drücke noch einmal den Reset-Button auf dem ESP32 Cam Board bevor du den Upload startest

Links