Sei sulla pagina 1di 14

25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

heron's blog
a bunch of random stuff.

Android
Elettronica
Guide
Linux
Progetti
Recensioni
Stampa 3D

Git Twitter RSS


Offrimi un caffè

29 gennaio 2016
elettronica, guide
esp8266, esp-01, arduino, howto, iot
0 commenti

Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2


È da un po’ che gioco con questi modulini. Annoto di seguito le info che ho raccolto su di essi, necessarie per il loro utilizzo e la loro
programmazione.

Cosa sono i moduli ESP8266?


Si tratta di modulini operanti a 3.3V che includono i SOC ESP8266 della cinese Espressif. Questi si distinguono per la connettività WiFi,
le ridottissime dimensioni e il prezzo contenuto.

Il firmware di fabbrica permette di interfacciarsi tramite comandi AT su seriale, rendendolo un comodo modem per Arduino.

Inoltre la community ha sviluppato dei firmware che permettono di riprogrammarlo in LUA o con l’Arduino IDE. L’ESP8266 ha infatti
abbastanza potenza di calcolo e memoria da poter eseguire sketch senza microcontrollori esterni. La compatibilità con l’Arduino IDE,
inoltre, permette di sfruttare (almeno in parte) l’ampio bagaglio di librerie che ha reso popolari e accessibili i devices Arduino, che può
essere usato per interfacciare questo chip a sensori e attuatori in poche righe di codice. In pratica l’ESP8266 può fungere da Arduino.

La famiglia di moduli ESP8266

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 1/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

I moduli più comuni

Vi sono un’infinità di moduli, dall’ESP-01, che mette a disposizione solo 4 pin digitali (comprese le porte seriali Tx e Rx), all’ESP-12f,
con i suoi 11 pin digitali e 1 pin analogico.

A questi si aggiungono le board che espandono i sopra citati moduli con porte USB, regolatori di tensione, logic lever shifter a 5V e altre
amenità del genere.

Personalmente ho optato per il più comune ed economico ESP-01, attualmente acquistabile anche a meno di €1,70 su AliExpress. D’ora in
poi prenderò come riferimento l’ESP-01, ma quanto scriverò può essere adattato a tutti i moduli basati su ESP8266.

I pin dell’ESP-01
Prima di procedere oltre è bene avere chiare la disposizione dei pin e le loro funzioni.

ESP-01 pinout

PIN Funzioni
GPIO_0 D0
TXD D1, TX
GPIO_2 D2,
RXD D3, RX

Funzionalità dei pin dell’ESP-01

Nella tabella D0, D1, etc stanno per “Digital Pin 0”, “Digital Pin 1”, etc. Nell’Arduino IDE sono chiamati semplicemente 0, 1, etc. Il pin
analogico ADC, non presente su ESP-01, è chiamato A0 nell’Arduino IDE.

VCC va collegato al polo positivo dell’alimentazione (3.3V) mentre GND a massa, CH_PD ai 3.3V e RST è il pin di reset e riavvia il chip se
collegato a GND.

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 2/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

Alimentazione e collegamento seriale


I moduli ESP-01 operano a 3.3V.

Importante

Voltaggi superiori potrebbero danneggiare il chip che, a differenza dei devices Arduino, non dispone di protezioni on board.

Questo non è vero per alcune board basate sui moduli ESP8266, a seconda di quanto indicato dal produttore.

Questo ha come conseguenza che non è possibile operare un collegamento seriale diretto (tramite i pin RXD -> TX e TXD -> RX) con i
devices operanti a 5V (come l’Arduino Uno e Mega).

È comunque possibile operare tale collegamento se mediato da un convertitore logico bidirezionale, come mostrato in figura. Su
AliExpress il costo è inferiore a €1.

Collegamento seriale con Arduino

Un debugger seriale

Probabilmente il modo migliore di avere alimentazione e collegamento seriale con un PC, è attraverso un debugger seriale che operi anche
a 3.3V.

L’ESP8266 normalmente assorbe intorno ai 50 mA, ma può arrivare anche a superare i 200 mA (che è il massimo erogabile dai pin VCC
dell’Arduino).

Suggerimento

È consigliabile non alimentarlo con il pin 3.3V dell’Arduino se non si vogliono rischiare sporadici riavvii.

Un modo economico di alimentare l’ESP-8266 in standalone è quello di riciclare un vecchio alimentatore USB per cellulare (tagliando il
connettore terminale) e mediare il collegamento dai 5V dell’alimentatore al pin VCC con un regolatore di tensione da 3.3V.

Boot modes
I moduli basati su ESP8266 possono essere avviati in 2 modalità (funzionanti):

UART o Bootloading: permette di caricare firmware e sketch


FLASH o Usage: il chip esegue lo sketch o, nel caso del firmware di fabbrica, si comporta da modem WiFi controllabile tramite
comandi AT

A queste si aggiunge la modalità SDIO, che però è non funzionante con i firmware disponibili. Una volta fornita alimentazione
all’ESP8266, questo si avvierà in una delle precedenti modalità a seconda di come si sono collegati GPIO_0 e GPIO_2, come mostrato nella
tabella di seguito, dove HIGH corrisponde al logic high (3.3V), LOW al logic low (massa) e FLOAT significa non collegato (o collegato ad un
circuito in cui non passa corrente). È consigliabile mediare questi collegamenti con resistenze da 10 kΩ.

Modalità GPIO_0 GPIO_2 GPIO_15


Bootloading LOW FLOAT o HIGH LOW
Usage HIGH FLOAT o HIGH LOW
https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 3/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

Modalità GPIO_0 GPIO_2 GPIO_15


SDIO FLOAT FLOAT HIGH

Boot modes e pin

È importante notare che ciò limita in parte le possibilità di utilizzo dell’ESP8266, in quanto non potremo collegare GPIO_0 e GPIO_2 a
dispositivi che normalmente restituiscono un valore LOW (e nel caso di GPIO_0 anche circuiti/dispositivi normalmente aperti) e GPIO_15 (non
presente su ESP-01) a dispositivi normalmente HIGH, altrimenti in caso di avvio (o riavvio) l’ESP8266 passa in una modalità diversa da
Usage. In alcuni casi basta riconfigurare il circuito (ad esempio sostituire un pulsante pullup con uno pulldown), in altri casi occorre
necessariamente cambiare pin.

Caricare il firmware
Il firmware di fabbrica permette permette di comunicare via seriale tramite comandi AT. Sebbene tale possibilità può risultare comoda se si
vuole aggiungere la connettività WiFi ad un progetto Arduino già completo, personalmente ho trovato questa modalità piuttosto frustrante
a causa delle variazioni nei comandi con gli aggiornamenti dei firmware e a causa del fatto che difficilmente si può ottenere più di una
richiesta GET (che è tutto ciò che serve se si vuole comunicare con ThingSpeak).

Il firmware NodeMCU invece incrementa drammaticamente le possibilità dell’ESP8266. In particolare permette, come già accennato, di
programmare il chip con Arduino IDE, trasformandolo in una valida alternativa ad Arduino.

Riporto la procedura per installare il firmware su Linux. Assumo che la comunicazione con il PC sia mediata con un debugger seriale
USB.

Per prima cosa collegare l’ESP8266 al debugger in modalità Bootloading e collegare il debugger ad una porta USB del PC.

Collegamento al debugger in modalità Bootloading

Scaricare l’ultima versione stabile de firmware NodeCMU:

wget https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.5_20150318/nodemcu_float_0.9.5_20150318.bin

Nota

Esistono build più nuove del firmware, ma la versione 0.9.5 è l’ultima versione stabile ed è anche l’ultima a supportare i vecchi batch di
ESP8266 con 512KB di memoria. I moduli più recenti ne presentano 1024KB e sono compatibili anche con le versioni ≥0.9.6

Scaricare il programma per eseguire il flash:


git clone https://github.com/themadinventor/esptool.git

Scrivere il firmware sul modulo:

cd esptool
sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 ../nodemcu_float_0.9.5_20150318.bin

Il programma dovrebbe restituire un output simile a questo:


Connecting...
Erasing flash...

Writing at 0x00000000... (0 %)

Se così non dovesse essere, verificare i collegamenti e riprovare.

Configurare Arduino IDE


Nota

Nel momento in cui scrivo questo articolo solo la versione 1.6.5 di Arduino IDE è considerata compatibile. Questo potrebbe cambiare col
tempo.

Scaricare e installare la versione 1.6.5 di Arduino IDE dal (vero) sito ufficiale Arduino.cc.

Avviare Arduino IDE ed aprire “File” > “Impostazioni” ed inserire http://arduino.esp8266.com/stable/package_esp8266com_index.json in


“Additional Boards Manager URLs”:

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 4/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

Additional Boards Manager URLs

Aprire “Strumenti” > “Scheda” > “Boards Manager” ed installare “esp8266 by ESP8266 Community”:

Boards
Manager

Caricare il primo sketch


Collegare l’ESP8266 al debugger in modalità Bootloading e collegare il debugger ad una porta USB del PC. Ora siamo pronti per caricare
il primo sketch.

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 5/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog
Aprire “File” > “Esempi” > “01.Basics” > “Blink”. All’interno dello sketch sostituire modificare la riga 20
pinMode(13, OUTPUT);

in

pinMode(1, OUTPUT);

Quindi selezionare “Strumenti” > “Scheda” > “Generic ESP8266 Module” e “Strumenti” > “Porta” > “USB0” (che portrebbe avere un
nome diverso). Infine cliccare su Carica.

Se si avvia l’ESP8266 in Usage mode, è possibile notare che il led (blu) si accende e spegne ad intervalli regolari di 1 secondo.

Collegamento al debugger in modalità Usage

Migliorare la stabilità
I collegamenti mostrati fin’ora possono andar bene durante la fase di testing, ma nel finalizzare il progetto (magari su PCB) è opportuno
adottare configurazioni atte a migliorare la stabilità del chip. Riporto di seguito lo schema base raccomandato.

Schema base ESP-01

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 6/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

Schema base per gli alti


moduli

Commenti

Commenti Comunità 🔒 normativa sulla privacy Accedi


1

 Consiglia 2 t Tweet f Condividi Ordina dal migliore

Partecipa alla discussione...

ENTRA CON

O REGISTRATI SU DISQUS ?

Nome

Mario Buccoliero • 6 mesi fa


Buongiorno a tutti,
avrei un quesito che, navigando sul web, non sono riuscito a
soddisfare.
Ho messo a punto ( ma non ottimizzato) un semplice circuito
con Arduino uno per la lettura di alcune variabili tramite sensori
(temperatura, umidità, livello acqua) e l'azionamento di una
pompa per irrigare tramite relé, adesso però mi piacerebbe
inviare e ricevere con arduino parte di queste letture. Ho letto
che l' ESP8266 0-01 è praticamente un'interfaccia wi-fi adatta
a questo ma non ho trovato nessun esempio pratico sul come
inserire le variabili all'interno dello sketch. E possibile? Avete
qualche dritta da darmi?
Grazie in anticipo
△ ▽ • Rispondi • Condividi ›

Silvia Sanna • 2 anni fa


Salve, io ho un esp8266 e qualunque programma faccia partire
ho sempre questi errori: warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

i l ?
https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 7/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog
come posos risolvere?
△ ▽ • Rispondi • Condividi ›

Antonio Sainato > Silvia Sanna • un anno fa


Ho avuto lo stesso problema con un tipo di interfaccia
USB, poi ho usato questa; https://it.aliexpress.com/i...,
ed ha funzionato
△ ▽ • Rispondi • Condividi ›

Federico > Silvia Sanna • un anno fa


controlla di avere i permessi sulla porta usb
△ ▽ • Rispondi • Condividi ›

Francesco Pellegrino • 3 anni fa


salve ho un problema, ho programmato l'esp-01 con codice
blynk collegandolo alla mia wifi. ora mi succede una cosa se
avvio l'esp-01 non collegando niente all'uscita gpio0 si avvia e
blynk lo vede, dopo l'avvio collego gpio0 al pin del mio rele e
tutto funziona alla grande..... cosa diversa se do corrente con
gpio0 collegato al pin in del rele, il tutto non funziona..... blynk
lo vede disconnesso.... come potrei ovviare a tutto cio...
△ ▽ • Rispondi • Condividi ›

Augusto Ciuffoletti • 3 anni fa


Ok, funziona! Bravo per aver puntualizzato le differenze di
alimentazione e pilotaggio. Lo fanno in pochi, e ci sono anche
quelli che dicono che non è poi così importante :-/

Ho usato un USB-TTL/USB-STC-ISP da pochi euro come


quello che hai indicato tu (comprato su Amazon), ancora
seguendo le tue indicazioni ho usato il "gestore" ESP8266 (in
versione 2.3.0) della IDE Arduino 1.6.11 indicando come
programmer AVR ISP, e mi sono fatto costruire il firmware da
https://nodemcu-build.com/ (strepitoso...), l'ho caricato con il
software esptool.py scaricato come da tue indicazioni. Il blink
funziona subito, senza necessità di riavviare l'ESP.
Scollegando l'alimentazione e riavviando bisogna mettere in
Usage.

Grazie!
△ ▽ • Rispondi • Condividi ›

Augusto Ciuffoletti > Augusto Ciuffoletti • 3 anni fa


Ho proseguito con le mie sperimentazioni, ma con una
alimentazione come quella che suggerisci non si riesce
a far funzionare l'interfaccia WiFi dell'ESP-01. Dopo vari
insuccessi ho letto sulla documentazione che l'ESP-01
assorbe sino a 300mA di picco: troppi per il mio
adattatore, o per la USB del mio PC.

Quindi mi sono progettato e costruito una scheda di


sviluppo molto semplice ma funzionale: alimentazione
indipendente, un connettore per l'ESP-01, uno per
l'adattatore, un pulsante di reset, uno switch
(rudimentale) ⛺ Vedi — uploads.disquscdn.com per passare
da "bootload" a "usage", connettori per "portare fuori"
alimentazione e pin D0-3. Chi è interessato e sa usare
un saldatore può farsene una uguale, o anche migliore.
Ho messo il progetto fatto con Fritzing su github:
https://github.com/AugustoC.... C'è anche uno sketch
facile-facile per l'ESP-01: carica temperatura/umidità
misurati da un DHT11 su ThingSpeak. Sempre su
github: https://github.com/AugustoC....

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 8/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

Comunque grazie per la tua guida: mi ha dato un chiaro


punto di partenza.
△ ▽ • Rispondi • Condividi ›

heron autore > Augusto Ciuffoletti • 3 anni fa

comunque, di regola, le porte USB di un PC


(Raspberry Pi compreso) dovrebbero poter
erogare fino a 500mA.

anch'io avevo progettato una board del genere


(per switchare) da bootloading a usage, ma poi
non l'ho incisa più.
https://git.h3ron.com/heron...
△ ▽ • Rispondi • Condividi ›

Augusto Ciuffoletti > heron • 3 anni fa


Mmmh, provato, ma non bastava. La
USB dovrebbe poter fornire la corrente
sufficiente, ma a 5V. Poi c'è il regolatore
nell'adattatore che non ce la fa...
Comunque ho provato ad usare anche i
5V della USB del mio portatile e
stabilizzarla con LM317T, e non va: al
momento di trasmettere parte il reset: rst
cause:4, boot mode:(3,7). Il prototipo che
ho realizzato non è proprio ottimizzato,
sulla basetta, ma funziona bene: una
notte di funzionamento continuato
caricando su thingspeak ogni 30 secondi.
Penso che ci metterò un jack per
collegare un alimentatore esterno...
△ ▽ • Rispondi • Condividi ›

Costantino > Augusto Ciuffoletti


• 3 anni fa
Ho avuto lo stesso problema e ho risolto
alimentando l'ESP 12E con 3,7 volt
anziché 3.3.
Questo per il funzionamento normale,
mentre per la programmazione 3.3
bastano, è molto strano vero?
△ ▽ • Rispondi • Condividi ›

Augusto Ciuffoletti > Costantino


• 3 anni fa
Le condizioni operative (documentate)
per l'esp-01 vanno da 3.0V a 3.65V.
Quindi quello che dici non è strano. In
effetti l'intensità di corrente per la
programmazione è relativamente bassa,
e ci si riesce anche con i 3.3V
dell'adattatore, mentre in trasmissione si
raggiungono picchi di mezzo Ampère. Se
qualche stadio nell'alimentazione
(trasformatore, pile, stabilizzatore ecc.)
non ce la fa, parte il reset. Probabilmente
la tua alimentazione a 3.7 serviva ad
"assorbire l'impatto" al momento della
trasmissione. Io credo di aver visto il mio
trasmettere correttamente (a pile con lo
stabilizzatore) a tensioni di 2V: pile
scariche. Probabilmente anche solo un
salto di tensione può innescare il reset,
https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 9/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

forse.
△ ▽ • Rispondi • Condividi ›

Matteo Toma • 3 anni fa


GRAZIE MILLE GUIDA PERFETTA!
△ ▽ • Rispondi • Condividi ›

dataino.it • 3 anni fa
Ciao, il mio espresso lite 1.0 che monta un ESP-WROOM-02
durante un caricamento ha cioccato ed ora non riesco piu a
programmarlo con l'ide di arduino

warning: espcomm_sync failed


error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

posso usare la stessa procedura per tentare di ricaricre il


firmware ?

se si che firmware installo ?

⛺ Vedi — uploads.disquscdn.com
△ ▽ • Rispondi • Condividi ›

Mauro • 3 anni fa
Ciao, l'articolo è molto interessante.
Ma io mi fermo molto prima. Ho acquistato due ESp2866 12-E
(scheda di svluppo) con già precaricato il formware nodemcu
V3.
A bordo hanno convertitore seriale CH340G, e ho installato sul
pc gli appositi driver scaricati da sito del produttore.
Però, quando collego l'USB:
Il primo modulo, lampeggia velocemente una volta un led blu
vicino al chip wi-fi, e poi non ci sono altri segni di vita
il secondo modulo non dà alcun segno, solo scalda moltissimo
La m ia intenzione è utilizzarli in modo autonomo, non esiste
una guida che parta dai primi passi (come collegarle al pc,
come inserire un programma, qualche tutorial)? In rtete è tutto
molto confuso per me. non c'è una specie di corso o un libro?
△ ▽ • Rispondi • Condividi ›

Sebastiano Trunfio • 3 anni fa


Ciao, ho notato che sei davvero bravo con questo progetto.
Ora ti vorrei chiedere aiuto riguardo un progetto che avrei
intenzione di creare, ma non ho conoscenze riguardo Arduino,
perché ho trafficato per un pò di tempo con il raspberry pi. Il
mio progetto ha con obiettivo la costruzione di un piccolo
circuito che integri sensore di umidità e temperatura, tutto ciò
unito ad un piccolo display che mostri queste due informazioni
insieme alla data. Naturalmente, vorrei collegare tutto questo
ad un piccolo server (raspberry o Arduino vanno bene tutti e
due) che registrando i dati ogni ora, fornisca un grafico con
temperatura e umidità media, oppure direttamente temperatura
e umidità media senza grafico. Potrebbe essere fattibile come
progetto senza spendere un capitale? Grazie in anticipo.
△ ▽ • Rispondi • Condividi ›

heron autore > Sebastiano Trunfio • 3 anni fa • edited

Credo che dovrebbe essere possibile collegare i


sensori direttamente ai pin del Raspberry. Ma non ho
esperienze al riguardo.

Personalmente avendo giocato molto più con Arduino


https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 10/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog
Personalmente, avendo giocato molto più con Arduino
che col Raspberry, userei Souliss su una board
ESP8266 come il Wemos D1 Mini. Mi sembra di
ricordare che Souliss sia in grado di registrare il grafico
e di mostrarlo sulla sua App Android anche senza il
Raspberry.
Souliss permette anche di aggiungere più "nodi" ossia
altri dispositivi.

Su un Raspberry (o un più economico Orange Pi), puoi


installare Openhab 1 e il binding con Souliss. Openhab
permette di costruire una pagina con il grafico, che
appare sia su una pagina all'indirizzo dei Raspberry che
sull'app Android/iOS.
1△ ▽ • Rispondi • Condividi ›

Sebastiano Trunfio > heron • 3 anni fa


Sei un genio non c'è niente da fare! Se riesco a
fare tutto questo ti mando il link all'articolo!
Grazie dell'aiuto!
△ ▽ • Rispondi • Condividi ›

Sherlock > Sebastiano Trunfio


• 3 anni fa
Io ho già fatto un progetto simile, ho
usato Wemos Mini con il sensore DHT22
ma senza display mandavo tutto su
smartphone tramite blynk.
1△ ▽ • Rispondi • Condividi ›

Sebastiano Trunfio > Sherlock


• 3 anni fa
Grazie mille! Cercherò di documentarmi
△ ▽ • Rispondi • Condividi ›

jp • 3 anni fa • edited
Salve, mi scuso in anticipo per l'ignoranza che dimostrerò. Ho
da un po' un progetto in mente, purtroppo le mie nozioni di
elettronica sono praticamente nulle. Cionostante traffico con
genuino senza grossi problemi. Vorrei realizzare un sistema
radio per il posizionamento spaziale di alcumi oggetti in
movimento, ma la triangolazione di una fonte radio non è
proprio una passeggiata. Speravo di riuscirci con una scheda
programmabile come questa. In particolare, se il clock interno
ha una definizione abbastanza elevata da gestire delle
frequenze in Ghz, forse basta anche per calcolare lassi di
tempo così brevi come quelli prodotti dall'impatto di un'onda
radio su più antenne riceventi (diciamo tre, volendo
posizionare un oggetto su un piano), sempre che suddetto
clock sia accessibile (diciamo fornendo misure in pico secondi
tipo). Ogni dritta è ben accetta. Grazie.
△ ▽ • Rispondi • Condividi ›

heron autore > jp • 3 anni fa • edited

IN SINTESI: si può fare, ma non come dici tu.

Mi sembra abbastanza difficile da realizzare come cosa


e mi sembra serva hardware dedicato. In teoria dovresti
avere un circuito con un modulo radio ricetrassmittente
al centro con annesso un cronometro. E almeno altri 3
moduli ricetrassmittenti intorno.
In pratica fai partire un segnale da quello al centro e
contemporaneamente fai partire il cronometro. Configuri
gli altri 3 in modo che appena ricevono il segnale, ne
https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 11/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog
g g
emettono subito dopo un altro, ognuno ad una
frequenza diversa. Ogni volta che uno dei tre segnali
viene ricevuto dal modulo centrale, leggi il cronometro.
La distanza da ognuno sarà pari al tempo moltiplicato
per la velocità della luce e diviso per due (perchè
abbiamo misurato andata e ritorno).
Detto così sembra fattibile, ma il cronometro deve
essere in grado di effettuare misurazioni dell'ordine

vedi altro

△ ▽ • Rispondi • Condividi ›

jp > heron • 3 anni fa


Grazie per la gentile risposta. Non so quasi nulla
di elettronica (ho appena iniziato a giocare con
genuino uno e una MKR1000), so poco di
informatica (dopo aver imparato un po' di
objectiveC, ho cominciato a studiare Swift);
questo per dire che cerco di uscire dalla pozza
d'ignoranza in cui sguazzo*.
Ultrasuoni e infrarossi li avevo già scartati per
via degli ostacoli che facilmante li bloccano, sia
all'aperto che al chiuso. Per il medesimo motivo
non posso triangolare un segnale sulla base
della potenza perchè ogni ostacolo falserebbe il
segnale. Pensavo ad una base che emette un
segnale da un'antenna, lo invia all'oggetto da
rilevare, questo lo ripete (magari modificato con
un id) e le tre antenne riceventi della base (a
distanze prefissate) rilevano il nuovo segnale
calcolando il tempo che ha impiegato a tornare
(tipo: "[t-x]/2" dove t=tempo trascorsco tra invio e
ritorno, x=perdite di tempo varie e 2=2 perchè il
segnale fa andata e ritorno). Pensavo di trovare
qualcosa sul mercato o anche qualche tutorial
DIY su una schedina radio e un quarzo che
fornisse valori in picosecondi per ottenere una
precisione al cm. Magari non mi esprimo
correttamente, ma non pensavo fossero proprio
tutte bestialità. Anche se, a onor del vero, devo
dire che in rete non sono riuscito a trovare
ancora una soluzione. Chiaramente non
conosco l'hardware sul mercato. Comunque
grazie. Dimenticavo: un'altra ipotesi a cui avevo
pensato era quella di misurare solo le differenze
di tempo di ricezione delle tre antenne, con un
po' di trigonometria, tangente ortogonale e
semirette che si congiungono, si ottiene la fonte
del segnale, solo in questo caso è necessaria
una precisione ancora maggiore (superiore al
decimo di miliardesimo di secondo credo). Ma
'sta cosa è più complicata da spiegare ci
vorrebbe un disegno e comunque non credo si
possa fare con componenti economici.

*Naturalmente voleva essere autoironico.


1△ ▽ • Rispondi • Condividi ›

heron autore > jp • 3 anni fa


Intanto ti linko la triangolazione radio
"vera" a cui mi riferivo nel commento
precedente: http://www.instructables.co...
Come vedi il 99% del lavoro è costruirsi il
https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 12/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog

cronometro

Comunque, se mi è permesso chiedere,


per cosa ti serve?
Se devi localizzare qualcosa indoor
(parlavi di ostacoli) il WiFi rimane sempre
la soluzione migliore. In questo caso si
tratta sempre di piazzare degli ESP8266
(in AP mode) a caso nell'ambiente e poi
con un ulteriore esp8266 "mappare"
l'edificio, ossia dividi l'edificio in "settori"
ed associ ad ognuno di essi la forza del
segnale delle reti WiFI degli esp8266
piazzati in precedenza (e salvi questi dati
su una SD). Il processo di mappatura va
ripetuto più volte in modo da ottenere
anche i valori di incertezza.

Questo metodo consiste nel creare una


"heatmap" dell'edificio per ogni rete WiFi.
Incrociando più heatmap, in teoria
dovresti riuscire ad ottenere dei risultati
univochi. L'incertezza dipende (anche)
dalla dimensione dei settori (ossia la
risoluzione della heatmap) e da quante
reti piazzi.
1△ ▽ • Rispondi • Condividi ›

jp > heron • 3 anni fa


Ci sono un paio di cose che ho sempre
desiderato realizzare e sempre
posticipato. Adesso che ho più tempo
alle spalle che davanti, finalmente mi
sono deciso. Una di queste cose sono, in
sostanza, dei giocattoli che girano, fuori e
dentro casa, con un certo grado di
autonomia. A essere onesto avevo già
visto il lavoro dei pupilli germanici, solo
speravo di trovare qualcosa di già
preconfezionato, almeno un po' più di
così. Ma va bene, ci sono anche nrf24 e
un'altro chip di cui ora mi sfugge il nome.
Dovrò mettermi a studiare di più. Grazie
ancora per l'aiuto. Un'ultima cosa non mi
è ben chiara: anche una scheda come la
esp avrà una sua frequenza di esercizio,
quindi leggerà l'antenna un numero di
volte al secondo, giusto? Se voglio
leggere con precisione un orologio deve
essere molto elevato il 'clock' della
scheda che riceve e manda il segnale
radio, non in termini di frequenza radio,
non solo insomma. Inoltre trattandosi di
frazioni molto piccole di tempo si fa in
fretta a generare numeri colossali, quindi
dovrei anche avere dei formati numerici
con un sacco di bit.
△ ▽ • Rispondi • Condividi ›

heron autore > jp • 3 anni fa • edited

lleggerà l'antenna un numero di volte


al secondo, giusto?

No il WiFi viene gestito da un piccolo


https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 13/14
25/4/2020 Programmare l'ESP8266: ovvero Arduino con il WiFi a meno di €2 - heron's blog
No, il WiFi viene gestito da un piccolo
chip radio complementare dedicato.

deve essere molto elevato il 'clock'


della scheda

Il clock è solo il numero di cicli del


processore al secondo. Il numero di
operazioni svolte al secondo è un'alltra
cosa. Ad esempio anche nel campo dei
PC ci sono processori a 4GHz che sono
più lenti di processori a 2GHz. Ad ogni
modo è vero che l'esp8266 (80MHz) è
decisamente più potente di un Arduino
(16MHz), ma sono due aggeggi con
architettura completamente diverse Il
vedi altro

△ ▽ • Rispondi • Condividi ›

jp > heron • 3 anni fa • edited


Grazie di nuovo. Chiaro che mi voglio
divertire a costruire e imparare, ma ci
vuole anche qualcosa alla mia portata.
Quindi, in sostanza, la parte della scheda
che riceve il segnale FM è analogica, le
faccio riconoscere il segnale proveniente
dall'emettitore, a questo punto il valore di
un quarzo (o come si chiama) con
precisione estremamente elevata viene
memorizzato in un registro, da dove può
essere facilmente letto da arduino (o
simile) anche con una frequenza più
bassa, tanto il dato rimane corretto, qui
viene elaborato per la triangolazione e il
gioco è fatto! Semplice, no?! In più il
segnale emesso dalla nostra fonte
dovrebbe contenere anche delle
informazioni, tipo un identificativo e forse
anche altro di utile.
△ ▽ • Rispondi • Condividi ›

heron autore > jp • 3 anni fa • edited


Non ti saprei dare una risposta precisa
hé ih i t i i
heron's blog è distribuito con Licenza Creative Commons Attribuzione
Hosted on Atomic Pi - Powered by Hugo - Theme: Greyshade

https://h3ron.com/post/programmare-lesp8266-ovvero-arduino-con-il-wifi-a-meno-di-2/ 14/14

Potrebbero piacerti anche