Bauteile · 10 Min. Lesezeit

USB-TTL-Adapter: CH340 und CP2102 richtig anschließen

Wofür ist ein USB-TTL-Adapter? TX-RX gekreuzt, 3,3-V/5-V-Jumper, Treiber, Pro Mini, ESP-01 und ESP32-CAM programmieren und CH340 und CP2102 im Vergleich.

Ein USB-TTL-Adapter ist eine kleine Platine, die den USB-Anschluss deines Computers in die serielle Sprache (UART) übersetzt, die Mikrocontroller sprechen. Du brauchst ihn, um Code auf Boards ohne USB-Buchse wie Arduino Pro Mini, ESP-01 und ESP32-CAM zu laden, um die seriellen Meldungen eines Moduls mitzulesen oder um GPS- und Bluetooth-Module direkt vom Computer aus einzustellen. Eigentlich trägt jeder Arduino Uno und Nano schon eine Kopie dieser Schaltung; der Adapter macht daraus ein eigenes, mobiles Modul.

In dieser Anleitung lernst du die Pins des Adapters kennen, den häufigsten Fehler überhaupt (die TX-RX-Verdrahtung), den Jumper für 3,3-V- oder 5-V-Logikpegel und die Treiberinstallation unter Windows, macOS und Linux. Danach siehst du, wie du einen Arduino Pro Mini dank DTR-Pin ohne Tastendruck programmierst, Code auf ESP-01 und ESP32-CAM lädst, den Adapter als zweiten seriellen Monitor nutzt und worin sich die drei häufigsten Chips CH340, CP2102 und FT232 unterscheiden.

CP2102 USB-TTL-Adaptermodul
CP2102 USB-TTL-Adapter: auf der einen Seite USB, auf der anderen GND, TXD, RXD, DTR und Versorgungspins. Der bequemste Weg, Pro Mini, ESP-01 und ESP32-CAM zu programmieren.

Was ist ein USB-TTL-Adapter und wofür braucht man ihn?

Computer und Mikrocontroller sprechen verschiedene Sprachen. USB ist ein komplexes Protokoll mit Paketen, Adressen und Treibern. Der UART eines Mikrocontrollers dagegen kommt mit zwei Leitungen aus: Eine sendet Daten (TX), die andere empfängt sie (RX), und jedes Byte besteht aus Bits, die nacheinander mit einer vereinbarten Geschwindigkeit (Baud) übertragen werden. Der Chip auf dem Adapter erscheint am Computer als virtueller serieller Port (unter Windows COM3, unter macOS /dev/cu.usbserial..., unter Linux /dev/ttyUSB0); jedes Byte, das du an diesen Port schreibst, verlässt den TX-Pin als UART-Signal, und jedes Byte, das am RX-Pin ankommt, wird an den Computer weitergereicht. Das TTL im Namen bedeutet, dass die Signale zwischen 0 V und 5 V bzw. 0 V und 3,3 V wechseln.

  • Boards ohne USB programmieren: Arduino Pro Mini, LilyPad, ESP-01, ESP32-CAM und nackte ATmega328P-Chips mit Bootloader.
  • Serielle Logs lesen: Debug-Meldungen in einem zweiten Fenster beobachten, während der eigene USB-Port des Boards anderweitig belegt ist.
  • Direkt mit Modulen sprechen: AT-Befehle an einen ESP-01 senden, die NMEA-Sätze eines GPS-Moduls lesen, ein Bluetooth-Modul umbenennen.
  • Ein defektes Board retten: Einen Uno oder Nano mit kaputtem USB-Chip über D0 und D1 programmieren.
  • Konsolen anderer Geräte anzapfen: Die seriellen Konsolenpins von Routern, 3D-Drucker-Boards oder Einplatinencomputern.

USB-TTL-Pins: GND, VCC, TXD, RXD, DTR und RTS

PinFunktionHinweis
GNDGemeinsame MasseWird immer angeschlossen
5V5-V-Ausgang vom USBMeist bis 500 mA, abhängig vom Port des Computers
3V33,3-V-AusgangVom Chip oder einem kleinen Regler; begrenzter Strom
TXDDatenausgang (Computer zum Board)Geht an den RX-Pin des Ziel-Boards
RXDDateneingang (Board zum Computer)Geht an den TX-Pin des Ziel-Boards
DTRSteuerleitung, die beim Öffnen des Ports auf LOW gehtDient bei Arduinos dem Auto-Reset
RTS / CTSFlusssteuerungsleitungenRTS wird in der Auto-Upload-Schaltung von ESP-Boards genutzt; CTS bleibt meist frei

TX und RX gekreuzt verbinden

Der häufigste Fehler ist, TX mit TX zu verbinden. Die Regel ist einfach: Die Leitung, auf der ein Gerät spricht, muss an die Leitung, auf der das andere zuhört. Der TXD-Pin des Adapters geht also an den RX-Pin des Ziel-Boards und sein RXD-Pin an den TX-Pin des Ziels. Manche Boards nennen die Richtung gleich in der Beschriftung, um Verwechslungen zu vermeiden: Auf dem Arduino Pro Mini steht RXI (RX-Eingang) und TXO (TX-Ausgang), und FTDI-Platinen im SparkFun-Stil sind so beschriftet, dass beim direkten Zusammenstecken die richtige Kreuzung entsteht. Wenn du der Beschriftung nicht traust, probiere die Verbindung einmal andersherum; vertauschte TX- und RX-Leitungen schaden nichts, es findet nur keine Kommunikation statt.

AdapterZiel-BoardBeschreibung
GNDGNDGemeinsame Masse, unverzichtbar
TXDRX (RXI, U0R)Gekreuzt: Sender an Empfänger
RXDTX (TXO, U0T)Gekreuzt: Empfänger an Sender
5V oder 3V3VCCNur wenn das Ziel-Board keine andere Versorgung hat
DTRDTR / GRN / RSTNur wenn du Auto-Reset brauchst
Wird das Ziel-Board bereits von einem eigenen Netzteil oder Akku versorgt, schließe den VCC-Pin des Adapters nicht an; GND, TXD und RXD genügen. Wenn du die Ausgänge zweier Versorgungen verbindest, kann Strom von einer in die andere fließen und den Adapter oder den USB-Port deines Computers beschädigen. GND dagegen muss immer verbunden sein; ohne gemeinsame Masse sind die Signalpegel bedeutungslos.

Der 3,3-V-/5-V-Jumper: Logikpegel richtig wählen

Arduino Uno, Nano und der 5-V-Pro-Mini arbeiten mit 5-V-Logik, ESP8266, ESP32 und Raspberry Pi Pico mit 3,3-V-Logik. Ein 5-V-Signal am RX-Pin eines ESP belastet dessen Schutzdioden und kann den Pin mit der Zeit beschädigen. Deshalb haben die meisten CH340G-Module einen dreipoligen Jumper: Er wählt die Versorgungsspannung des Chips, und der Pegel des TXD-Ausgangs folgt dieser Spannung. Der CP2102 arbeitet immer mit 3,3-V-Logik, seine Eingänge sind aber 5-V-tolerant; daher versteht er sich mit 3,3-V- und 5-V-Boards gleichermaßen, denn ein 5-V-ATmega328P wertet alles über 3 V bereits als HIGH. Auch FT232RL-Module haben oft einen Jumper, der den I/O-Pegel des Chips (VCCIO) festlegt.

Ziel-BoardJumper bzw. LogikpegelVersorgung
Arduino Pro Mini 5 V / 16 MHz5 VVom 5V-Pin des Adapters
Arduino Pro Mini 3,3 V / 8 MHz3,3 VVom 3V3-Pin oder aus eigener Versorgung
ESP-01 / ESP-01S3,3 VEin separater 3,3-V-Regler (mindestens 300 mA)
ESP32-CAM3,3 VVom 5V-Pin des Adapters an den 5V-Pin des Boards
Raspberry Pi Pico (UART0)3,3 VDer Pico läuft über sein eigenes USB; nur GND, TX, RX

Hat dein Adapter keinen Jumper und musst du eine 5-V-TX-Leitung an einen 3,3-V-Eingang anschließen, genügt ein einfacher Spannungsteiler: Mit 1 kΩ zwischen TX-Leitung und RX des Ziels und 2 kΩ zwischen RX des Ziels und GND sinken 5 V auf etwa 3,3 V. Die genaue Rechnung findest du in Spannungsteiler. Die umgekehrte Richtung, ein 3,3-V-TX an einen 5-V-Eingang, ist meist unproblematisch.

CH340, CP2102 und FT232 im Vergleich

EigenschaftCH340 (G / C)CP2102FT232RL
HerstellerWCHSilicon LabsFTDI
Maximale Baudrate2 Mbps1 Mbps (CP2102N: 3 Mbps)3 Mbps
QuarzCH340G braucht einen externen 12-MHz-Quarz; CH340C hat ihn internInternIntern
3,3-V-AusgangJe nach Modul, meist schwachJa, etwa 100 mA inklusive ChipJa, bis 50 mA
LogikpegelJe nach Versorgung 5 V oder 3,3 V3,3 V, Eingänge 5-V-tolerantJe nach VCCIO 5 V oder 3,3 V
DTR und RTSJaJaJa, mit allen Modemleitungen
TreiberUnter Windows meist automatisch; in macOS und Linux enthaltenUnter Windows meist automatisch; in macOS und Linux enthaltenUnter Windows automatisch; in macOS und Linux enthalten
PreisAm günstigstenMittelAm teuersten
AchtungDen 3V3-Pin des Moduls nicht stark belastenPinreihenfolge der Module je nach Hersteller verschiedenViele gefälschte Chips im Umlauf; der offizielle Treiber lehnt manche ab

Für alltägliche Bastelprojekte gibt es zwischen CH340 und CP2102 praktisch keinen Unterschied; beide laufen bei 115200 Baud einwandfrei und schaffen alle Geschwindigkeiten der Arduino IDE problemlos. Der interne Oszillator und der stärkere 3,3-V-Ausgang verschaffen dem CP2102 einen kleinen Vorteil, wenn er kleine 3,3-V-Boards versorgen soll, während der CH340 der günstigste und verbreitetste ist. Der FT232RL ist ein zuverlässiger Chip mit vielen Einstellmöglichkeiten, doch in einem großen Teil der billigen FT232-Module stecken Fälschungen. Die CH9102 und CH343 auf neueren ESP32-Boards sind schnellere Mitglieder derselben Familie und werden genauso verwendet.

CH340 USB-TTL-Adapter
CH340 USB-TTL-Adapter: die günstigste Variante. Mit dem Jumper wählst du 5-V- oder 3,3-V-Logikpegel.

Treiber installieren: Windows, macOS und Linux

BetriebssystemWas ist zu tun?Portname
Windows 10 / 11Meist installiert Windows Update den Treiber selbst; sonst CH341SER für den CH340 bzw. den CP210x-VCP-Treiber für den CP2102 installierenCOM3, COM4... unter Geräte-Manager > Anschlüsse (COM & LPT)
macOSAktuelle Versionen enthalten Treiber für CH340, CP2102 und FT232; keine alten Herstellertreiber darüber installieren/dev/cu.usbserial-..., mit Herstellertreiber /dev/cu.wchusbserial... oder /dev/cu.SLAB_USBtoUART
LinuxTreiber sind im Kernel enthalten; Benutzer zur Gruppe dialout hinzufügen, unter Ubuntu das Paket brltty entfernen, wenn der CH340-Port verschwindet/dev/ttyUSB0

Siehst du unter Windows nach dem Einstecken im Geräte-Manager unter Andere Geräte ein USB2.0-Serial mit gelbem Ausrufezeichen, fehlt der CH340-Treiber; steht dort CP2102 USB to UART Bridge Controller, fehlt der CP2102-Treiber. Nach der Treiberinstallation steckst du den Adapter ab und wieder an und schaust in der Arduino IDE unter Werkzeuge > Port: Der Port, der in diesem Moment neu erscheint, gehört zum Adapter. Taucht gar nichts auf, tausche zuerst das Kabel; reine Ladekabel haben keine Datenleitungen. Alle Port-, Treiber- und Berechtigungsprobleme findest du in Arduino-Sketch lässt sich nicht hochladen.

Loopback-Test: Funktioniert der Adapter?

  1. Zieh alle Kabel vom Adapter ab und steck ihn in den Computer.
  2. Verbinde mit einem Jumperkabel die TXD- und RXD-Pins des Adapters miteinander.
  3. Wähle in der Arduino IDE den Port des Adapters und öffne den seriellen Monitor; die Baudrate spielt für diesen Test keine Rolle.
  4. Tippe etwas ein und sende es. Kommt dein Text genau so zurück, sind Chip, Treiber und Kabel in Ordnung; das Problem liegt dann in der Verdrahtung oder am Ziel-Board.
  5. Kommt nichts zurück, prüfe Port, Treiber und Kabel und achte darauf, ob die TX- und RX-LEDs des Adapters flackern.

Arduino Pro Mini programmieren: Auto-Reset per DTR

Arduino-Pro-Mini-Board
Arduino Pro Mini: Es gibt keine USB-Buchse. Die sechspolige Stiftleiste BLK, GND, VCC, RXI, TXO und GRN an der kurzen Kante ist für einen USB-TTL-Adapter gedacht.

Beim Hochladen wird der Arduino zuerst zurückgesetzt; der Bootloader, der nach dem Reset etwa eine Sekunde läuft, prüft, ob über die serielle Schnittstelle ein neues Programm kommt. Uno und Nano erledigen diesen Reset selbst: Zwischen der DTR-Leitung des USB-Chips und dem RESET-Pin des Prozessors sitzt ein 100-nF-Kondensator. In dem Moment, in dem die IDE den Port öffnet, fällt DTR von HIGH auf LOW, der Kondensator gibt diesen Sprung als kurzen LOW-Impuls an RESET weiter, und das Board startet neu. Beim Pro Mini sitzt derselbe Kondensator auf dem Board und hängt am GRN- bzw. DTR-Pin der Stiftleiste; verbindest du dort den DTR-Pin des Adapters, ist das Hochladen so einfach wie beim Uno.

USB-TTLPro MiniHinweis
GNDGND (oder BLK)Gemeinsame Masse
5V oder 3V3VCC5V für die 5-V-/16-MHz-Version, 3V3 für die 3,3-V-/8-MHz-Version
TXDRXIGekreuzt
RXDTXOGekreuzt
DTRGRN (DTR)Auto-Reset; ohne DTR musst du von Hand zurücksetzen
  1. Finde die Version deines Boards über die Beschriftung auf der Rückseite oder auf dem Quarz heraus: Boards mit 16-MHz-Quarz sind die 5-V-Version, solche mit 8 MHz die 3,3-V-Version.
  2. Stell den Jumper des Adapters passend zur Board-Version ein und verdrahte alles laut Tabelle.
  3. Wähle in der Arduino IDE Werkzeuge > Board > Arduino AVR Boards > Arduino Pro or Pro Mini.
  4. Wähle unter Werkzeuge > Processor passend zu deinem Board ATmega328P (5V, 16 MHz) oder ATmega328P (3.3V, 8 MHz).
  5. Wähle den Port des Adapters und lade den folgenden Test-Sketch hoch; mit angeschlossenem DTR musst du keine Taste drücken.
C++ (Arduino IDE)
1// Pro Mini + USB-TTL testi: LED yanıp söner, gönderdiğin satır geri gelir
2// Pro Mini + USB-TTL test: the LED blinks and every line you send comes back
3const int LED = 13;                     // Pro Mini'nin dahili LED'i / Pro Mini onboard LED
4unsigned long sonDegisim = 0;
5bool ledAcik = false;
6
7void setup() {
8  Serial.begin(9600);
9  pinMode(LED, OUTPUT);
10  Serial.println(F("Pro Mini hazir / ready"));
11  Serial.print(F("Derlenen saat / compiled clock: "));
12  Serial.print(F_CPU / 1000000UL);      // 16 = 5 V sürüm, 8 = 3,3 V sürüm / 16 = 5 V board, 8 = 3.3 V board
13  Serial.println(F(" MHz"));
14}
15
16void loop() {
17  if (millis() - sonDegisim >= 500) {   // yarım saniyede bir / every half second
18    sonDegisim = millis();
19    ledAcik = !ledAcik;
20    digitalWrite(LED, ledAcik);
21  }
22  if (Serial.available()) {
23    String satir = Serial.readStringUntil('\n');   // satır sonuna kadar oku / read up to the line ending
24    satir.trim();
25    Serial.print(F("Geldi / received: "));
26    Serial.println(satir);
27  }
28}

Nach dem Hochladen blinkt die LED auf dem Board im Halbsekundentakt. Öffne den seriellen Monitor mit 9600 Baud und der Einstellung Neue Zeile, tippe etwas ein, und der Text kommt zurück. Die F_CPU-Zeile im Code deckt eine kleine, aber wichtige Falle auf: Die Bootloader beider Pro-Mini-Versionen laden mit 57600 Baud, deshalb klappt der Upload sogar mit der falschen Processor-Option. Wählst du für ein 8-MHz-Board aber 16 MHz, läuft alles mit halber Geschwindigkeit, die LED wechselt nur einmal pro Sekunde, und im seriellen Monitor siehst du nur Zeichensalat. Hat dein Adapter keinen DTR-Pin, kannst du den Upload von Hand timen: Sobald die IDE fertig kompiliert hat und in der Ausgabe Uploading... erscheint, drückst du kurz die Reset-Taste des Pro Mini.

Code auf ESP-01 und ESP32-CAM laden

Beim ESP8266 und ESP32 steckt der Bootloader im Chip und prüft beim Start den Pin GPIO 0: Ist GPIO 0 LOW, geht er in den Download-Modus und wartet auf Code, ist er HIGH, startet das Programm im Flash. Entwicklungsboards haben eine Auto-Upload-Schaltung, die DTR und RTS über zwei Transistoren mit EN und GPIO 0 verbindet; esptool schaltet diese Leitungen nacheinander und bringt das Board so selbst in den Download-Modus. Ein einfacher USB-TTL-Adapter hat diese Schaltung nicht, also machst du es von Hand: GPIO 0 auf GND legen, Board zurücksetzen, Code hochladen, danach die GPIO-0-Verbindung lösen und erneut zurücksetzen.

USB-TTL (Jumper auf 3,3 V)ESP-01ESP32-CAM
GNDGNDGND
TXDRXU0R (GPIO 3)
RXDTXU0T (GPIO 1)
VersorgungVCC und EN (CH_PD) aus einem separaten 3,3-V-ReglerVom 5V-Pin des Adapters an den 5V-Pin des Boards
Upload-ModusGPIO 0 auf GND, RST kurz an GND tippenIO0 auf GND, RST-Taste drücken
Board in der Arduino IDEGeneric ESP8266 ModuleAI Thinker ESP32-CAM

Der ESP-01 zieht beim Verbinden mit dem WLAN Stromspitzen über 300 mA; der 3V3-Pin des Adapters schafft das nicht, und das Modul startet ständig neu. Nimm deshalb einen AMS1117-3.3-Regler, der aus dem 5V-Pin gespeist wird. Alle Anschlüsse und AT-Befehle des ESP-01 findest du in ESP-01-Modul, den Upload auf die ESP32-CAM Schritt für Schritt in ESP32-CAM verwenden. Wenn du ein Projekt suchst, das der ESP32-CAM einen PIR hinzufügt und das Foto aufs Handy schickt, sieh dir ESP32-CAM-Fotos per Telegram an.

Der ESP8266 schickt seine Bootmeldungen mit einer ungewöhnlichen Geschwindigkeit, 74880 Baud; stellst du den seriellen Monitor darauf ein, siehst du, ob das Modul im Download-Modus (boot mode:(1,x)) oder im normalen Modus (boot mode:(3,x)) gestartet ist. Der ESP32 schreibt seine Bootmeldungen mit 115200 Baud; die Zeile waiting for download bedeutet, dass GPIO 0 noch auf GND liegt.

Serielle Logs lesen: USB-TTL als zweite serielle Schnittstelle

Eine der unbekanntesten, aber nützlichsten Aufgaben des Adapters ist es, einem Board einen zweiten seriellen Monitor zu verschaffen. Während der eigene USB-Port des Boards mit einem Python-Programm, dem seriellen Plotter oder einem anderen Gerät spricht, beobachtest du ausführliche Debug-Meldungen über einen separaten Port. Der ESP32 hat drei Hardware-UARTs; der folgende Code legt UART2 auf GPIO 16 und 17 und schickt jede Sekunde eine Logzeile an den Adapter. Sendest du vom Adapter den Buchstaben r, wird der Zähler zurückgesetzt; so siehst du, dass es in beide Richtungen funktioniert.

C++ (Arduino IDE)
1// ESP32: USB portu Serial'de kalır, ikinci log kanalı USB-TTL'ye gider
2// ESP32: the USB port stays on Serial, a second log channel goes to the USB-TTL
3#define LOG_RX 16                       // USB-TTL TXD buraya / USB-TTL TXD goes here
4#define LOG_TX 17                       // USB-TTL RXD buraya / USB-TTL RXD goes here
5
6unsigned long sayac = 0;
7
8void setup() {
9  Serial.begin(115200);                                  // kartın kendi USB portu / the board's own USB port
10  Serial2.begin(115200, SERIAL_8N1, LOG_RX, LOG_TX);     // UART2: USB-TTL'ye / UART2: to the USB-TTL
11  Serial.println("Ana port / main port");
12  Serial2.println("Log portu hazir / log port ready");
13}
14
15void loop() {
16  sayac++;
17  int deger = analogRead(34);                            // GPIO 34'e bağlı bir sensör / a sensor on GPIO 34
18  Serial2.printf("[%lu ms] #%lu ADC=%d\n", millis(), sayac, deger);   // ayrıntılı log / detailed log
19  if (sayac % 10 == 0) Serial.println(deger);            // ana portta yalnız özet / only a summary on the main port
20
21  while (Serial2.available()) {                          // USB-TTL'den gelen komut / command from the USB-TTL
22    char c = Serial2.read();
23    if (c == 'r') {
24      Serial2.println("Sayac sifirlandi / counter reset");
25      sayac = 0;
26    }
27  }
28  delay(1000);
29}

Zum Anschließen stellst du den Jumper des Adapters auf 3,3 V und verbindest TXD mit GPIO 16, RXD mit GPIO 17 und GND mit GND. Statt eine zweite Arduino IDE zu öffnen, kannst du PuTTY, unter macOS und Linux screen oder ein kleines Python-Leseprogramm verwenden; für die Python-Seite siehe Arduino und Python seriell verbinden. Auf dem Raspberry Pi Pico ist dieselbe Idee in MicroPython nur ein paar Zeilen lang: UART0 liegt auf GP0 (TX) und GP1 (RX), und der Code sendet Logs und schickt empfangene Bytes zurück.

MicroPython
1# Raspberry Pi Pico (MicroPython): UART0 üzerinden USB-TTL'ye log ve yankı
2# Raspberry Pi Pico (MicroPython): log and echo to a USB-TTL over UART0
3from machine import UART, Pin
4import time
5
6uart = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))   # GP0 = TX, GP1 = RX
7led = Pin(25, Pin.OUT)                                  # Pico dahili LED / Pico onboard LED (Pico W: "LED")
8sayac = 0
9son = time.ticks_ms()
10
11uart.write("Pico UART0 hazir / ready\r\n")
12while True:
13    if time.ticks_diff(time.ticks_ms(), son) >= 1000:   # saniyede bir log / one log line per second
14        son = time.ticks_ms()
15        sayac += 1
16        led.toggle()
17        uart.write("[%d ms] #%d\r\n" % (time.ticks_ms(), sayac))
18    if uart.any():                                      # USB-TTL'den gelen baytlar / bytes from the USB-TTL
19        veri = uart.read()
20        uart.write(b"Geldi / received: " + veri)
21    time.sleep_ms(10)

Auf dieselbe Weise kannst du ohne Arduino dazwischen mithören, was ein Modul sagt. Schließt du ein NEO-6M-GPS-Modul direkt an den Adapter an und öffnest es mit 9600 Baud, siehst du die NMEA-Sätze hereinlaufen; ein HC-05-Modul im AT-Modus mit 38400 Baud kannst du umbenennen und seine PIN ändern. Alles zu Zeilenende und Baudrate im seriellen Monitor steht in Arduino Serial Monitor.

Häufige Fehler und Lösungen

SymptomMögliche UrsacheLösung
Der Adapter fehlt in der PortlisteLadekabel, fehlender Treiber oder brltty unter LinuxDatenkabel verwenden, Treiber installieren, brltty entfernen
avrdude: stk500_getsync(): not in sync: resp=0x00TX-RX nicht gekreuzt, DTR nicht angeschlossen oder falsches BoardTX an RXI und RX an TXO; DTR an GRN anschließen oder bei Uploading... Reset drücken
Code hochgeladen, aber Zeichensalat im seriellen MonitorBaudrate passt nicht oder falsche MHz-Version beim Pro Mini gewähltSeriellen Monitor auf die Baudrate im Code stellen, im Processor-Menü die echte Board-Version wählen
Failed to connect to ESP8266 / ESP32GPIO 0 ist beim Start nicht LOW oder TX-RX vertauschtGPIO 0 auf GND legen, dann Reset; TX-RX prüfen
Der ESP startet ständig neuDer 3,3-V-Ausgang des Adapters schafft die Stromspitzen nichtSeparaten 3,3-V-Regler und 100–470 µF Kondensator verwenden
Der Pro Mini startet bei jedem Öffnen des seriellen Monitors neuDTR ist angeschlossen; ein Reset beim Öffnen des Ports ist normalWenn du keinen Reset willst, DTR-Kabel nach dem Upload abziehen
Der Computer schaltet den USB-Port beim Einstecken abKurzschluss oder zwei Versorgungen kommen sich in die QuereKabel abziehen; VCC nicht anschließen, wenn das Ziel eine eigene Versorgung hat
Hast du keinen Adapter, kannst du vorübergehend einen Arduino Uno einsetzen: Verbinde den RESET-Pin des Uno mit GND oder lade einen leeren Sketch hoch. Dann wird gerade statt gekreuzt verbunden: TX des Ziels an D1 (TX) des Uno, RX an D0 (RX), weil die Daten den USB-Chip des Uno nutzen und nicht seinen Prozessor. Der Uno arbeitet mit 5-V-Logik, vergiss bei 3,3-V-Boards also den Spannungsteiler in der D0-Leitung nicht.

Der USB-TTL-Adapter ist eines der kleinsten Werkzeuge in deiner Schublade und eines, das du am häufigsten brauchen wirst: Er programmiert Boards ohne USB, lässt den Computer mit Modulen sprechen und zeigt dir Zeile für Zeile, was in deinen Projekten passiert. Wenn du TX und RX kreuzt, den richtigen Logikpegel wählst und GND gemeinsam hältst, verschwinden fast alle Probleme. In der BlueGrays-App findest du serielle Kommunikation zwischen zwei Arduinos, Handysteuerung per Bluetooth und ESP32-WLAN-Projekte mit Schaltplänen und fertigem Code Schritt für Schritt.

Häufige Fragen

Wofür braucht man einen USB-TTL-Adapter?

Er wandelt den USB-Anschluss des Computers in die serielle UART-Kommunikation um, die Mikrocontroller nutzen. So kannst du Code auf Boards ohne USB wie Arduino Pro Mini, ESP-01 und ESP32-CAM laden, ihre seriellen Meldungen lesen und Module wie GPS oder Bluetooth direkt vom Computer aus einstellen.

Was ist besser, CH340 oder CP2102?

In Bastelprojekten laufen beide bei 115200 Baud problemlos, ein Unterschied ist in der Praxis kaum spürbar. Der CP2102 hat einen internen Oszillator, einen stärkeren 3,3-V-Ausgang und 5-V-tolerante Eingänge; der CH340 ist günstiger und weiter verbreitet. Aktuelle macOS- und Linux-Versionen bringen für beide Treiber mit.

Wie verbinde ich TX und RX beim USB-TTL-Adapter?

Gekreuzt: Der TXD-Pin des Adapters geht an den RX-Pin des Ziel-Boards, der RXD-Pin an dessen TX-Pin. GND muss immer gemeinsam sein. Vertauschte Leitungen schaden nicht, aber es kommt nichts an; im Zweifel tauschst du sie und probierst es erneut.

Wie programmiere ich einen Arduino Pro Mini mit USB-TTL-Adapter?

Verbinde GND mit GND, VCC mit VCC, TXD mit RXI, RXD mit TXO und DTR mit dem GRN-Pin. Wähle in der Arduino IDE das Board Arduino Pro or Pro Mini und die passende Option ATmega328P (5V, 16 MHz) oder (3.3V, 8 MHz), dann lädst du wie gewohnt hoch. Ohne DTR drückst du Reset, sobald Uploading... erscheint.

Muss der USB-TTL-Adapter 3,3 V oder 5 V haben?

Der Logikpegel muss zum Ziel-Board passen: 5 V für Uno, Nano und den 5-V-Pro-Mini, 3,3 V für ESP8266, ESP32 und Raspberry Pi Pico. Bei Modulen mit Jumper triffst du die Wahl über den Jumper. Der CP2102 gibt immer 3,3 V aus und verträgt 5 V an den Eingängen, daher funktioniert er mit beiden Board-Arten.

Kann man einen Arduino Uno als USB-TTL-Adapter verwenden?

Ja. Legst du RESET des Uno auf GND oder lädst einen leeren Sketch hoch, ist sein USB-Chip direkt über D0 und D1 erreichbar. Dann wird gerade verbunden: TX des Ziels an D1, RX an D0. Da der Uno mit 5-V-Logik arbeitet, gehört bei 3,3-V-Boards ein Spannungsteiler in die D0-Leitung.

Alle Projekte ansehen
HC-SR04 Abstandsmessung (serielle Anzeige)
#27Anfänger

HC-SR04 Abstandsmessung (serielle Anzeige)

Der Sensor HC-SR04 funktioniert wie eine Fledermaus, die im Dunkeln ihren Weg findet: Er sendet einen Ton, den du nicht hörst, lauscht auf das Echo und misst, wie weit der Gegenstand vor ihm entfernt

4.6(46)
71
Temperatur und Luftfeuchtigkeit mit DHT11
#55Mittel

Temperatur und Luftfeuchtigkeit mit DHT11

Wie warm ist dein Zimmer, und ist die Luft feucht oder trocken? Der DHT11-Sensor misst Temperatur und Luftfeuchtigkeit, und der Arduino schreibt die Werte auf ein zweizeiliges LCD und aktualisiert sie

4.7(47)
73
LED Blinken mit ESP32
#103Anfänger

LED Blinken mit ESP32

Lehrt die grundlegende Verwendung von GPIO-Ausgängen mit ESP32. Wir erreichen einen Blinkeffekt, indem wir eine LED über einen digitalen Pin ein- und ausschalten. ESP32-Version des klassischen Blink-Projekts auf Arduino UNO; die grundlegenden Blink-Befehle in der Arduino-Umgebung bleiben gleich, aber die Pinbelegung und die GPIO-Pegel von 3,3 V des ESP32 unterscheiden sich von denen des Arduino UNO.

4.7(37)
99
Einweg-Kommunikation zwischen 2 Arduinos
#57Mittel
Premium

Einweg-Kommunikation zwischen 2 Arduinos

Du bringst zwei Arduinos über ein einziges Kabel zum Reden: Drückst du den Knopf am einen, geht die LED am anderen an, drückst du noch einmal, geht sie aus. Die sendende Platine meldet den Knopfdruck

4.4(37)
50
Bidirektionale Kommunikation zwischen 2 Arduinos
#58Mittel
Premium

Bidirektionale Kommunikation zwischen 2 Arduinos

Zwei Arduinos werden per Kabel verbunden und unterhalten sich: Drückst du den Knopf am einen, geht am anderen das Licht an, drückst du noch einmal, geht es aus. Auf beiden Platinen läuft dasselbe Prog

4.5(20)
26
LED per Bluetooth mit dem Handy steuern
#34Anfänger
Premium

LED per Bluetooth mit dem Handy steuern

Eine kleine Probe dafür, das Licht in deinem Zimmer vom Handy aus ein- und auszuschalten. Das Bluetooth-Modul leitet die Buchstaben, die du vom Handy schickst, an den Arduino weiter; ein Buchstabe sch

4.8(68)
89
ESP32-WLAN-STA-Verbindung (mit LCD-Display)
#127Fortgeschritten

ESP32-WLAN-STA-Verbindung (mit LCD-Display)

In diesem Projekt verbinden wir den ESP32 im Station-Modus (STA) sicher und fehlertolerant mit dem heimischen WLAN. Wir lagern SSID und Passwort in eine separate secrets.h-Datei aus, um Leaks zu Git zu verhindern, richten einen Auto-Reconnect-Mechanismus ein und zeigen RSSI-Signalpegel und IP-Adresse auf einem I2C-LCD-Display an. Die interne LED dient als Statusanzeige. Ein Verbindungsmanager auf Produktionsniveau.

4.4(21)
34
ESP32-OTA-Update – Drahtlose Firmware-Installation (mit LCD-Display)
#132Fortgeschritten
Premium

ESP32-OTA-Update – Drahtlose Firmware-Installation (mit LCD-Display)

In diesem Projekt lernst du, wie du auf dem ESP32 ohne USB-Kabel über WLAN neue Firmware installieren kannst. Mit der ArduinoOTA-Bibliothek wird der ESP32 im Netzwerk sichtbar und wird im Reiter „Network port“ der Arduino-IDE automatisch als bluegrays-ota aufgelistet. Die erste Installation erfolgt über USB, alle nachfolgenden Updates erfolgen drahtlos – eine äußerst wichtige Funktion für Feldgeräte. Auf dem I2C-LCD-Display werden der WLAN-Status, die IP-Adresse, der Hostname, der Fortschrit

4.6(14)
22