Componenti · 11 min di lettura

Convertitore USB-TTL: usare CH340 e CP2102 con Arduino

A cosa serve un convertitore USB-TTL? TX-RX incrociati, jumper 3,3 V/5 V, driver, programmare Pro Mini, ESP-01 ed ESP32-CAM e confronto tra CH340 e CP2102.

Un convertitore USB-TTL è una piccola scheda che traduce la porta USB del computer nel linguaggio seriale (UART) parlato dai microcontrollori. Ti serve per caricare codice su schede senza connettore USB come Arduino Pro Mini, ESP-01 ed ESP32-CAM, per leggere i messaggi seriali che escono da un modulo o per configurare moduli GPS e Bluetooth direttamente dal computer. In realtà ogni Arduino Uno e Nano ne ha già una copia a bordo; il convertitore la trasforma in un modulo separato e portatile.

In questa guida conoscerai i pin del convertitore, l'errore più comune in assoluto (il collegamento TX-RX), il jumper che sceglie il livello logico a 3,3 V o 5 V e l'installazione dei driver su Windows, macOS e Linux. Poi vedrai come programmare un Arduino Pro Mini senza premere pulsanti grazie al pin DTR, caricare codice su ESP-01 ed ESP32-CAM, usare il convertitore come secondo monitor seriale e in cosa differiscono i tre chip più diffusi: CH340, CP2102 e FT232.

Modulo convertitore USB-TTL CP2102
Convertitore USB-TTL CP2102: USB da un lato, GND, TXD, RXD, DTR e alimentazione dall'altro. Il modo più pratico per programmare Pro Mini, ESP-01 ed ESP32-CAM.

Che cos'è un convertitore USB-TTL e a cosa serve?

Computer e microcontrollore parlano lingue diverse. L'USB è un protocollo complesso fatto di pacchetti, indirizzi e driver. La UART di un microcontrollore, invece, usa solo due linee: una invia i dati (TX), l'altra li riceve (RX), e ogni byte è composto da bit inviati uno dopo l'altro a una velocità concordata (baud). Il chip del convertitore appare al computer come una porta seriale virtuale (COM3 su Windows, /dev/cu.usbserial... su macOS, /dev/ttyUSB0 su Linux); ogni byte scritto su quella porta esce dal pin TX come segnale UART e ogni byte che arriva sul pin RX viene passato al computer. Il TTL nel nome indica che i segnali variano tra 0 V e 5 V, oppure tra 0 V e 3,3 V.

  • Programmare schede senza USB: Arduino Pro Mini, LilyPad, ESP-01, ESP32-CAM e chip ATmega328P nudi con bootloader.
  • Leggere log seriali: Seguire i messaggi di debug in una seconda finestra mentre la porta USB della scheda è occupata con altro.
  • Parlare direttamente con i moduli: Inviare comandi AT a un ESP-01, leggere le frasi NMEA di un GPS, rinominare un modulo Bluetooth.
  • Recuperare una scheda guasta: Programmare un Uno o un Nano con il chip USB bruciato tramite i pin D0 e D1.
  • Collegarsi alla console di altri dispositivi: I pin della console seriale di router, schede di stampanti 3D o computer a scheda singola.

Pin dell'USB-TTL: GND, VCC, TXD, RXD, DTR e RTS

PinFunzioneNota
GNDMassa comuneVa sempre collegato
5VUscita 5 V dall'USBDi solito fino a 500 mA, a seconda della porta del computer
3V3Uscita 3,3 VDal chip o da un piccolo regolatore; corrente limitata
TXDUscita dati (dal computer alla scheda)Va al pin RX della scheda di destinazione
RXDIngresso dati (dalla scheda al computer)Va al pin TX della scheda di destinazione
DTRLinea di controllo che va LOW all'apertura della portaUsata per il reset automatico sugli Arduino
RTS / CTSLinee di controllo di flussoRTS si usa nel circuito di caricamento automatico delle schede ESP; CTS resta libero nella maggior parte dei progetti

Collegamento incrociato di TX e RX

L'errore più comune è collegare TX con TX. La regola è semplice: la linea su cui un dispositivo parla deve andare alla linea su cui l'altro ascolta. Quindi il pin TXD del convertitore va al pin RX della scheda di destinazione e il pin RXD va al TX della destinazione. Alcune schede indicano la direzione direttamente nelle etichette per evitare confusione: sull'Arduino Pro Mini c'è scritto RXI (ingresso RX) e TXO (uscita TX), e le schede FTDI in stile SparkFun sono etichettate in modo che, innestandole direttamente, si ottenga l'incrocio corretto. Se non ti fidi delle etichette, prova una volta il collegamento al contrario; scambiare TX e RX non danneggia nulla, semplicemente non c'è comunicazione.

ConvertitoreScheda di destinazioneDescrizione
GNDGNDMassa comune, indispensabile
TXDRX (RXI, U0R)Incrociato: trasmettitore verso ricevitore
RXDTX (TXO, U0T)Incrociato: ricevitore verso trasmettitore
5V o 3V3VCCSolo se la scheda di destinazione non ha un'altra alimentazione
DTRDTR / GRN / RSTSolo se ti serve il reset automatico
Se la scheda di destinazione è già alimentata dal proprio alimentatore o da una batteria, non collegare il pin VCC del convertitore; bastano GND, TXD e RXD. Unire le uscite di due alimentazioni diverse può far scorrere corrente dall'una all'altra e danneggiare il convertitore o la porta USB del computer. GND invece va sempre collegato; senza massa comune i livelli dei segnali non hanno senso.

Il jumper 3,3 V / 5 V: come scegliere il livello logico

Arduino Uno, Nano e il Pro Mini a 5 V lavorano con logica a 5 V; ESP8266, ESP32 e Raspberry Pi Pico con logica a 3,3 V. Mandare un segnale a 5 V nel pin RX di un ESP sollecita i suoi diodi di protezione e col tempo può rovinare il pin. Per questo la maggior parte dei moduli CH340G ha un jumper a tre pin: sceglie la tensione di alimentazione del chip, e il livello dell'uscita TXD segue quella tensione. Il CP2102 lavora sempre con logica a 3,3 V ma i suoi ingressi tollerano i 5 V; perciò si intende senza problemi sia con le schede a 3,3 V sia con quelle a 5 V, perché un ATmega328P a 5 V considera già HIGH tutto ciò che supera i 3 V. Anche i moduli FT232RL hanno spesso un jumper che sceglie il livello di I/O del chip (VCCIO).

Scheda di destinazioneJumper o livello logicoAlimentazione
Arduino Pro Mini 5 V / 16 MHz5 VDal pin 5V del convertitore
Arduino Pro Mini 3,3 V / 8 MHz3,3 VDal pin 3V3 o dalla propria alimentazione
ESP-01 / ESP-01S3,3 VUn regolatore a 3,3 V separato (almeno 300 mA)
ESP32-CAM3,3 VDal pin 5V del convertitore al pin 5V della scheda
Raspberry Pi Pico (UART0)3,3 VIl Pico è alimentato dalla sua USB; solo GND, TX, RX

Se il tuo convertitore non ha il jumper e devi collegare una linea TX a 5 V a un ingresso a 3,3 V, basta un semplice partitore di tensione: con 1 kΩ tra la linea TX e l'RX della destinazione, e 2 kΩ tra l'RX della destinazione e GND, i 5 V scendono a circa 3,3 V. Il calcolo dettagliato è in partitore di tensione. Nella direzione opposta, un TX a 3,3 V verso un ingresso a 5 V, di solito non ci sono problemi.

Confronto: CH340, CP2102 e FT232

CaratteristicaCH340 (G / C)CP2102FT232RL
ProduttoreWCHSilicon LabsFTDI
Baud massimo2 Mbps1 Mbps (CP2102N: 3 Mbps)3 Mbps
QuarzoIl CH340G richiede un quarzo esterno da 12 MHz; il CH340C lo ha integratoInternoInterno
Uscita 3,3 VDipende dal modulo, debole nella maggior parteSì, circa 100 mA chip compresoSì, fino a 50 mA
Livello logico5 V o 3,3 V in base all'alimentazione3,3 V, ingressi tolleranti ai 5 V5 V o 3,3 V in base a VCCIO
DTR e RTSSìSìSì, con tutte le linee modem
DriverSu Windows di solito automatico; integrato in macOS e LinuxSu Windows di solito automatico; integrato in macOS e LinuxAutomatico su Windows; integrato in macOS e Linux
PrezzoIl più economicoMedioIl più caro
AttenzioneNon caricare troppo il pin 3V3 del moduloL'ordine dei pin cambia a seconda del produttoreMolti chip contraffatti; il driver ufficiale può rifiutarne alcuni

Per l'uso hobbistico di tutti i giorni tra CH340 e CP2102 non c'è differenza pratica; entrambi funzionano perfettamente a 115200 baud e reggono senza sforzo tutte le velocità usate dall'Arduino IDE. L'oscillatore interno e l'uscita a 3,3 V più robusta danno al CP2102 un leggero vantaggio quando deve alimentare piccole schede a 3,3 V, mentre il CH340 è il più economico e diffuso. L'FT232RL è un chip affidabile e molto configurabile, ma buona parte dei moduli FT232 economici in commercio monta chip contraffatti. I CH9102 e CH343 che trovi sulle schede ESP32 più recenti sono membri più veloci della stessa famiglia e si usano allo stesso modo.

Convertitore USB-TTL CH340
Convertitore USB-TTL CH340: l'opzione più economica. Con il jumper scegli il livello logico a 5 V o a 3,3 V.

Installare i driver: Windows, macOS e Linux

Sistema operativoCosa fareNome della porta
Windows 10 / 11Di solito Windows Update installa il driver da solo; altrimenti installa CH341SER per il CH340 o il driver CP210x VCP per il CP2102COM3, COM4... in Gestione dispositivi > Porte (COM e LPT)
macOSLe versioni attuali includono i driver per CH340, CP2102 e FT232; non sovrapporre vecchi driver del produttore/dev/cu.usbserial-..., oppure con il driver del produttore /dev/cu.wchusbserial... o /dev/cu.SLAB_USBtoUART
LinuxI driver sono già nel kernel; aggiungi il tuo utente al gruppo dialout e, su Ubuntu, rimuovi il pacchetto brltty se la porta del CH340 sparisce/dev/ttyUSB0

Se su Windows, dopo aver collegato il convertitore, in Gestione dispositivi vedi sotto Altri dispositivi un USB2.0-Serial con il punto esclamativo giallo, manca il driver del CH340; se vedi CP2102 USB to UART Bridge Controller, manca quello del CP2102. Dopo aver installato il driver, scollega e ricollega il convertitore e guarda Strumenti > Porta nell'Arduino IDE: la porta nuova che compare in quel momento è quella del convertitore. Se non compare nulla, cambia prima il cavo; i cavi di sola ricarica non hanno i fili dati. L'elenco completo dei problemi di porta, driver e permessi è in Arduino non carica lo sketch.

Test di loopback: il convertitore funziona?

  1. Togli tutti i cavi dal convertitore e collegalo al computer.
  2. Con un cavetto jumper unisci tra loro i pin TXD e RXD del convertitore stesso.
  3. Seleziona la porta del convertitore nell'Arduino IDE e apri il Monitor seriale; per questo test la velocità non conta.
  4. Scrivi qualcosa e invialo. Se il testo torna identico, chip, driver e cavo sono a posto; il problema sta nel collegamento o nella scheda di destinazione.
  5. Se non torna nulla, controlla porta, driver e cavo, e guarda se i LED TX e RX del convertitore lampeggiano.

Programmare un Arduino Pro Mini: reset automatico con DTR

Scheda Arduino Pro Mini
Arduino Pro Mini: non ha la presa USB. Il connettore a sei pin BLK, GND, VCC, RXI, TXO e GRN sul lato corto serve per un convertitore USB-TTL.

Durante il caricamento la scheda Arduino viene prima resettata; il bootloader, che gira per circa un secondo dopo il reset, controlla se dalla porta seriale arriva un nuovo programma. Uno e Nano fanno questo reset da soli: tra la linea DTR del chip USB e il pin RESET del processore c'è un condensatore da 100 nF. Appena l'IDE apre la porta, DTR passa da HIGH a LOW, il condensatore trasmette questo brusco calo al pin RESET come un breve impulso LOW e la scheda si riavvia. Sul Pro Mini lo stesso condensatore è sulla scheda ed è collegato al pin GRN (o DTR) del connettore; se colleghi lì il pin DTR del convertitore, caricare diventa facile come su un Uno.

USB-TTLPro MiniNota
GNDGND (o BLK)Massa comune
5V o 3V3VCC5V per la versione 5 V / 16 MHz, 3V3 per la 3,3 V / 8 MHz
TXDRXIIncrociato
RXDTXOIncrociato
DTRGRN (DTR)Reset automatico; senza, devi resettare a mano
  1. Scopri la versione della scheda dalla serigrafia sul retro o dal quarzo: le schede con quarzo da 16 MHz sono la versione a 5 V, quelle da 8 MHz la versione a 3,3 V.
  2. Imposta il jumper del convertitore in base alla versione della scheda e collega i fili secondo la tabella.
  3. Nell'Arduino IDE scegli Strumenti > Scheda > Arduino AVR Boards > Arduino Pro or Pro Mini.
  4. In Strumenti > Processor scegli ATmega328P (5V, 16 MHz) o ATmega328P (3.3V, 8 MHz) in base alla tua scheda.
  5. Seleziona la porta del convertitore e carica lo sketch di prova qui sotto; con DTR collegato non serve premere alcun pulsante.
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}

Finito il caricamento, il LED sulla scheda lampeggia ogni mezzo secondo. Apri il Monitor seriale a 9600 baud con A capo (NL), scrivi qualcosa e il testo torna indietro. La riga F_CPU nel codice smaschera una trappola piccola ma importante: i bootloader di entrambe le versioni del Pro Mini caricano a 57600 baud, quindi il codice si carica anche con l'opzione Processor sbagliata. Ma se scegli 16 MHz per una scheda a 8 MHz, tutto gira a metà velocità, il LED cambia una volta al secondo e nel Monitor seriale vedi solo caratteri senza senso. Se il convertitore non ha il pin DTR puoi sincronizzare il caricamento a mano: appena l'IDE finisce di compilare e nell'output compare Uploading..., premi e rilascia il pulsante di reset del Pro Mini.

Caricare codice su ESP-01 ed ESP32-CAM

Su ESP8266 ed ESP32 il bootloader è integrato nel chip e all'avvio controlla il pin GPIO 0: se GPIO 0 è LOW entra in modalità download e attende il codice, se è HIGH esegue il programma in flash. Le schede di sviluppo hanno un circuito di caricamento automatico che collega le linee DTR e RTS a EN e GPIO 0 tramite due transistor; esptool muove queste linee in sequenza e porta da solo la scheda in modalità download. Un semplice convertitore USB-TTL non ha questo circuito, quindi lo fai a mano: colleghi GPIO 0 a GND, resetti la scheda, carichi il codice, poi togli il collegamento di GPIO 0 e resetti di nuovo.

USB-TTL (jumper su 3,3 V)ESP-01ESP32-CAM
GNDGNDGND
TXDRXU0R (GPIO 3)
RXDTXU0T (GPIO 1)
AlimentazioneVCC ed EN (CH_PD) da un regolatore a 3,3 V separatoDal pin 5V del convertitore al pin 5V della scheda
Modalità di caricamentoGPIO 0 a GND, tocca brevemente RST con GNDIO0 a GND, premi il pulsante RST
Scheda nell'Arduino IDEGeneric ESP8266 ModuleAI Thinker ESP32-CAM

L'ESP-01 assorbe picchi di corrente oltre i 300 mA quando si collega al Wi-Fi; il pin 3V3 del convertitore non li regge e il modulo si riavvia di continuo. Usa quindi un regolatore AMS1117-3.3 alimentato dal pin 5V. Tutti i collegamenti e i comandi AT dell'ESP-01 sono in Modulo ESP-01, mentre il caricamento passo passo della ESP32-CAM è in Come usare la ESP32-CAM. Se cerchi un progetto che aggiunga un PIR alla ESP32-CAM e ti mandi la foto sul telefono, dai un'occhiata a Foto dalla ESP32-CAM su Telegram.

L'ESP8266 invia i messaggi di avvio a una velocità insolita, 74880 baud; impostando il Monitor seriale su questa velocità vedrai se il modulo è partito in modalità download (boot mode:(1,x)) o normale (boot mode:(3,x)). L'ESP32 scrive i messaggi di avvio a 115200 baud; la riga waiting for download indica che GPIO 0 è ancora collegato a GND.

Leggere i log seriali: l'USB-TTL come seconda porta seriale

Uno degli usi meno noti ma più utili del convertitore è dare a una scheda un secondo monitor seriale. Mentre la porta USB della scheda dialoga con un programma Python, con il Plotter seriale o con un altro dispositivo, tu segui i messaggi di debug dettagliati su una porta separata. L'ESP32 ha tre UART hardware; il codice seguente assegna la UART2 ai GPIO 16 e 17 e invia una riga di log al convertitore ogni secondo. La lettera r inviata dal convertitore azzera il contatore, così vedi che funziona in entrambe le direzioni.

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}

Per il collegamento imposta il jumper del convertitore su 3,3 V e collega TXD a GPIO 16, RXD a GPIO 17 e GND a GND. Poi, invece di aprire un secondo Arduino IDE, puoi usare PuTTY, screen su macOS e Linux oppure un piccolo lettore scritto in Python; per la parte Python vedi Comunicazione seriale tra Arduino e Python. Sul Raspberry Pi Pico la stessa idea richiede poche righe di MicroPython: la UART0 è su GP0 (TX) e GP1 (RX), e il codice invia un log e rimanda indietro i byte ricevuti.

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)

Con lo stesso metodo puoi ascoltare cosa dice un modulo senza nessun Arduino in mezzo. Collega un modulo GPS NEO-6M direttamente al convertitore, aprilo a 9600 baud e vedrai scorrere le frasi NMEA; apri un modulo HC-05 in modalità AT a 38400 baud e potrai cambiarne nome e PIN. Tutto su fine riga e baud del Monitor seriale è in Monitor seriale di Arduino.

Errori comuni e soluzioni

SintomoCausa probabileSoluzione
Il convertitore non compare nell'elenco delle porteCavo di sola ricarica, driver mancante o brltty su LinuxUsa un cavo dati, installa il driver, rimuovi brltty
avrdude: stk500_getsync(): not in sync: resp=0x00TX-RX non incrociati, DTR non collegato o scheda sbagliataCollega TX a RXI e RX a TXO; collega DTR a GRN o premi reset quando compare Uploading...
Codice caricato ma il Monitor seriale mostra caratteri straniBaud diversi o frequenza sbagliata scelta per il Pro MiniImposta il Monitor seriale sulla velocità del codice, scegli in Processor la versione reale della scheda
Failed to connect to ESP8266 / ESP32GPIO 0 non è LOW all'avvio oppure TX-RX invertitiCollega GPIO 0 a GND, poi fai reset; controlla TX-RX
L'ESP si riavvia di continuoL'uscita a 3,3 V del convertitore non regge i picchi di correnteUsa un regolatore a 3,3 V separato e un condensatore da 100–470 µF
Il Pro Mini si resetta ogni volta che apri il Monitor serialeDTR è collegato; il reset all'apertura della porta è normaleSe non vuoi il reset, togli il filo DTR dopo il caricamento
Il computer spegne la porta USB al collegamentoCortocircuito o due alimentazioni in conflittoTogli i fili; non collegare VCC se la destinazione ha la propria alimentazione
Se non hai un convertitore puoi usare temporaneamente un Arduino Uno al suo posto: collega il pin RESET dell'Uno a GND o caricaci uno sketch vuoto. In questo caso il collegamento è diretto, non incrociato: il TX della destinazione va al D1 (TX) dell'Uno e il suo RX al D0 (RX), perché i dati passano dal chip USB dell'Uno e non dal suo processore. L'Uno lavora con logica a 5 V, quindi per le schede a 3,3 V non dimenticare un partitore di tensione sulla linea D0.

Il convertitore USB-TTL è uno degli strumenti più piccoli del tuo cassetto e uno di quelli che userai di più: programma schede senza USB, fa parlare il computer con i moduli e ti mostra riga per riga cosa succede dentro i tuoi progetti. Se ricordi di incrociare TX e RX, di scegliere il livello logico giusto e di tenere GND in comune, quasi tutti i problemi spariscono. Nell'app BlueGrays trovi la comunicazione seriale tra due Arduino, il controllo dal telefono via Bluetooth e progetti Wi-Fi con ESP32, con schemi di collegamento e codice pronto passo passo.

Domande frequenti

A cosa serve un convertitore USB-TTL?

Converte la porta USB del computer nella comunicazione seriale UART usata dai microcontrollori. Così puoi caricare codice su schede senza USB come Arduino Pro Mini, ESP-01 ed ESP32-CAM, leggerne i messaggi seriali e configurare moduli come GPS o Bluetooth direttamente dal computer.

Meglio CH340 o CP2102?

Nei progetti hobbistici entrambi funzionano senza problemi a 115200 baud e in pratica non si nota differenza. Il CP2102 ha oscillatore interno, un'uscita a 3,3 V più robusta e ingressi tolleranti ai 5 V; il CH340 è più economico e più diffuso. Le versioni attuali di macOS e Linux includono i driver di entrambi.

Come si collegano TX e RX su un convertitore USB-TTL?

Si incrociano: il pin TXD del convertitore va al pin RX della scheda di destinazione e il pin RXD al TX della destinazione. GND deve essere sempre in comune. Invertire le linee non provoca danni, ma non arriva nulla; se non sei sicuro, scambiale e riprova.

Come programmare un Arduino Pro Mini con un USB-TTL?

Collega GND a GND, VCC a VCC, TXD a RXI, RXD a TXO e DTR al pin GRN. Nell'Arduino IDE scegli la scheda Arduino Pro or Pro Mini e l'opzione ATmega328P (5V, 16 MHz) o (3.3V, 8 MHz) adatta alla tua scheda, poi carica come al solito. Senza DTR premi reset appena compare Uploading...

Il convertitore USB-TTL deve essere a 3,3 V o a 5 V?

Il livello logico deve coincidere con la scheda di destinazione: 5 V per Uno, Nano e Pro Mini a 5 V; 3,3 V per ESP8266, ESP32 e Raspberry Pi Pico. Nei moduli con jumper la scelta si fa con il jumper. Il CP2102 esce sempre a 3,3 V e i suoi ingressi tollerano i 5 V, quindi funziona con entrambi i tipi di scheda.

Si può usare un Arduino Uno come convertitore USB-TTL?

Sì. Se colleghi il RESET dell'Uno a GND o ci carichi uno sketch vuoto, il suo chip USB diventa accessibile direttamente da D0 e D1. In questo caso il collegamento è diretto: il TX della destinazione va a D1 e il suo RX a D0. Dato che l'Uno usa logica a 5 V, aggiungi un partitore di tensione sulla linea D0 per le schede a 3,3 V.

Vedi tutti i progetti
HC-SR04 Misura della distanza (display seriale)
#27Principiante

HC-SR04 Misura della distanza (display seriale)

Il sensore HC-SR04 funziona come un pipistrello che trova la strada al buio: manda un suono che non puoi sentire, ne ascolta l'eco e misura quanto è lontano l'oggetto davanti a sé. L'Arduino scrive qu

4.6(46)
71
Temperatura e umidità con DHT11
#55Intermedio

Temperatura e umidità con DHT11

Quanti gradi ci sono nella tua stanza, e l'aria è umida o secca? Il sensore DHT11 misura temperatura e umidità, e l'Arduino scrive i valori su uno schermo LCD a due righe, aggiornandoli ogni paio di s

4.7(47)
73
LED Lampeggiante con ESP32
#103Principiante

LED Lampeggiante con ESP32

Insegna l'uso di base delle uscite GPIO con l'ESP32. Otteniamo un effetto lampeggiante accendendo e spegnendo un LED dal pin digitale. Versione ESP32 del classico progetto blink su Arduino UNO; i comandi di base di blink nell'ambiente Arduino sono gli stessi, ma la disposizione dei pin e i livelli GPIO a 3,3 V dell'ESP32 sono diversi da quelli di Arduino UNO.

4.7(37)
99
Comunicazione unidirezionale tra 2 Arduino
#57Intermedio
Premium

Comunicazione unidirezionale tra 2 Arduino

Fai parlare due Arduino con un solo filo: premi il pulsante sull'uno e il LED dell'altro si accende, premi di nuovo e si spegne. La scheda che invia segnala la pressione con un breve messaggio, e quel

4.4(37)
50
Comunicazione bidirezionale tra 2 Arduino
#58Intermedio
Premium

Comunicazione bidirezionale tra 2 Arduino

Due Arduino collegati con dei fili parlano tra loro: premi il pulsante di uno e si accende la luce dell'altro, premilo di nuovo e si spegne. Entrambe le schede hanno lo stesso programma, quindi ognuna

4.5(20)
26
Controllare un LED dal telefono tramite Bluetooth
#34Principiante
Premium

Controllare un LED dal telefono tramite Bluetooth

Una piccola prova per accendere e spegnere le luci della tua stanza dal telefono. Il modulo Bluetooth passa all'Arduino le lettere che invii dal telefono; una lettera accende il LED rosso, un'altra qu

4.8(68)
89
Connessione Wi-Fi STA con ESP32 (con display LCD)
#127Avanzato

Connessione Wi-Fi STA con ESP32 (con display LCD)

In questo progetto colleghiamo l'ESP32 alla rete Wi-Fi domestica in modalità Station (STA) in modo sicuro e tollerante agli errori. Separiamo SSID e password in un file secrets.h per impedire fughe su Git, impostiamo un meccanismo di riconnessione automatica e visualizziamo il livello del segnale RSSI e l'indirizzo IP su un display LCD I2C. Il LED interno funge da indicatore di stato.

4.4(21)
34
Aggiornamento OTA dell'ESP32 — Installazione wireless del firmware (con display LCD)
#132Avanzato
Premium

Aggiornamento OTA dell'ESP32 — Installazione wireless del firmware (con display LCD)

In questo progetto imparerai a installare il nuovo firmware sull'ESP32 tramite Wi-Fi, senza bisogno di un cavo USB. Grazie alla libreria ArduinoOTA, l'ESP32 diventa visibile sulla rete e viene automaticamente elencato come bluegrays-ota nella scheda "Network port" dell'IDE di Arduino. Il primo caricamento avviene tramite USB, mentre tutti gli aggiornamenti successivi saranno wireless — una caratteristica fondamentale per i dispositivi sul campo. Sul display LCD I2C vengono visualizzati, sia

4.6(14)
22