ESP32S3 - Porte COM

Salve, è la prima volta che mi affaccio dopo le presentazioni. Mi trovo in difficoltà perchè non so come procedere, mi è stato complicato anche scegliere la categoria, che probabilmente ho sbagliato... Ho acquistato una ESP32S3, collegata e programmata senza problemi, ma solo la priva volta: dalla seconda volta in poi, la COM relativa non viene più riconosciuta, completamente sparita. Provo l'altra COM: viene riconosciuta la scheda, carica il software, ma il monitor seriale non comunica... Mi faccio sostituire la scheda dal fornitore, tutto si ripete esattamente come la precedente: mi sfugge qualcosa?

Che sistema operativo usi?
Credo che i problemi siano 2
Windows cambia il numero di com da una volta con l'altra
Invece se la scheda si programma la seriale va
Se il monitor seriale non va è sbagliata la velocità

Uso windows, la prima porta COM (nel mio caso com8) scompare completamente da "gestione dispositivi" , la seconda porta usb compare come porta COM9, si collega correttamente, ma il monitor seriale non funzione anche con la velocità corretta... :face_without_mouth:

Vedere programma
E impostazioni del monitor

Quale modello di scheda hai preso, ce ne sono diversi tipi.

Se è del tipo con doppia porta USB, di solito una delle due porte è connessa ad un convertitore USB/TTL e l'altra è connessa direttamente al microcontrollore (ESP32S3 ha lo stack USB integrato).

Se selezioni la scheda sbagliata la porta "USB" potrebbe essere disattivata dalle opzioni della scheda selezionata, ma la porta connessa al convertitore rimane sempre disponibile.

Se non riesci a programmare usando la porta che ti rimane attiva probabilmente la scheda non va in "download mode" in modo automatico (con Windows succede anche a me ogni tanto).

Prova e metterla manualmente in download mode: quando Arduino IDE tenta di fare l'upload, mantieni premuto il pulsante boot e premi brevemente reset.

Buongiorno, la scheda è una ESP32 S3 Dev Kit C1, ho selezionato ESP32S3 DEV MODULE, l'esatta corrispondenza di scheda non è disponibile. Sulla seconda porta USB (quella attiva) riesco a programmare, ma non "risponde" il monitor seriale (programmazione ed impostazioni del monitor seriale sono corretti, sulla porta disattivata tutto funzionava bene). Come potrei "riattivare" la porta USB disattivata?

Ho appena verificato meglio, con la configurazione di default dell'IDE dovresti vedere tutte e due le porte quindi con tutta probabilità è semplicemente una questione di driver. Controlla prima di tutto che il dispositivo sia riconosciuto correttamente dal SO.

La seriale USB nativa è supportata direttamente dal sistema operativo, ma quella con il convertitore potrebbe aver bisogno del driver corretto.

Ad esempio con la mia scheda io ho questa situazione (COM18, COM19)
image

L'ESP32S3 lo puoi programmare su tutte e due le porte disponibili, ma il monitor seriale stampa di default su Serial sulla porta con il bridge.

Se però attivi nelle opzioni "USB CDC on Boot" (CDC sta per Communication Device Class), l'assegnazione cambia: La seriale USB nativa diventa Serial mentre quella hardware diventa Serial0 (di default, ma si può modificare ovviamente).

Senzanome
questo è tutto quello che disponibile sul sistema, attivando USB CDC on Boot, il monitor seriale mi restituisce solo l'orario ed il modello della scheda

Per vedere le 2 porte COM contemporaneamente devi collegare 2 cavi.

Quella che vedi attualmente è la porta nativa USB e quindi è normale che sul monitor seriale non ci sia nulla.

il bello è che sono collegati 2 cavi... ci sono molte voci relative a USB nel menu strumenti, pensi che ci sia da fare qualche cambiamento o impostazione in merito?

considera che la stessa identica cosa mi è successa sulla precedente scheda esp32s3 che mi sono fatto sostituire dal fornitore credendola difettosa

Allora uno dei due cavi non funziona.

Anche se fosse una questione di driver, dovresti vedere il dispositivo con il classico triangolo giallo.

Beh in realtà a me (Windows 10 e 11) non fa così. Ossia se collego Arduino alla stessa porta USB mi dà sempre la stessa COM (es. COM6), se cambio porta mi dà una COM diversa (es. COM7). Fa così anche se uso un hub USB, cambiando porta delle sue 4.
Quindi penso che non sia questo il problema dell'OP, ma forse solo di driver seriali o di cavo, come si stava dicendo.

lo stesso cavo sull'altra porta funziona, riesco a programmare. Anche i drivers sono giusti (per sicurezza li ho reinstallati). Proverò comunque una coppia di cavi nuovi, anche se a questo punto devo ipotizzare un difetto hardware della porta... mi sembra improbabile che due esp32s3 abbiano lo stesso difetto: continuerò a provare...

mi hai incuriosito, gentilmente, dove e come si cambia l'impostazione Serial?

Nel framework Arduino, Serial (cosi come Serial1 Serial2 etc etc se disponibili), sono preassegnati dal codice del core stesso nei file HardwareSerial.h/.cpp, in funzione della scheda che selezioni nell'IDE.

Serial0 è sempre definita ed è sempre quella connessa al convertitore TTL/USB se la scheda lo monta.

Se abiliti le opzioni della scheda come il CDC ad esempio, le definizioni vengono modificate con delle macro.

#if ARDUINO_USB_CDC_ON_BOOT  //Serial used from Native_USB_CDC | HW_CDC_JTAG
#if ARDUINO_USB_MODE         // Hardware CDC mode
// Arduino Serial is the HW JTAG CDC device
#define Serial HWCDCSerial
#else  // !ARDUINO_USB_MODE -- Native USB Mode
// Arduino Serial is the Native USB CDC device
#define Serial USBSerial
#endif  // ARDUINO_USB_MODE
#else   // !ARDUINO_USB_CDC_ON_BOOT -- Serial is used from UART0
// if not using CDC on Boot, Arduino Serial is the UART0 device
#define Serial Serial0
#endif  // ARDUINO_USB_CDC_ON_BOOT

Quindi se vuoi "personalizzare" non devi fare altro che replicare lo stesso meccanismo avendo l'accortezza di "undefinire" quello già fatto dal core

#ifdef Serial
    #undef Serial
    #define LaMiaSerial Serial0
#endif 

GRAZIE per la completezza dei suggerimenti e la squisita cortesia...

1 Like