Meine eBooks
Das sehr weit verbreitete ESP32 Cam Board von AI Thinker hat keinen USB Port. Aber wie bekommst du deinen Code auf das Board geladen? Wie kannst du deine ESP32 Cam flashen? Du benötigst dazu ein sogenanntes FTDI.
Was ein FTDI ist und wie man so ein FTDI an die ESP32 Cam anschließt, das schauen wir uns heute genauer an.
Es gibt Microcontroller, die haben keinen USB Anschluss, um Code auf das Board zu laden. So zum Beispiel der Arduino Pro Mini oder das sehr weit verbreitete ESP32 Cam Board von AI Thinker.
Vermutlich lässt man den USB-Port aus Platzgründen und/oder aus Kostengründen weg.
Es gibt sogenannte FTDIs, die man dann nutzen muss. Im Grunde sitzen auf so einem FTDI Board genau die Bauteile, die aus oben genannten Platz-/Kostengründen weggelassen worden sind: ein USB-Port und ein Chip der als Übersetzer zwischen USB und dem Mikrocontroller dient.
Wenn du wissen willst, welche ESP32 Cam Modelle mit einen USB-Port ausgestattet sind: in meinem Einführungsartikel zum ESP32 Cam findest du 12 verschiedene Modelle in einer Vergleichstabelle. Dort habe ich u.a. aufgeführt, welche Modelle einen USB-Port haben.
Was ist UART und TTL?
Heutige Computer nutzen überwiegend USB, um mit anderen Geräten zu kommunizieren. Mikrocontroller wie Arduino und ESP32 kommunizieren mit einem weniger komplexen UART Standard.
UART steht für Universal Asynchronous Receiver/Transmitter. Es benötigt nur zwei Kabel, nämlich um Receiver (Empfänger) und Transmitter (Sender) zu verbinden. Dazu sind die RX und TX Pins da, die dir vielleicht schon mal auf einem Mikrocontroller aufgefallen sind.
Dabei wird der RX Pin des Geräts A mit dem TX Pin des Geräts B verbunden und der TX Pin von Gerät B wird mit dem RX Pin von Gerät B verbunden.
Damit unser Computer (USB) mit dem Mikrocontroller (UART) kommunizieren kann, benötigt es einen Adapter – quasi einen Übersetzer. Daher findet man FTDIs auch unter dem Begriff USB-UART Adapter, USB-UART Bridge oder auch USB-UART Kabel.
UART nutzt das sog. TTL Protokoll (Transistor-Transistor Logic). Das ist ein serielles Kommunikationsprotokoll ähnlich wie RS232. Da TTL auf Spannungen im Bereich 3,3 und 5 Volt und RS232 eher auf +/-13 Volt ausgelegt ist, hat man sich im Mikrocontroller-Bereich wohl für diesen Standard entschieden – 3,3 Volt und 5 Volt sind die üblichen Betriebs-Spannungen der Mikrocontroller (siehe auch mein Artikel: Stromversorgung von ESP32 und Arduino).
Daher findet man die FTDIs auch unter dem Namen USB-TTL-Adapter, USB-TTL Bridge oder USB-TTL Kabel.
Die aktuellen FTDI Bestseller bei Amazon habe ich hier verlinkt:
- Chipsatz: FT232RL.
- Betriebsspannung: 3,3 V/5,5 V. Pin Definition: DTR, RXD, TX, VCC, CTS, GND
- RXD/TXD Transceiver Kommunikationsanzeige,.
- FT232RL USB-TTL Serial Modul FTDI 3,3V und 5V ISP USB Ardu ino Pro Mini Adapter. Der FT232RL von FTDI ist ein Wandler von RS232 auf USB und eignet sich für den direkten Einsatz an einem Mikrocontroller. Schließt man den FT232 an einem PC an, so wird er vom Betriebssystem als eine serielle Schnittstelle erkannt. Ein Arbeiten ist dann genau so möglich, als hätte man eine physikalische serielle Schnittstelle im Computer. Ein Kommunizieren mit dem PC ist so z.B. möglich.
- Zusätzlich bietet der FT232 noch erweitere Pins an, die auch konfiguriert werden können (3.3V Versorgung, Takt, Rx, Tx, …). Treiber, Anwendungsbeispiele und weitere Hinweise findet man auf der Homepage von FTDI.
- Chipset FT232RL. Unterstützt 3.3V, 5V. Mini USB macht über aktuelle Schutz mit 500MA selbst wiederherstellen, sichern kann. RXD/TXD-Transceiver-Kommunikation-Indikator. PIN-Definition: RXD, TX, VCC, CTS, DTR, GND. Raster: 2,54 mm. Modul Grösse: 36 x 18 mm.
- ✅ Sichern Sie sich jetzt fünfundzwanzig AZDelivery Adapter Kompatibel mit FT232RL USB zu TTL Serial für 3,3V und 5V zum Vorteilspreis mit Mengenrabatt!
- ✅ Der USB-Serial Adapter ist einer der meistbenutzten der am Markt befindlichen Konverter. Dies liegt u.a. daran, dass ein signierter Treiber bei Microsoft hinterlegt ist, welcher sich nach dem Anschließen des Moduls selbst über Windows Update installiert.
- ✅ Für den AZDelivery FT232-AZ Adapter sind keine zusätzlichen Treiber erforderlich und das Logic-Level ist über die auf dem Board befindlichen Jumper einstellbar. Auch bei der Verwendung mit Linux erfreut sich der AZDelivery Converter größter Beliebtheit.
Wofür steht FTDI?
FTDI ist eigentlich der Name einer Firma, die sich auf USB-Lösungen spezialisiert hat. Wenn du dir ein FTDI Board unter der Lupe anschaust, findest du vermutlich schnell das Herzstück: den FT232 Chip von FTDI.
So hat es sich wohl „eingebürgert“, diese Adapter Boards FTDI zu nennen – es ist wohl eine Gattungsbezeichnung (aka Deonym) geworden, wie z.B. Tempo, Tesa oder Labello.
ESP32 Cam FTDI Verkabelung
Im folgenden Diagramm siehst du, wie du den FTDI an das ESP32 Cam Board von AI Thinker anschließen musst.
Der RX Pin beim ESP32 Cam Board ist UOR und der TX Pin ist UOT. Entsprechend muss also UOR mit dem TX Pin des FTDI Adapters und UOT mit dem RX Pin des FTDI Adapters verbunden werden.
Achte auf die Beschriftung der Pins an deinem FTDI Adapter – die sind nicht immer gleich aufgebaut.
Natürlich musst du auch Ground verbinden.
Verwende einen FTDI, der auf 5 Volt ausgelegt ist. Ich empfehle einen FTDI zu nutzen, den man auf 3,3 Volt oder 5 Volt umschalten kann. In dem Fall solltest du den FTDI auf 5 Volt einstellen. Dann verbinde den 5 Volt Pin des FTDIs mit dem 5 Volt Pin des ESP32 Cam Boards.
ESP32 Cam Boot Modus aktivieren
Die meisten FTDIs haben zusätzliche Pins mit der Bezeichnung DTR und CTS. Die kannst du in diesem Fall einfach nicht beachten, da das ESP32 Cam von AI Thinker keine DTR und CTS Pins nach aussen führt oder diese anders verwendet (das kann bei anderen ESP32 Cam Boards anders sein).
Deswegen kann das ESP32 Cam nicht automatisch in den Boot Modus gebracht werden (denn dafür sind DTR und CTS u.a. da). Der Boot Modus ist notwendig, damit Code auf das ESP32 Cam Board geladen werden kann.
Um ESP32 Boards in den Boot Modus zu bringen, muss in der Regel der GPIO Pin 0 mit Ground verbunden werden. ESP32 Dev Boards haben dafür in der Regel einen Boot Taster, um genau das zu tun.
Oft kann die Programmer-Software esptool.py das sogar automatisch regeln. Arduino IDE und PlatformIO nutzen esptool.py unter der Haube, um Code auf den Mikrocontroller zu laden. Dann muss man nicht einmal den Boot Taster drücken.
Beim ESP32 Cam von AI Thinker müssen wir den Boot Modus jedoch per Hand aktivieren. Ich habe mir dafür ein kleines Jumper-Kabel gecrimpt (weißes Kabel im Bild unten). Falls du Stiftleisten an deinem ESP32 Cam Board hast, kann man so einfach die zwei entsprechenden Stifte IO0 und GND verbinden.
Du könntest auch noch einen Taster in das weiße Kabel löten, dann wäre das genau der Boot Taster, den viele ESP32 Dev Boards besitzen. Falls du auch eigene Jumper-Kabel crimpen möchtest, hier habe eine Anleitung geschrieben, wie man eigene Stecker und Jumper-Kabel crimpt.
Nun kannst du ein USB Kabel verwenden, um den FTDI mit deinem Computer zu verbinden.
In den folgenden Artikeln zeige ich, wie man nun Code mit der Arduino IDE auf die ESP32 Cam lädt. Und da ich großer Fan von PlatformIO bin, zeige ich natürlich auch, wie man Code mit PlatformIO und VSCode auf die ESP32 Cam lädt.
Kann man Code auch ohne FTDI auf die ESP32 CAM laden?
Es gibt noch zwei weitere Möglichkeiten Code auf die ESP32 Cam zu laden. Einmal mit einem sogenannten ESP32-CAM-MB Board oder man kann einen anderen Mikrocontroller verwenden.
Beide Methoden nutzen aber letztendlich auch die verbauten FTDI bzw. USB-UART Adapter. D.h. am Ende lautet die Antwort: nein, ohne FTDI geht es nicht.
Wenn du aber z.B. einen Arduino UNO hast, kannst du diesen als FTDI verwenden – du musst dir in dem Fall also keinen zusätzlichen FTDI Adapter zulegen, damit du die ESP32 Cam programmieren kannst.