Programmare Arduino UNO da remoto via WiFi con il firmware ESP-Link su DT-06


Nel regno dei sistemi embedded e dell’IoT (Internet delle Cose), la capacità di aggiornare e gestire i dispositivi da remoto è diventata sempre più fondamentale.

Molti di voi hanno apprezzato il nostro articolo sulla connessione remota di un Arduino UNO all’interno del congelatore 😛 (“Arduino Programmazione remota/wireless“), che ha fornito una guida dettagliata su come trasmettere uno sketch ad Arduino usando i moduli Bluetooth HC-05, stiamo per migliorare e estendere quell’articolo con l’uso del WiFi e grazie al DT-06 che è pienamente compatibile con HC-06.

Programma Arduino UNO da Remoto via WiFi con DT-06 ESP-Link Firmware
Programma Arduino UNO da Remoto via WiFi con DT-06 ESP-Link Firmware

Purtroppo, il firmware originale del DT-06 non permette la programmazione di Arduino, quindi utilizzeremo il firmware ESP-Link, progettato per i moduli ESP8266, che funge da ponte tra il WiFi e la comunicazione seriale. Quando combinato con dispositivi come il DT-06, questo firmware può trasformare il modo in cui interagiamo con schede popolari come l’Arduino UNO.

Modulo WiFi

Prima di addentrarci nei dettagli tecnici del flashing del firmware e della configurazione del debug remoto, diamo un’occhiata ai dispositivi al centro di questo articolo:

ESP8285 (DT-06)

Il TTL-WiFi DT-06 è progettato e sviluppato basandosi sul 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.

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

Ecco il dispositivo DT-06

Puoi trovare maggiori informazioni nel relativo articolo “DOIT DT-06: pinout ad alta risoluzione e specifiche”.

Caricamento firmware ESP-LINK su DT-06

Puoi recuperare l’ultima versione del firmware ESP-LINK da qui. Dopo il download, decomprimilo e scarica il Flash Download Tool da Espressif.

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 ESP-LINK e decomprimilo.

Nella cartella del firmware, puoi trovare questi file

Descrizione dei file

boot_v1.6.bin

Descrizione: Questo è il file del bootloader responsabile dell’inizializzazione dell’hardware e del caricamento del firmware principale. È il primo codice che viene eseguito all’avvio del dispositivo. Il numero di versione (v1.7 in questo caso) indica la versione del bootloader.

user1.bin

Descrizione: Questo è il firmware dell’applicazione principale contenente il codice sorgente compilato e le risorse necessarie per le funzioni specifiche del dispositivo. Viene caricato dal bootloader e prende in mano l’operazione principale del dispositivo. La designazione “user1” indica generalmente che si tratta dello spazio applicativo primario; in alcune configurazioni, potrebbe esistere anche un “user2.bin” per firmware di backup o alternativi.

esp_init_data_default.bin

Descrizione: Questo file contiene i dati di inizializzazione predefiniti per il dispositivo ESP. Viene tipicamente utilizzato per impostare le configurazioni di sistema predefinite, inclusi i settaggi per il modulo RF, i parametri Wi-Fi e altri valori relativi all’hardware.

blank.bin

Descrizione: Questo file è solitamente riempito con dati vuoti (zero) ed è utilizzato per cancellare o resettare settori specifici della memoria flash. È utile quando si aggiorna il firmware o quando si deve assicurare che non rimangano dati residui in queste aree di memoria.

  1. Scarica il Flash Download Tool da Espressif.
  2. Collega il DT-06 a un USB FTDI in questo modo:

Oppure con un alimentatore esterno in questo modo:

Con il Flash Download Tool, è molto semplice. Quando avvii il Flash Download Tool, devi selezionare esp8266 e poi iniziare a configurarlo.

Indirizzi della memoria flash da 32mbit (4MB)

Dispositivi come NodeMCU, WeMos D1 mini e altri utilizzano queste impostazioni.

IndirizzoNome fileDimensione (MB)
0x00000boot_v1.6.bin0.5
0x01000user1.bin3.5
0x3FC000esp_init_data_default.bin0.1
0x3FE000blank.bin0.1

Ecco un esempio di caricamento con esptool.py:

esptool.py --port /dev/ttyUSB0 --baud 230400 write_flash -fs 32m -ff 80m \
    0x00000 boot_v1.6.bin 0x1000 user1.bin \
    0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin

Indirizzi della memoria flash da 16mbit (2MB)

Alcuni dispositivi, come il DT-06 aggiornato, possono utilizzare queste impostazioni.

IndirizzoNome fileDimensione (MB)
0x00000boot_v1.6.bin0.5
0x01000user1.bin1.8
0x1FC000esp_init_data_default.bin0.1
0x1FE000blank.bin0.1

Indirizzi della memoria flash da 8mbit (1MB)

ESP-01S e le principali versioni del DT-06 utilizzano queste impostazioni.

IndirizzoNome fileDimensione (MB)
0x00000boot_v1.6.bin0.5
0x01000user1.bin0.9
0xFC000esp_init_data_default.bin0.1
0xFE000blank.bin0.1

Indirizzi della memoria flash da 4mbit (512Kb)

Il DT-06 originale, ESP-01 e altri piccoli dispositivi necessitano di queste impostazioni.

IndirizzoNome fileDimensione (MB)
0x00000boot_v1.6.bin0.5
0x01000user1.bin0.4
0x7C000esp_init_data_default.bin0.1
0x7E000blank.bin0.1

Rx FTDI è collegato a Tx del DT-06 e Tx a Rx, e ho aggiunto tutta la tabella degli indirizzi perché ho due dispositivi, e uno necessita della seconda configurazione e l’altro della terza. Quindi, se hai qualche problema dopo il flashing del dispositivo, riprova con una configurazione di indirizzi diversa.

  1. Ora avvia il Flash Download Tool e apri il file del firmware; l’indirizzo di scrittura iniziale è 0x0.
  1. Metti il DT-06 in modalità download seguendo questi passi:
    • Tieni premuto il pulsante Boot;
    • Premi e rilascia il pulsante Reset;
    • Rilascia il pulsante Boot.
  2. Clicca su CANCELLA.
  3. Clicca sul pulsante di avvio.
  4. Riavvia il dispositivo.

Configurazione ESP-LINK

Configurare il firmware ESP-Link sul modulo ESP8266 è un processo semplice, ma per chi non è esperto, può sembrare scoraggiante. Il firmware fornisce un’interfaccia utente amichevole per configurare l’ESP8266, trasformandolo in un versatile ponte WiFi. La seguente guida passo-passo, accompagnata da screenshot per ogni fase, mira a semplificare questo processo, garantendo una configurazione fluida e priva di errori per utenti di tutti i livelli di esperienza.

Connessione alla rete ESP

In questo screenshot, puoi vedere un elenco di reti WiFi disponibili su un dispositivo. È evidenziata in modo prominente la rete ESP_XXXXXX. Questo rappresenta la modalità Access Point (AP) dell’ESP8266, che diventa attiva dopo l’installazione del firmware esp-link. Si consiglia all’utente di selezionare questa specifica rete per avviare il processo di configurazione.

Pagina principale ESP-Link

Accedendo all’IP 192.168.4.1, lo screenshot mostra l’interfaccia principale della pagina esp-link. La parte centrale dello schermo mostra lo stato attuale del WiFi. In alto, c’è un messaggio evidente che indica che il dispositivo non può eseguire la scansione mentre è in modalità AP. Questo messaggio serve come promemoria della modalità operativa corrente del dispositivo.

Passaggio alle impostazioni della stazione WiFi

Questo screenshot mostra la pagina principale di esp-link ma con un menu laterale sinistro espanso. Tra le varie opzioni, il link Stazione WiFi è evidenziato, indicando che l’utente ha cliccato o sta per cliccare su di esso per accedere alle impostazioni della stazione WiFi.

Passaggio alla modalità STA+AP

Il focus di questo screenshot è l’interfaccia di configurazione della Stazione WiFi. È visualizzato un link prominente etichettato Passa alla modalità STA+AP. Questa opzione consente agli utenti di abilitare contemporaneamente le modalità Stazione (STA) e Access Point (AP). Viene chiesto all’utente di cliccare su questo link per procedere.

Selezione di una rete WiFi

In questa fase, lo screenshot rivela un elenco di reti WiFi disponibili all’interno dello schermo di configurazione della Stazione WiFi. Gli utenti sono guidati a selezionare la loro rete preferita da questo elenco. Accanto a ogni nome della rete c’è un campo per inserire la password della rete. Dopo aver inserito la password, c’è un pulsante connetti per stabilire la connessione.

Ritorno alla pagina principale con IP DHCP

Dopo essersi connessi a una rete WiFi, lo screenshot riporta l’utente alla pagina principale di esp-link all’IP 192.168.4.1. La modalità AP rimane attiva, ma ora c’è un’informazione aggiuntiva: l’indirizzo IP assegnato dal server DHCP. Questo IP è cruciale per i passaggi successivi.

Schermata della Stazione WiFi con indicazioni per la connessione

Questo screenshot della schermata della Stazione WiFi fornisce agli utenti istruzioni chiare. Un messaggio informa gli utenti che, se il loro dispositivo è sulla stessa rete, dovrebbero navigare direttamente all’indirizzo IP fornito dal DHCP. In caso contrario, il primo passo è connettersi alla rete con l’SSID specificato.

Impostazione di un IP statico

L’ultimo screenshot guida gli utenti sull’impostazione di un IP statico per il loro dispositivo. Dopo essersi connessi tramite l’IP assegnato dal DHCP e aver acceduto alle impostazioni della stazione WiFi, gli utenti possono scorrere verso il basso per trovare un’opzione per impostare un IP statico. Questa funzionalità garantisce che il dispositivo avrà sempre lo stesso indirizzo IP, rendendo più facile la connessione in futuro.

Assegnazione dei pin

Ora, la configurazione più importante è dire al firmware di gestire il quinto pin come pin di reset necessario per programmare da remoto i dispositivi. Come puoi vedere nel pinout, l’unico pin che puoi utilizzare è GPIO4.

Collegamento di Arduino per la programmazione remota

Come specificato, rispetto al debug, abbiamo bisogno di un pin aggiuntivo per la programmazione, e deve essere collegato al pin di Reset di Arduino UNO.

Ricorda che Arduino ha una logica a 5v e DT-06 a 3.3v, quindi per una comunicazione di lunga durata, è preferibile aggiungere un convertitore di livello logico. Se ricordi, nel Debug, hai bisogno solo di un divisore di tensione da Tx a Rx, ma qui hai anche il Reset.

Creazione di una porta COM virtuale

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

Uno dei programmi più utilizzati è “HW VSP3 – Virtual Serial Port”, puoi scaricarlo da questa pagina, scarica la versione singola perché quella multi è un prodotto a pagamento.

Dopo averlo scaricato, installalo.

Clicca sul pulsante Login e scrivi admin come password.

È necessario recuperare tutti i parametri dall’interfaccia web ESP-LINK.

Nella scheda Porta Seriale Virtuale, scegli il numero della porta COM e inserisci l’indirizzo IP e la porta 23. Dopo ciò, clicca sul pulsante Crea COM.

Attendi un momento; se tutto è a posto, nel Gestione Dispositivi puoi trovare la tua nuova Porta.

Debug e caricamento del codice

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

Ora possiamo provare a caricare, e infine, ecco il risultato.

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\renzo\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM25
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.21s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\renzo\AppData\Local\Temp\arduino\sketches\B3D8EDADAC2319C86E5C9AEF5B5AB344/sketch_oct2a.ino.hex"
avrdude: writing flash (2052 bytes):

Writing | ################################################## | 100% 7.80s

avrdude: 2052 bytes of flash written

avrdude done.  Thank you.


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

Lascia un commento

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