Modulo Wi-Fi ESP8266

Giancarlo_Physics: Ciao testato,

l'obiettivo è di prendere i dati e plottarli in real time, quindi sul computer mi servirebbe un'ambiente di programmazione che mi consenta di leggere i dati dalla esp e fare dei grafici. Per questo pensavo a Python, tu cosa mi suggerisci?

Una volta scelto l'ambiente di programmazione, che comandi devo inserire nel codice per far comunicare il computer con la ESP? la NodeMCU la devo configurare come access point? come client? che differenza c'è?

C'è un modo per leggerli anche sulla seriale del lide di arduino? (Per quel che ho capito penso di no perchè non saprei cosa attaccare alla porta USB)

Scusa la serie di domande, sono completamente ignorante su questo argomento, sto cercando di farmi un'idea e capire, ma penso di essere in totale confusione.

Non voglio dire una boiata (vado a memoria da qualche prova fatta tempo fa), ma forse fai prima con il bluetooth se non hai necessità di letture in remoto. Con quello dovresti riuscire ad avere i dati sul pc come se fossi collegato fisicamente alla seriale via USB.

No, non la dici affatto, il PC vedrebbe il dispositivo bluetooth come una seriale con tanto di COM. Buona idea! Stessa cosa per un dispositivo Android e forse anche iOS.

Bisogna vedere se la portata del bluetooth è sufficiente.

Si col BT è tutto più facile, perché a questo punto potresti continuare ad udare il plot integrato nell'ide. Ma sembra che a lui serve obbligatoriamente wifi ?

Per la compatibilità android, ios, desktop con BLE copri tutti ma vecchi telefoni non sono Ble Esp32 è sia bt classic che bt ble ma al momento c'è solo una lib bt ble su core arduino

Sto optando per il wifi perchè vorremmo prendere dati real time da più sensori.

Con il bluetooth non penso sia possibile. Giusto ::slight_smile: ?

Comunque potete indicarmi del materiale che posso studiare su come configurare reti wifi tra sensori?
Poichè sono alle prime armi, da dove consigliate di cominciare?

La parte di hardware mi è abbastanza chiara (Esp8266+MPU6050), devo capirne di più su come il computer prende i dati dalla rete wifi e li stampa sul monitor.

Ho sicuramente capito che non mi serve la connessione al web ma di un router che li metta in comunicazione. Il mio problema è che non riesco a capire come impostare un codice da computer.

Suggerimenti?

Prova a cercare esempio di comunicazione client-server per il tuo linguaggio scelto, magari cerca esempi di chat che forse sono quelli che si avvicinano di più a quello che vuoi fare.

Giancarlo_Physics:
Sto optando per il wifi perchè vorremmo prendere dati real time da più sensori.

Con il bluetooth non penso sia possibile. Giusto ::slight_smile: ?

se non riesci a collegare i sensori sotto una sola MCU no, non ce la fai.

Ne butto li un’altra,: 1 ESP configurato come access point e collegato al pc via seriale. Gli altri ESP comunicano con lui via PJON (o altro) e i dati vengono riportati sulla seriale.

Perché no ? Bluetooth a livello di standard ha sempre avuto la possibilità di collegare più device, però si devono scegliere i componenti giusti e fare delle prove. Non ho mai provato personalmente ma secondo me basta solo scegliere il dongle giusto lato PC con un driver che permette la gestione di multiple com virtuali

The bluetooth standard supports multiple connections across the same bluetotoh link (up to about 60, IIRC), but apparently not all vendors choose to fully support that.

Ah meglio allora, io la sapevo che il bluetooth era 1 a 1

testato: Perché no ? Bluetooth a livello di standard ha sempre avuto la possibilità di collegare più device, però si devono scegliere i componenti giusti e fare delle prove.

Esatto, la parolina chiave è "scegliere i componenti giusti" ...

... ad esempio, il classico HC-05, in modalità master, può essere associato a più slave (mi pare massimo 5 o 6), ma ... può essere conneso a solo UNO degli slave alla volta. Occorre quindi trovare un modulo BT di categoria (e fascia di prezzo) superiore, in grado di fare da master e di supportare non solo più associazioni contemporaneamente, ma anche più connessioni.

Guglielmo

Nel suo caso dove è il pc a fare da master basta scegliere il giusto dongle e usare gli economici hc05 sui sensori

testato: Nel suo caso dove è il pc a fare da master basta scegliere il giusto dongle

.. SI, su PC credo che anche i più economici permettano la connessione simultanea con più "slave" ;)

Guglielmo

salve a tutti, posto qua ma non so se sto facendo una cosa giusta... ho un modulo esp_01 da 1 M e sto usando IDE Arduino. Nella selezione flash size non capisco a cosa corrispondono le varie selezioni per lo stesso size di memoria. Qualche aiuto per favore ? Grzie ciao

Poiché difficilmente il tuo sketch occuperà 1M hai la possibilità di usare parte della flash come se fosse una SD con un file system chiamato SPIFFS. Quello che varia sono le dimensioni di questo file system.

ok, grazie. Ma che cosa devo selezionare ? So che la schedina è di 1M e basta... ciao

OK, OK ho capito ora ! Grazie Zoomx. ciao

Ciao a tutti, dopo parecchio studio sono riuscito a creare la mia rete wifi di accelerometri plottando i dati in ingresso con python. Ero molto felice fino a quando il tutto ha smesso di funzionare (o quasi) da qualche giorno.

Mi spiego meglio:

  • ho due NodeMCU V2 Amica: su uno è caricato lo script per configurarlo come Access Point e sull'altro uno che lo configura come Client.

-dal PC, collegato alla rete wifi dell'access point, lancio un codice con python usando socket.AF_INET, socket.SOCK_STREAM per leggere i dati dal client.

Questa configurazione ha funzionato per un paio di giorni, ora quando lancio il codice python il programma mi risponde con questo errore

File "/client_connection.py", line 51 main() File "/client_connection.py", line 29, in main s.connect((TCP_IP, TCP_PORT)) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args)

error: [Errno 60] Operation timed out

Ho disinstallato e re-installato Arduino, comprato altri due sensori, riscritto i codici. Tutto inutile, non nè vuole sapere di tornare a funzionare.

Il fatto strano è che il codice python mi legge i dati se il sensore e il computer sono collegati a un'altra rete wifi (a esempio la mia rete wifi di casa o quella dell'università).

Qualcuno ha idea di cosa potrei fare per far funzionare di nuovo tutto come prima? Vi ringrazio

A me pare di ricordare che l'ESP8266 in modalità Access Point non permette la comunicazione reciproca tra i dispositivi collegati ma a te ha funzionato. Io sospetto qualche cambiamento sul PC dovuto ad aggiornamenti ma nel frattempo userei un access point qualunque, anche un modem ADSL non collegato alla linea telefonica.

Ciao,

Scrivo qui in questo megatopic.

Ho acquistato un ESP8266 ESP-01 su amazon per utilizzarlo come modulo wifi di un arduino uno in un progetto di irrigazione. L'idea è quella di utilizzare homeassitant su un raspberry per gestirlo.

Ho seguito un pò di guide, ma non riesco a far comunicare Arduino con il modulo ESP8266 (utilizzando monitor seriale - comandi AT).

Ovviamente con il suo adattatore usb funziona egregiamente (stesso discorso con i comandi AT).

Per fare dei test, ho utilizzado il seguente sketch:

#ifndef HAVE_HWSERIAL1
 #include "SoftwareSerial.h"
 SoftwareSerial Serial1(6, 7); // RX, TX
#endif

void setup()
{
 Serial.begin(115200); // serial port used for debugging
 Serial1.begin(9600);  // your ESP's baud rate might be different
}

void loop()
{
 if(Serial1.available())  // check if the ESP is sending a message
 {
   while(Serial1.available())
   {
     int c = Serial1.read(); // read the next character
     Serial.write((char)c);  // writes data to the serial monitor
   }
 }

 if(Serial.available())
 {
   // wait to let all the input command in the serial buffer
   delay(10);

   // read the input command in a string
   String cmd = "";
   while(Serial.available())
   {
     cmd += (char)Serial.read();
   }

   // print the command and send it to the ESP
   Serial.println();
   Serial.print(">>>> ");
   Serial.println(cmd);

   // send the read character to the ESP
   Serial1.print(cmd);
 }
}

Per evitare problemi di alimentazione, ho anche utilizzato positivo e negativo dell'adattatore usb. (Pin 5 e 6 collegati all'arduino, so che è pericoloso ma almeno dovrebbe funzionare per qualche test, no ?)

Riuscite a darmi qualche suggerimento perchè sto diventando pazzo? :o

Grazie!

>dareiosd: essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente [u]evitando[/u] di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

1 Serial1.begin(9600); // your ESP’s baud rate might be different Il tuo modulo va a 9600 o 115200?

2 Ho capito che hai usato l’alimentazione proveniente dall’adattatore, hai controllato che effettivamente sono 3.3V (più o meno)

3 Credo che tu voglia dire che hai connesso l’ESP-01 direttamente all’Arduino senza alcuna protezione. PErò mentre tu parlo di pin 5 e 6 nello sketch c’è scritto 6 e 7. Comunque sappi che rischi di farlo fuori.
Nel primo post c’è uno schema.