Debug remoto via WiFi di un Arduino con DT-06


Abbiamo già affrontato l’argomento della programmazione remota senza fili tramite Bluetooth di un Arduino UNO nel nostro precedente articolo intitolato “Arduino Programmazione remota/wireless“, tuttavia, grazie al feedback e alle domande dei nostri lettori, abbiamo deciso di approfondire ulteriormente questo argomento, esplorando le possibilità che la connettività WiFi offre.

Debug remoto WiFi su Arduino UNO con DT-06
Debug remoto WiFi su Arduino UNO con DT-06

Molti di voi hanno apprezzato il nostro articolo sulla connessione remota di un Arduino UNO all’interno del congelatore :P, che forniva una guida dettagliata su come trasmettere uno sketch ad un Arduino utilizzando moduli Bluetooth HC-05. Siamo lieti di avervi assistito nella realizzazione dei vostri progetti, ma ora stiamo affrontando una nuova sfida: come possiamo estendere la portata di queste connessioni wireless da solo pochi metri a una distanza limitata solo dalla vostra copertura WiFi?

In questo articolo, esploreremo le soluzioni disponibili sul mercato e le alternative ai moduli HC-05. Scopriremo come ottenere una connessione wireless più potente e affidabile per i vostri progetti Arduino. Quindi, se siete pronti a immergervi più a fondo nel mondo della programmazione remota tramite WiFi, continuate a leggere ed esplorate le vostre opzioni.

Nel panorama in continua evoluzione dell’IoT (Internet delle Cose) e dei sistemi embedded, la capacità di programmare e fare il debug di microcontrollori a distanza tramite WiFi è diventata a dir poco rivoluzionaria. Questo articolo completo vi guiderà attraverso i passaggi essenziali per flashare il firmware ESP-LINK sul vostro modulo ESP, sbloccando il pieno potenziale del debug seriale remoto. Come già detto, approfondiremo le complessità tecniche e forniremo approfondimenti sui dispositivi coinvolti e sul vasto potenziale che queste capacità sbloccano. Quindi, imbarchiamoci in questo viaggio alla scoperta.

Modulo WiFi

Prima di addentrarci nei dettagli tecnici del flashing del firmware e dell’impostazione del debug remoto, prendiamoci un momento per guardare i dispositivi al cuore di questo articolo:

ESP8285 (DT-06)

Il TTL-WiFi DT-06 è progettato e sviluppato sulla base del modulo WiFi ESP-M2 della Shenzhen Doctors of Intelligence & Technology Co., Ltd. Può realizzare la trasmissione trasparente dei dati al cloud in tempo reale, insieme al controllo a basso consumo e agli indicatori di stato.

Pinout DOIT DT-06
Pinout DOIT DT-06

Il vero valore è la dimensione compatta e il basso consumo, molto adattabile a molte situazioni. Viene fornito con un firmware proprietario che offre un set limitato di funzionalità, quindi per prima cosa, lo esaminiamo (e carichiamo l’ultima versione senza bug), ma successivamente, aggiorniamo quel modulo con ESP-LINK, una potente soluzione software.

Ecco il dispositivo DT-06

Potete trovare maggiori informazioni nell’articolo relativo “DOIT DT-06: pinout ad alta risoluzione e specifiche”.

DT-06 verifica e carica l’ultimo firmware DOIT

Carica firmware su DT-06
Carica firmware su DT-06

Quando ho acquistato il DT-06, è arrivato con un firmware vecchio con alcuni bug. Ho iniziato a cercare e aggiornare il firmware nel forum del sito DOIT. Ho trovato l’ultima versione, ma il firmware con integrazione home kit e altre funzionalità del firmware si trova su Baidu Drive, e non posso scaricarlo.

Invece, l’ultimo firmware DOIT è scaricabile da qui.

Flash con l’ultimo firmware DOIT

Ecco il convertitore USB a TTL USB to TTL CH340G - USB to TTL FT232RL


  1. Prima di tutto, scarica il firmware DOIT e decomprimilo.
  2. Scarica lo Strumento di Download Flash da Espressif.
  3. Collega il DT-06 a un USB FTDI così:
Cablaggio flash firmware DT-06
Cablaggio flash firmware DT-06

Oppure con un’alimentazione esterna così:

Cablaggio flash firmware DT-06 con alimentazione esterna
Cablaggio flash firmware DT-06 con alimentazione esterna

L’unica notazione è che l’Rx del FTDI è collegato al Tx del DT-06 e il Tx al Rx.

  1. Ora avvia lo Strumento di Download Flash e apri il file del firmware, l’indirizzo di inizio scrittura è 0x0.
Configurazione strumento di download Espressif esp8285 per il firmware DOIT DT-06
Configurazione strumento di download Espressif esp8285 per il firmware DOIT DT-06
  1. Metti il DT-06 in modalità download seguendo questi passaggi:
    • Tieni premuto il pulsante Boot;
    • Premi e rilascia il pulsante Reset;
    • Rilascia il pulsante Boot.
  2. Clicca su ERASE.
  3. Clicca sul pulsante di avvio.
  4. Riavvia il dispositivo.
Carica firmware su DT-06 con FDTI
Carica firmware su DT-06 con FDTI

Configura il DT-06 con il software originale

Prima di tutto, andiamo a verificare le potenzialità del firmware originale del DT-06. È una buona scelta se avete bisogno solo del debugger seriale per comunicare tramite WiFi con il dispositivo.

Il dispositivo si avvia in modalità AP. Se controllate sulla rete WiFi, trovate una con un nome come Doit_WiFi_XXXXXX. Potete connettervi a quella e poi andare all’indirizzo 192.168.4.1.

Per la prima configurazione, uso il telefono senza toccare il mio PC.

Configurazione prima pagina firmware originale DT-06
Configurazione prima pagina firmware originale DT-06

Nella prima schermata, aggiungo il mio SSID e la password, poi riavvio il dispositivo e mi riconnetto in modalità AP.

Quando ora entro, posso vedere il mio SSID memorizzato, se andate al menu AVANZATE, potete vedere l’IP dato dal server DHCP.

DT-06: verifica l'IP
DT-06: verifica l’IP

Per semplificare i passaggi successivi, consiglio di impostare un IP statico, andate su AVANZATE -> MODULO -> WiFi.

DT-06: imposta IP statico
DT-06: imposta IP statico

E ricordatevi di salvare le modifiche.

Collegamento dell’Arduino per il debug remoto

Prima di tutto, caricate uno sketch semplice su Arduino. Ecco un esempio:

/*
Esempio semplice per testare il debug remoto tramite WiFi

Renzo Mischianti <www.mischianti.org>
*/

// la funzione setup viene eseguita una volta quando premi reset o alimenti la scheda
void setup() {
  Serial.begin(115200);
  while (!Serial) { delay(100); }
  Serial.println("Inizio di tutto");
  // inizializza il pin digitale LED_BUILTIN come output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// la funzione loop viene eseguita più e più volte all'infinito
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // accendi il LED (HIGH è il livello di tensione)
  Serial.println("LED_BUILTIN, HIGH");
  delay(1000);                       // attendi un secondo
  digitalWrite(LED_BUILTIN, LOW);    // spegni il LED portando la tensione a LOW
  Serial.println("LED_BUILTIN, LOW");
  delay(1000);                       // attendi un secondo
}

Come potete vedere, uso 115200 come baud rate seriale, e imposteremo lo stesso valore sull’interfaccia web del DT-06. Nell’interfaccia Web, andate su MODULO -> SERIALE.

DT-06 cambia baud-rate seriale e impostazioni
DT-06 cambia baud-rate seriale e impostazioni

Ora il microcontrollore è pronto, possiamo procedere al cablaggio del DT-06.

DT-06 WiFi a TTL debug seriale Arduino UNO
DT-06 WiFi a TTL debug seriale Arduino UNO

Potete vedere che l’Rx del DT-06 è collegato al Tx di Arduino e viceversa per il Tx del DT-06 e Rx di Arduino.

Il DT-06 ha una logica a 3.3v, quindi quando lo connettete all’Arduino UNO per operazioni prolungate, è meglio mettere un convertitore di logica o un semplice partitore di tensione così.

DT-06 WiFi a TTL debug seriale Arduino UNO con partitore di tensione
DT-06 WiFi a TTL debug seriale Arduino UNO con partitore di tensione

Il partitore di tensione è spiegato nell’articolo “Partitore di tensione: calcolatrice e applicazione” con la relativa calcolatrice.

Potete vedere che ho aggiunto il partitore solo alla linea dal Tx di Arduino e Rx di DT-06 perché questa è l’unica linea che funziona (da Arduino) a 5v, per il viceversa, Arduino ha sufficiente sensibilità per leggere a livello logico di 3.3v.

Cablaggio DT-06 e Arduino UNO su breadboard
Cablaggio DT-06 e Arduino UNO su breadboard

Creare una porta COM virtuale

Ora, abbiamo un’interfaccia che comunica tramite WiFi con il nostro dispositivo, ma come ci connettiamo? Un sistema versatile e bellissimo è generare una porta COM virtuale.

Uno dei programmi più usati è “HW VSP3 – Virtual Serial Port”, potete scaricarlo da questa pagina, scaricate quello singolo perché il multi è un prodotto a pagamento.

Dopo aver scaricato, installatelo.

HW VSP3 Porta Seriale Virtuale: login come admin
HW VSP3 Porta Seriale Virtuale: login come admin

Cliccate sul pulsante Login e scrivete admin come password.

È necessario recuperare tutti i parametri dall’interfaccia web esp8285.

Parametri e porte dei servizi firmware originali DT-06
Parametri e porte dei servizi firmware originali DT-06

In questo caso, il porto che vi interessa è il 9000, e ottenete l’IP dalla schermata precedente (se avete impostato l’IP statico, è meglio).

HW VSP3 Porta Seriale Virtuale: configura seriale DT-06
HW VSP3 Porta Seriale Virtuale: configura seriale DT-06

Nella scheda Porta Seriale Virtuale, scegliete il numero della porta COM, inserite l’indirizzo IP e il porto 9000. Dopo di che, cliccate sul pulsante Crea COM.

Aspettate un momento, e se va tutto bene nel Gestore Dispositivi, potete trovare la vostra nuova Porta.

HW VSP3 Porta Seriale Virtuale: Gestione Dispositivi
HW VSP3 Porta Seriale Virtuale: Gestione Dispositivi

Ora, se connettiamo il nostro IDE Arduino alla porta seriale COM 25, possiamo trasmettere e ricevere il seriale tramite WiFi.

Collega Monitor Seriale IDE Arduino alla Porta COM Virtuale di ESP-LINK
Collega Monitor Seriale IDE Arduino alla Porta COM Virtuale

Grazie

  1. Arduino Programmazione remota/wireless
  2. BMP280, DHT11 and DHT22, DHT12, Dallas Temperature ds18b20, Thermistor
  3. Scheda di programmazione ATtiny (ArduinoUNO come ISP)
  4. Inviare email con esp8266 e Arduino (Libreria v1.x)
  5. Come usare la scheda SD con esp8266 e Arduino
  6. Ebyte LoRa E32 per Arduino, esp32 o esp8266 : WOR (wake on radio) del microcontrollore e uno shield per Arduino
  7. Gestire file JSON con Arduino, esp32 ed esp8266
  8. Come interfacciare Arduino, esp8266 o esp32 alla seriale RS-485
  9. Inviare email con allegati (libreria v2.x): Arduino Ethernet
  10. WebSocket
  11. Arduino AVR: binario compilato (.hex) da riga di comando o strumenti grafici
  12. Arduino: memoria SPI flash esterna veloce
  13. Accelerometro GY-291 ADXL345 i2c spi con interrupt per esp32, esp8266, stm32 e Arduino
  14. i2c Arduino: come creare una rete, parametri e scanner di indirizzi
  15. Magnetometro GY-273 QMC5883L clone HMC5883L per Arduino, esp8266 e esp32
  16. Debug remoto via WiFi di un Arduino con DT-06
  17. Programmare Arduino UNO da remoto via WiFi con il firmware ESP-Link su DT-06
  18. Introduzione alla Programmazione Remota dell’Arduino UNO r3 tramite WiFi con l’ESP8266


2 Risposte

  1. Vincenzo ha detto:

    Ciao Renzo, seguito tutta la procedura, sembra funzionare ma il tipo di dispositivo viene creato come Virtual serial port e non tra le porte COM-LPT, quindi arduino ide non la vede

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *