ESP-01 con ESP-LINK come programmatore Wi-Fi remoto (OTA)
Questa guida nasce dall’esigenza di programmare l’Arduino in Wi-Fi (Over The Air) utilizzando l’Arduino IDE ed un modulo ESP-01.
Auto Amazon Links: Auto Amazon Links The Associate tag is not set. Please check your unit settings.
Auto Amazon Links: Nessun prodotto trovato.
Questo articolo contiene esempi solo per Windows, poiché gli utenti Linux hanno buoni esempi e documentazione nativi.
1. Collegare il modulo ESP module al convertitore USB-UART
Prima di tutto abbiamo bisogno della scheda ESP8266, io ho provato con un ESP-01 che è il più economico, con 8Mb (1MB) e un convertitore USB-UART (CH340). L’USB-UART deve funzionare a 3.3V!
Normalmente l’USB-UART ha un’alimentazione a 3,3 V a bassissima corrente. Quindi abbiamo bisogno di un alimentatore da 3,3 V o di un regolatore di tensione a 3,3 V. Si può usare un LM1117-33, da 0,5 A che è più che sufficiente.
ESP-01 pins
Collegare l’ESP all’UART
Se non ha RTS e DTR potete continuare utilizzando uno switch per effettuare il reset in manuale.
Basta collegare GPIO0 a GND e RST (EXT_RSBT) allo switch connesso a GND oppure come da schema seguente, con resistori da 10K.
Quindi accendere l’ESP. Questo dovrebbe accendere il LED rosso e potrebbe iniziare a lampeggiare anche il LED blu, che dipende dal firmware corrente presente all’interno dell’ESP.
Proviamo a flashare il nuovo firmware.
2. Preparazione per flashare ESP-LINK
Il firmware è possibile scaricarlo dai seguenti link ESP-LINK v.3 (o qui v.3 o qui v.2).
Possiamo flashare il firmware con il tool ESP8266Flasher (o qui).
Scaricare il tool, avviarlo, settare la porta COM del convertitore USB-UART e selezionare i 4 file e gli indirizzi da Flashare:
Gli indirizzi dell’ESP8266 dipendono dalla board e quindi dalla grandezza della memoria interna.
Guarda un approfondimento su https://github.com/jeelabs/esp-link/blob/master/FLASHING.md
32Mbit / 4Mbyte module
0x00000 boot_v1.6.bin
0x1000 user1.bin
0x3FC000 esp_init_data_default.bin
0x3FE000 blank.bin
4Mbit / 512Kbyte module
0x00000 boot_v1.6.bin
0x1000 user1.bin
0x7C000 esp_init_data_default.bin
0x7E000 blank.bin
For 8Mbit / 1MByte module
0x00000 boot_v1.6.bin
0x1000 user1.bin
0xFC000 esp_init_data_default.bin
0xFE000 blank.bin
Premere il tasto Flash e fare un reset manuale se si usa lo switch di reset.
Dopo il corretto flash del nuovo firmware, provare a cercare una rete Wi-Fi simile a ESP_0E4E5E e collegarsi.
Auto Amazon Links: Auto Amazon Links The Associate tag is not set. Please check your unit settings.
Auto Amazon Links: Nessun prodotto trovato.
3. Collegare il modulo ESP-01 e Arduino
Dopo essersi collegarti alla rete Wi-Fi sopra mensionata, andare su http://192.168.4.1/
Adesso è possibile scegliere se connettere l’ESP-LINK alla propria rete Wi-Fi o utilizzare l’ESP come punto di accesso (AP).
Nella home page impostare la scheda ESP utilizzata in modo da assegnare i corretti pin e premere “Change!”
In realtà dobbiamo collegare solo pochi pin:
ESP Arduino
RX – TX
TX – RX
GPIO0 – Reset
GND. – GND
Ma quando Arduino funziona con livelli a 5 V, ti consiglio di utilizzare il partitore di tensione sul pin ESP RX (vedi filo blu).
È possibile utilizzare resistori da 2-50K Ohm su entrambi i lati. La resistenza deve essere circa uguale su entrambi i lati per una divisione a metà della tensione, 5 V / 2 = 2,5 V che è intorno a 3V 🙂 ed è il livello alto per l’ESP.
Inoltre collegare la resistenza pullup (10K Ohm) al pin di reset di Arduino e + 3.3V. Questo impedisce i 5V accidentali al pin ESP GPOI0.
Ora dobbiamo aggiungere un programmatore personalizzato all’IDE di Arduino
Aprire c:\Program Files (x86)\Arduino\hardware\arduino\avr\programmers.txt e aggiungere la seguente parte:
Modificare il file di hosts nel sistema per risolvere il nome “ESP-01-LINK” con l’indirizzo IP del vostro ESP-LINK
C:\Windows\System32\drivers\etc\hosts
192.168.0.100 ESP-01-LINK
Andare su ESP-LINK tramite il browser web. Andare sulla pagina della Console del uC e settare il Baudrate a 115200 o la velocità che hai impostato nella configurazione del bootloader.
Riavvia l’IDE Arduino, scegli il tuo programmatore personalizzato ESP-Link dal menu Strumenti -> Programmatore
Prova a caricare lo sketch usando il programmatore. L’uso di UART tramite Wi-Fi non è una buona idea, è possibile abilitare il debug del caricamento IDE di Arduino nelle impostazioni di Arduino.
E’ una pessima idea usare la console seriale nei tuoi sketch con il Wi-Fi. Ritardi e bit che arrivano dopo che Arduino si è effettivamente resettato creano problemi con il flash degli sketch .
Ma ESP-LINK ha delle misure per trattare questi problemi.
4. ESP-LINK e programmatore “Curl”
Siamo in grado di caricare il nostro sketch tramite HTTP ed effettuare semplicemente una richiesta POST per resettare il nostro Arduino.
Il pacchetto ESP-LINK ha un buon script shell per Linux. Guardando dentro questo script, ho scritto una versione molto più semplice per Windows.
Prima di tutto installa Curl per Windows
Estrai e metti le directory nella directory di WinAVR, questo evita semplicemente di aggiungere PATH a una nuova directory ed infine riavvia.
Prova questo comando dalla command shell.
curl -v
Crea il file avrflash.cmd, per esempio in c:\Program Files (x86)\Arduino\hardware\arduino\avr\
@echo off
curl -m 10 -s -XPOST http://esp-01-link/pgm/sync
sleep 1
curl -m 10 -s http://esp-01-link/pgm/sync
echo.
curl -m 10 -s -g -d “@%*” “http://esp-01-link/pgm/upload”
Quindi aggiungi a c:\Program Files (x86)\Arduino\hardware\arduino\avr\platforms.txt il seguente listato:
######################
# ESP-LINK
tools.esplink.path={runtime.tools.avrdude.path}
tools.esplink.cmd.path={path}/bin/avrdude
tools.esplink.config.path={path}/etc/avrdude.conf
tools.esplink.upload.params.verbose=-v
tools.esplink.upload.params.quiet=-q -q
# tools.esplink.upload.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value
tools.esplink.upload.verify=
tools.esplink.upload.params.noverify=-V
tools.esplink.upload.pattern=”c:\Program Files (x86)\Arduino\hardware\arduino\avr\avrflash.cmd” {build.path}/{build.project_name}.hex
tools.esplink.program.params.verbose=-v
tools.esplink.program.params.quiet=-q -q
# tools.esplink.program.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value
tools.esplink.program.verify=
tools.esplink.program.params.noverify=-V
tools.esplink.program.pattern=”{cmd.path}” “-C{config.path}” {program.verbose} {program.verify} -p{build.mcu} -c{protocol} {program.extra_params} “-Uflash:w:{build.path}/{build.project_name}.hex:i”
tools.esplink.erase.params.verbose=-v
tools.esplink.erase.params.quiet=-q -q
tools.esplink.erase.pattern=”{cmd.path}” “-C{config.path}” {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.esplink.bootloader.params.verbose=-v
tools.esplink.bootloader.params.quiet=-q -q
tools.esplink.bootloader.pattern=”{cmd.path}” “-C{config.path}” {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} “-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i” -Ulock:w:{bootloader.lock_bits}:m
Inoltre puoi eseguire il debug della tua scheda aprendo telnet su esp-01-link sulla porta 23 o 2323.
telnet esp-01-link
oppure usa Putty o un altro terminale Telnet.
Auto Amazon Links: Auto Amazon Links The Associate tag is not set. Please check your unit settings.
Auto Amazon Links: Nessun prodotto trovato.
Grazie.
Salve e buonasera, non ho capito una cosa, nel caso in cui volessi alimentare il mio sistema da banco, alla voce porta seriale non mi ritrovo più nulla. non mi è chiara questa cosa della porta seriale. Potete aiutarmi grazie in anticipo.