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.
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
- 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.
- Scarica il Flash Download Tool da Espressif.
- 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.
Indirizzo | Nome file | Dimensione (MB) |
---|---|---|
0x00000 | boot_v1.6.bin | 0.5 |
0x01000 | user1.bin | 3.5 |
0x3FC000 | esp_init_data_default.bin | 0.1 |
0x3FE000 | blank.bin | 0.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.
Indirizzo | Nome file | Dimensione (MB) |
---|---|---|
0x00000 | boot_v1.6.bin | 0.5 |
0x01000 | user1.bin | 1.8 |
0x1FC000 | esp_init_data_default.bin | 0.1 |
0x1FE000 | blank.bin | 0.1 |
Indirizzi della memoria flash da 8mbit (1MB)
ESP-01S e le principali versioni del DT-06 utilizzano queste impostazioni.
Indirizzo | Nome file | Dimensione (MB) |
---|---|---|
0x00000 | boot_v1.6.bin | 0.5 |
0x01000 | user1.bin | 0.9 |
0xFC000 | esp_init_data_default.bin | 0.1 |
0xFE000 | blank.bin | 0.1 |
Indirizzi della memoria flash da 4mbit (512Kb)
Il DT-06 originale, ESP-01 e altri piccoli dispositivi necessitano di queste impostazioni.
Indirizzo | Nome file | Dimensione (MB) |
---|---|---|
0x00000 | boot_v1.6.bin | 0.5 |
0x01000 | user1.bin | 0.4 |
0x7C000 | esp_init_data_default.bin | 0.1 |
0x7E000 | blank.bin | 0.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.
- Ora avvia il Flash Download Tool e apri il file del firmware; l’indirizzo di scrittura iniziale è
0x0
.
- 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.
- Clicca su CANCELLA.
- Clicca sul pulsante di avvio.
- 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
- Arduino Programmazione remota/wireless
- BMP280, DHT11 and DHT22, DHT12, Dallas Temperature ds18b20, Thermistor
- Scheda di programmazione ATtiny (ArduinoUNO come ISP)
- Inviare email con esp8266 e Arduino (Libreria v1.x)
- Come usare la scheda SD con esp8266 e Arduino
- Ebyte LoRa E32 per Arduino, esp32 o esp8266 : WOR (wake on radio) del microcontrollore e uno shield per Arduino
- Gestire file JSON con Arduino, esp32 ed esp8266
- Come interfacciare Arduino, esp8266 o esp32 alla seriale RS-485
- Inviare email con allegati (libreria v2.x): Arduino Ethernet
- WebSocket
- Arduino AVR: binario compilato (.hex) da riga di comando o strumenti grafici
- Arduino: memoria SPI flash esterna veloce
- Accelerometro GY-291 ADXL345 i2c spi con interrupt per esp32, esp8266, stm32 e Arduino
- i2c Arduino: come creare una rete, parametri e scanner di indirizzi
- Magnetometro GY-273 QMC5883L clone HMC5883L per Arduino, esp8266 e esp32
- Debug remoto via WiFi di un Arduino con DT-06
- Programmare Arduino UNO da remoto via WiFi con il firmware ESP-Link su DT-06
- Introduzione alla Programmazione Remota dell’Arduino UNO r3 tramite WiFi con l’ESP8266