ESP-01 and arduino nano

Buongiorno, vorrei chiedere un piccolo aiuto..
ho acquistato un modulo ESP8266-01 per collegare ad un arduino nano per avere un collegamento wifi su questo micro.

Ho cercato un sacco su internet e ho scoperto che esiste una montagna di sketch e di firmware per questo modulo molto confusi e molto diversi..
sono riuscito cmq a capire delle cose:
n°1 - il modulo funziona a 3,3v e non 5.
n°2 - il modulo monta un micro processore proprio e quindi bisogna caricare un programma su di esso
n°3 - bisogna programmarlo separatamente
n°4 - può comunicare in seriale.

ora: vorrei collegarlo all'arduino nano, in modo che, ci sia una piccola pagina web dove compaia il valore di due variabili interne del mio programma sull'arduino. Sull'arduino ci sono due collegare due sonde DS1820 in un bus onewire, e un'uscita per un relè. ho creato la pagina web su arduino sempre, e vorrei che il modulo la mandasse online. Non riesco a capire ora come fare a far comunicare il modulo con arduino e che scketch devo uplodare sul modulo.

allego sotto il codice che ho fatto io, ma premetto che è sbagliato in quando non capisco come comunicare col modulo, o magari è corretto ma è errato il circuito di collegamento col il micro.

Chiedo aiutooo!!!

son_2_ver1.ino (6.74 KB)

Ti segnalo che in Megatopic c'è un thread di oltre 190 pagine interamente dedicato al ESP8266.

Nella prima pagina troverai una serie di link a guide e tutorials che quasi sicuramente ti permetteranno di trovare la risposta hai tuoi quesiti :slight_smile:

Guglielmo

l'ho già spulciato, solamente che non riesco a capire come gestire il mio. fanno molti esempi ma non come servirebbe a me. vorrei un aiuto per capire il codice per gestire la comunicazione dei due chip e un aiuto sul corretto collegamento. 190 pagine le ho viste ma sinceramente un topic con 190 pagine è alquanto dispersivo...

chiedo gentilmente se ce qualcuno che può illustrarmi velocemente i comandi corretti per la comunicazione e i due prog che dovrei mettere rispettivamente sul esp e uno sul arduino

grazie mille.

>Ame90: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) per cui, il tuo post duplicato nella sezione Megatopic del forum è stato cancellato.

Ti prego, per il futuro, di evitare di aprire più post sullo stesso argomento in sezioni differenti del forum. Grazie.

Guglielmo

Ho notato, chiedo scusa... forse è meglio se cancello questo topic e lo posto nel Megatopic visto che si parla sempre dello stesso componente.

Posso farlo?

n°1 - il modulo funziona a 3,3v e non 5.

Ma con un adattacoso come questo lo alimenti a 5 e comunichi con normali segnali TTL a 5V (nota: in trasmissione vuole almeno 400mA)

n°2 - il modulo monta un micro processore proprio e quindi bisogna caricare un programma su di esso

Ni, di fabbrica ha un firmware che accetta comandi AT e potrebbe essere usato anche senza caricargli niente (non ho mai provato)

n°3 - bisogna programmarlo separatamente

Se possibile è meglio, l'ESP ha un processore più veloce e molta più memoria. Di tutta la parte WEB potrebbe occuparsene lui, lasciando ad Arduino il solo compito di gestire sensori e attuatori. Per programmarlo si può usare un programmacoso come questo o questo.

n°4 - può comunicare in seriale.

Qui il discorso è più generale: far comunicare tra loro due sketch, uno che gira su Arduino, l'altro nell'ESP, ma fosse anche tra due Ardu, non cambia nulla, si tratta di inventarsi un mini protocollino per scambiare i pochi dati strettamente necessari.

Grazie mille @Claudio_FF. come protocollo di trasmissione tx e fx hai qualche idea? alla fine dovrebbe solo mostrarmi due valori sulla pagina web. niente di piu. quindi arduino dovrebbe inviare al esp due dati e esp metterli nella pagina web.

io ho messo tutto su arduino perche non so che programma montare sul esp. i comandi at sono di fabbrica e funzionano

>Ame90: ti ho già detto, al post #3 che il cross-posting è proibito (anche tra lingue diverse) per cui, il tuo post duplicato nella sezione Inglese del forum (post per di più scritto in Italiano, cosa NON permessa) è stato cancellato.

Ti avverto che se continuerai a violare il regolamento sarò costretto a prendere provvedimenti. Grazie.

Guglielmo

Ame90:
Grazie mille @Claudio_FF. come protocollo di trasmissione tx e fx hai qualche idea? ...

Prova a guardare la libreria Webbino che si trova in Megatopic? ... tra le varie interfaccie di rete prevede anche il ESP8266. Con essa è piuttosto facile creare pagine WEB con cui visualizzare risultati o ricevere comandi.

Guglielmo

Ame90:
come protocollo di trasmissione tx e fx hai qualche idea?

Più di una, ma dipende da cosa deve passare, e chi/quando deve comunicare, magari non serve neppure caricare qualcosa sull'ESP.... non so cosa fa la libreria WiFiEsp.h

Piuttosto la variabile 'readstring' di tipo String non serve a nulla.... è li solo per accumulare i caratteri e non farne niente... già usi correttamente l'array di char 'linebuf' per ogni operazione.

alla fine dovrebbe solo mostrarmi due valori sulla pagina web

Ok, sono un paio di interi, sarebbe utile sapere il range di valori che dovranno trasportare... non credo tutto il range da 0 a 65535... potrebbero uscirne delle semplificazioni

gpb01:
>Ame90: ti ho già detto, al post #3 che il cross-posting è proibito ....

chiedo perdono. lo avevo fatto per errore ancora prima di creare questo post. mi scusi.

Claudio_FF:
Più di una, ma dipende da cosa deve passare, e chi/quando deve comunicare, magari non serve ...

ti allego la libreria.
cmq il progetto sussiste in questo: su arduino cono collegate due sonde e un relè e un display. viene rilevata una temperatura su queste sonde. se la differenza tra esse è maggiore di 7 viene attivato il relè. il tutto viene scritto sul display. io vorrei ora integrare una pagina web dove mi vengono scritti i valori delle sonde e se il relè è acceso o no. quindi mi serviva il modulo per connettere arduino alla rete wifi.
i valori non vanno da 0 a 65535 ma sono compresi tra -15 e +90 circa....

--- Quando si quota un post, NON è necessario riportarlo (inutilmente) tutto; bastano poche righe per far capire di cosa si parla ed a cosa ci si riferisce. Gli utenti da device "mobile" ringrazieranno per la cortesia :wink: - gpb01

La libreria.

WiFiEsp-master.zip (61.4 KB)

Avete qualche news? il mio problema fondamentale è di comunicare con il modulo esp8266 per creare la pagina web.. Se avete delle guide chiare sulla comunicazione delle due schede.. grazie mille..

Il problema è che ci sono diversi argomenti insieme che lasciano aperte troppe domande:

  1. comandi AT oppure sketch ad hoc su ESP
  2. connessione WiFi
  3. web server
  4. comunicazione seriale
  5. design generale dell'applicazione, interazione temporale tra le parti, dati che si devono scambiare (quando / quali / quanti byte)

Già il primo argomento porta a due universi totalmente differenti, per questo la frase «comunicare con il modulo» non ha molto senso se non si contestualizzano per bene anche gli altri punti.

Web server con Arduino e/o ESP non ne ho mai fatti per cui su questo non sono di aiuto, ma per comunicare via seriale (trasmettere e ricevere byte) bastano i comandi della seriale write / read / available. Come usarli però dipende appunto dal design di tutto il resto.

Se devo trasmettere via seriale qualche intero da uno sketch a un altro, devo innanzitutto decidere il formato dati della trasmissione (byte qualsiasi? caratteri ASCII? lunghezza fissa o variabile?), prevedere una forma di sincronizzazione tra gli sketch (timeout? preambolo? bit settati/resettati? sequenze di escape?) a seconda di come è più comodo, e magari aggiungere un controllo errori (checksum? xor? crc? altro?) se penso che la comunicazione possa avere problemi... e con le combinazioni di questi parametri abbiamo già oltre trenta modi diversi (e trenta diverse possibili coppie di routine di trasmissione e ricezione da scrivere) per far passare i nostri byte sulla seriale... solo per parlare del punto 4.

Ora il design generale, SE si sceglie la via dello sketch ad hoc su ESP, potrebbe essere questo:

  • Arduino legge i sensori, comanda gli attuatori, e ogni tot secondi trasmette i dati all'ESP (nel formato da scegliere)
  • L'ESP si connette in WiFi, fa girare il web server, e fa girare continuamente una funzione di ricezione seriale (speculare alla trasmissione del nano) che aggiorna le variabili usate dal web server per popolare la pagina.

E quindi, cosa deve passare tra i due sketch? Si è detto due interi a 16 bit tra diciamo -20 e 95 di valore, più un byte per indicare lo stato del relé, totale cinque byte di dati.

Se si vanno a vedere le configurazioni dei bit di questi cinque byte scopriamo che:

  • I valori nell'intero range 96..235 non dovrebbero mai comparire
  • Gli interi hanno il byte più significativo sempre a zero o sempre a 255

Per cui due byte di valore 166 in sequenza possono essere usati con certezza per rappresentare l'inizio trasmissione (preambolo di sincronizzazione).

Questo è quindi uno dei tanti possibili formati realizzabili di pacchetto dati nano→ESP

.-----. .-----. .-----.-----. .-----.-----. .-----.
| 166 | | 166 | | LOW |00/FF| | LOW |00/FF| | 0/1 |
'-----' '-----' '-----'-----' '-----'-----' '-----'
     start         valore1       valore2     rele`

In ricezione si devono attendere due byte 166 in sequenza, dopo di che si leggono i due byte del primo intero, quelli del secondo, e lo stato del relè (nota: questa semplificazione nel formato dati è possibile per via del ristretto range di valori assunto da 'valore1' e 'valore2' e per il fatto di trasmetterne anche il byte più significativo)

Ame90:
Avete qualche news? il mio problema fondamentale è di comunicare con il modulo esp8266 per creare la pagina web..

... ma il mio post #8 lo hai letto? La libreria l'hai studiata? Hai verificato se ti può andare bene?

Guglielmo

Claudio_FF:
Il problema è che ci sono diversi argomenti insieme che lasciano aperte troppe domande:

  1. comandi AT oppure sketch ad hoc su ESP
  2. connessione WiFi
  3. web server
  4. comunicazione seriale
  5. design generale dell'applicazione, interazione temporale tra le parti, dati che si devono scambiare (quando / quali / quanti byte)

grazie mille di tutta la spiegazione molto dettagliata, e capisco da tutto ciò che si tratta di una cosa molto complessa. All'inizio avevo pensato che il modulo era facilmente interfacciabile con arduino e non che si dovesse ricorrere ad una cosa cosi complessa. La ringrazio di tutte le spiegazioni molto chiare!!

gpb01:
... ma il mio post #8 lo hai letto? La libreria l'hai studiata? Hai verificato se ti può andare bene?

Guglielmo

si, non ho trovato ne esempi, ne spiegazioni adeguate per essere integrate nel mio progetto. grazie mille lo stesso.