FTDI-Programmer verwenden

In diesem Beitrag zeigen wir Dir, wie Du einen “FTDI-Programmer” unter Windows verwendest um einen Mikrocontroller zu programmieren. Viele Mikrocontroller werden bereits mit USB-zu-Seriell Convertern auf einer Platine ausgeliefert. Dabei handelt es sich für gewöhnlich um Developer-Boards. Bei einzelnen Mikrocontroller-Chips oder speziellen Varianten wie bspw. dem ESP32-CAM oder ESP-ETH01 benötigt man allerdings einen externen USB-zu-Seriell Converter.

Hintergrund

Ein solcher Converter wird oft als FTDI-Programmer verkauft. Genau genommen handelt es sich bei FTDI um eine Firma mit dem Namen “Future Technology Devices International”. FTDI baut allerdings auch einen USB zu UART (oder vereinfacht USB zu Seriell) Chip. UART bietet die Möglichkeit unterschiedliche Protokolle abzubilden. Unter anderem auch RS-232 und RS-485, was oft als serielle Kommunikation bezeichnet wird. Über diese “serielle Schnittstelle” kann man unter anderem Mikrocontroller programmieren (daher der Begriff FTDI-Programmer), aber auch eine serielle Verbindung zwischen einem Computer und Mikrocontroller oder auch zwischen mehreren Computern aufbauen. Die FTDI-Chips besitzen allerdings auch das Problem, das diese gerne mal gefälscht werden. Wir hatten bisher allerdings noch keine größeren Probleme mit den Chips. Auch wenn die erste Einrichtung manchmal nicht direkt funktioniert, hatten wir anschließend nie Probleme.

Da sich dieser Beitrag mehr auf die Programmierung eines Mikrocontrollers mithilfe des FTDI-Chips bezieht, verwenden wir die Bezeichnung FTDI-Programmer für den FTDI-Chip mitsamt Platine (mit USB-Anschluss) und die Bezeichnung “zu programmierendes Gerät” für die entsprechende Gegenstelle der Seriellen Kommunikation.

Es wird ein FT232RL benutzt. Unter dieser Bezeichnung gibt es in China bereits für wenige Euro entsprechende Modelle. Bei Amazon gibt es ein entsprechendes Modell von AZDelivery (die Firma sollte vielen Bastlern ein Begriff sein) für 6,49€, bei welchem die Treiber auch automatisch installiert werden sollen. Leider haben wir gerade kein Modell von AZDelivery zum testen zur Hand gehabt.

Verkabelung des FTDI-Programmers

Die Verkabelung eines FTDI-Programmers ist, auch wenn es unterschiedliche Varianten dieser Programmer gibt, relativ einfach. Eventuell reicht sogar nur die folgende Skizze. Du solltest dir aber vielleicht trotzdem den Text durchlesen, damit Du dir nichts kaputt machst.

FTDI-Progammer mit Wemos D1 mini verbinden (schematisch)
Schematische Darstellung der Verbindung eines FTDI-Programmers mit einem Wemos D1 mini

In jedem Fall wird der GND-Pin der Programmers mit einem GND-Pin des zu programmierenden Gerätes verbunden.

Der Pin VCC des Programmers sollte mit einem 5V-Pin des zu programmierenden Gerätes verbunden werden. Wichtig: Sollte das zu programmierende Gerät eine eigene Spannungsversorgung benötigen (bspw. Raspberry Pi), darf VCC nicht mit dem 5V Pin verbunden werden.
Viele FTDI-Programmer erlauben über einem Jumper einen Wechsel der Betriebsspannung zwischen 5V und 3,3 V. Wenn der FTDI-Programmer auf 3,3 V eingestellt ist muss er entsprechend mit einem 3,3 V-Pin des zu programmierenden Gerätes verbunden werden (oft mit der Bezeichnung 3V3, 3V oder 3.3V).

TX und RX des Programmers müssen mit RX und TX des zu programmierenden Gerätes verbunden werden. Beachte hierbei, dass die serielle Kommunikation nur funktionieren kann, wenn diese PINs “über Kreuz” verbunden werden. Der TX-Pin des Programmers muss also mit dem RX-Pin des zu programmierenden Gerätes und der RX-Pin des Programmers mit dem TX-Pin des zu programmierenden Gerätes verbunden werden.

Anschließend kannst du den FTDI-Programmer per USB mit dem PC verbinden. Warte jetzt an besten ein paar Sekunden. Es kann sein, dass Windows erst einmal Treiber installieren muss (dies passiert allerdings nicht bei allen FTDI-Programmern automatisch).

Treiber überprüfen und installieren

Öffne jetzt die Arduino-IDE. Eventuell wird dir der FT232 jetzt bereits als neuer COM-Port in der Arduino-IDE angezeigt. In diesem Fall kannst du diesen Abschnitt überspringen. Solltest du allerdings keinen neuen COM-Port zur Auswahl haben, musst du (genau wie ich bei meinem Programmer) noch den VCP-Treiber von FTDI installieren.

FTDI: VCP-Treiber herunterladen
VCP-Treiber von FTDI herunterladen

Gehe hierfür auf die Website von FTDI (https://ftdichip.com/drivers/vcp-drivers/) und downloade dir den Treiber für dein Betriebssystem. Solltest du Windows 10 auf einem neueren PC installiert haben, wird es vmtl. die 64bit-Version sein (im Screenshot mit einem gelben Pfeil markiert).

Exportiere die heruntergeladene ZIP-Datei am besten direkt in deinen Download-Ordner.

FTDI: Fehlender Treiber im Geräte-Manager
FT232 – Fehlender VCP-Treiber im Geräte-Manager

Öffne jetzt den Geräte-Manager. Hier solltest du jetzt unter “Andere Geräte” ein Gerät mit dem Namen “USB Serial Port” finden. Das Gerät sollte außerdem mit einem kleinen Ausrufezeichen gekennzeichnet sein.
Mache einen Rechtsklick auf das Gerät “USB Serial Port”. Wähle im sich jetzt öffnenden Kontextmenü den Punkt Treiber aktualisieren aus.

FTDI: VCP-Treiber aktualisieren
Aktualisieren des VCP-Treibers

Wähle im sich öffnenden Fenster den Punkt “Auf meinem Computer nach Treibern suchen” aus. Klicke im darauffolgenden Fenster auf die Schaltfläche Durchsuchen. Suche über das sich öffnende Fenster nach der entpackten ZIP-Datei. Wähle den entpackten Ordner aus:

Bestätige den Dialog “Ordner suchen” mit einem Klick auf OK und Klicke im Fenster “Treiber aktualisieren” (linkes Bild) auf Weiter. Nach ein paar Sekunden solltest du die Bestätigung sehen, dass der Treiber installiert wurde. Jetzt kannst kannst du auf Schließen klicken. Die Geräteliste sollte sich jetzt aktualisieren und das Unbekannte Gerät in der Kategorie “Anschlüsse (COM & LPT)” als “USB Serial Port (COMX)” angezeigt werden.

In der Arduino-IDE sollte dir jetzt ein neuer COM-Port zur Verbindung angezeigt werden. Falls nicht, starte einmal die Arduino-IDE oder den Computer neu.

Damit kannst du jetzt den FTDI-Programmer einsetzen um bspw. einen ATtiny oder einen ESP8266/32 ohne integrierten USB-zu-Seriell-Konverter zu programmieren. Beachte hierbei, dass Du den Mikrocontroller unter Umständen erst noch in den Programmiermodus versetzen musst. Beim ESP32 muss dafür bspw. der IO0-Pin mit GND verbunden werden.