Modulo WiFi+Bt ESP32

Salve, ho un due esp32 e vorrei programmare usando ide arduino, il mio progetto è quello di creare una rete wifi e che l'altro si colleghi, i due esp e si dovrebbero scambiare dati o almeno uno che invii dati e l'altro li esegua (per esempio all'espA è collegato un potenziometro invece l'espB riceve il valore del potenziometro)
Io ho provato a creare uno come Accesspoint e l'altro client ma non riesco a far inviare dati.
Avevo pensato di configurare l'esp32 come AP+Station (credo che non sia possibile con questo modello) ma comunque ho usato le direttive (#if,#else e #endif) ma niente si blocca dopo la configurazione di AP
Non chiedo che mi mandiate per forza tutto il codice ma fatemi capire le librerie e le funzioni che dovrei usare

Lascia stare le direttive :slight_smile:

Si può fare tranquillamente quello che chiedi,
In tanti modi diversi
Esempio puoi usare il primo come webserver ed il secondo come client, puoi passare dati in mofo bidirezionale
Oppute puoi usare Telnet, sempre da un lato come server e l'altro client.

Consiglio di iniziare a studiare gli esempi integrati nel core esp32, anche AP+Station è funzionante

testato:
Lascia stare le direttive :slight_smile:

Si può fare tranquillamente quello che chiedi,
In tanti modi diversi
Esempio puoi usare il primo come webserver ed il secondo come client, puoi passare dati in mofo bidirezionale
Oppute puoi usare Telnet, sempre da un lato come server e l'altro client.

Consiglio di iniziare a studiare gli esempi integrati nel core esp32, anche AP+Station è funzionante

Se io creo un web server ho bisogno di una rete di accesso quindi di un access point, a questo punto avrei bisogno di tre dispositivi uno access point l'altro web server e l'altro client (anche con telnet), invece l'opzione ap+station non riesco a configurarla... se mi puoi dare una mano perfavore ti sono grato

In questa issue c'è un esempio

WiFi.mode(WIFI_MODE_APSTA);

andrea1201:
Se io creo un web server ho bisogno di una rete di accesso quindi di un access point, a questo punto avrei bisogno di tre dispositivi uno access point l'altro web server e l'altro client (anche con telnet), invece l'opzione ap+station non riesco a configurarla... se mi puoi dare una mano perfavore ti sono grato

AP significa che altri dispositivi si possono connettere in WiFi all'ESP.
STA significa che l'ESP si connette ad un altro AP di solito il modem/router.
WebServer significa che c'è un programmino che ascolta per alcune richieste con un determinato protocollo, il suo funzionamento è indipendente dal fatto che l'ESP sia in STA o in AP.
Client è invece un programmino che si connette ad un server, anche questo è indipendente dal fatto che l'ESP sia in STA o in AP.

Ciò che cambia fra AP e STA è che mentre in AP sono accessibili solamente i dispositivi connessi all'ESP in STA si vedono fra loro tutti i dispositivi connessi all'AP, se è il modem/router è anche possible collegarsi ad internet, quindi l'ESP potrebbe essere accessibile da internet (in alcuni casi non è possibile, dipende dal provider) e sicuramente può accedere a server remoti presenti in rete internet.

Se hai due ESP che devono solo comunicare fra loro uno deve essere un AP e l'altro uno STA, ma possono essere anche due STA collegati allo stesso modem.

Credo che questo lo sappia, infatti tutto nasce dal fatto che vuole usare due soli esp ma non gli funziona ap+sta su uno dei due

Perché non hanno ancora creato il pacchetto di installazione tramite IDE di Arduino (Board Manager)?

Non l'hanno ancora implementato, magari se si ricevono più richieste sulla issue si danno una mossa.

Salve a tutti!
Sono davvero niubbo sia per quanto riguarda Arduino, sia per quanto riguarda questo modulo ESP32.
Sto cercando di dare una mano per un progetto che prevede l'uso di Arduino Uno a cui sono collegati in un caso ad un semplice pulsante, in un altro a dei sensori.
La parte che mancherebbe sarebbe la possibilità di inviare i dati via wi-fi e/o bluetooth ad uno smartphone o ad un pc.

Nelle mie ricerche su questo argomento sono incappato in questo modulo ESP32, ma ho capito che la cosa non sia così semplice.

Anzitutto non ho capito come interfacciare una scheda Arduino Uno con l'ESP32: mi sembra che esistano in commercio solo delle schede di sviluppo che integrano il chip ESP32 che di fatto si sostitiscono a Arduino Uno, o sbaglio? C'è comunque la possibilità di far comunicare le due schede?

Inoltre mi sembra di aver capito che l'integrazione delle librerie in Arduino IDE è ancora incompleta, in particolare la gestione del bluetooth ho capito essere ancora non implementata o allo stato embrionale. Lo sviluppo completo sarebbe possibile passando a IDF. La domanda torna a questo punto quella precedente: usando programmi sviluppati in IDF è possibile interagire con una scheda Arduino Uno?

E' ovvio che su Arduino c'è già tutto un lavoro fatto che si vorrebbe "salvare".

Qualcuno può darmi delle dritte su come muovermi e quali guide e documentazione leggere per fare quanto mi serve?
Grazie per l'attenzione.
Maurizio

**>mauri_va: **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 (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

gpb01:
>mauri_va: 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 (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

Grazie Guglielmo per la segnalazione!
L'avevo letto il regolamento, ma l'obbligo della presentazione mi era sfuggito.
Ho rimediato.
Scusate la svista!

Maurizio,
ho preso l'ESP32 ma non è ancora arrivato. Per quanto ne so, può benissimo sostituire la UNO con adattamenti del caso.

Ma può comunicare con la UNO tramite la seriale ma credo che i livelli vadano adattati perché l'ESP32 dovrebbe essere un dispositivo che lavora solo a 3.3V.

Ci sarebbe anche l'ESP8266 di cui esiste una libreria per farlo funzionare come lo shield WiFi ufficiale della UNO ma non ha il bluetooth.

zoomx:
Maurizio,
ho preso l'ESP32 ma non è ancora arrivato. Per quanto ne so, può benissimo sostituire la UNO con adattamenti del caso.

Ma può comunicare con la UNO tramite la seriale ma credo che i livelli vadano adattati perché l'ESP32 dovrebbe essere un dispositivo che lavora solo a 3.3V.

Ci sarebbe anche l'ESP8266 di cui esiste una libreria per farlo funzionare come lo shield WiFi ufficiale della UNO ma non ha il bluetooth.

Grazie per la risposta.
Avevo capito che la scheda di sviluppo dovrebbe sostituire la UNO, ma le librerie al momento integrate nella IDE Arduino non sono ancora complete, da quanto ho capito, nonostante siano già passati parecchi mesi dalla commercializzazione.
Tra l'altro ho visto che esistono esempi d'uso del bluetooth per l'IDE, ma non ho ancora avuto modo di studiarli (possibile che nessuno in rete l'abbia ancora fatto?).
La scelta della ESP32 rispetto alla ESP8266 dipendeva proprio dalla possibilità di utilizzare sia il wifi che il bluetooth.

La mia scheda di sviluppo ha una porta microUSB per l'alimentazione, quindi a 5V, ma nel caso di collegamento con la UNO, dovrebbe essere possibile alimentarla a 3.3V, giusto?
La comunicazione frala UNO e la ESP32 tramite seriale non mi è molto chiara (come detto nella presentazione sono un VERO principiante in questo mondo, nonostante non sia del tutto digiuno di programmazione in genere). Se qualcuno su questo ha un suggerimento, una pagina di esempio da indicarmi, ne sarei davvero grato.
Grazie mille!

Il BT, se parliamo di core Arduino, é affidato ad una libreria esterna, e mi sembra che ad oggi non possa essere usato in contemporanea bt e wifi.
Questo se parliamo di BLE, che non tutti i cell hanno. Se parli di BT Classic c'è ancora meno in giro, credo nulla su core Arduino e non so se Idf lo supporta già.

Potresti rinunciare a BT e usare un esp8266, oppure usare un esp per wifi e un altro modulo per bt hc6, hm10, ecc

Sul topic esp8266 trovi allegato al primo messaggio uno schema per la questione dei livelli sulla connessione seriale ad una Uno
https://forum.arduino.cc/index.php?topic=265682.0

A scanso di equivoci la stragrande maggioranza delle schede Arduino UNO non è in gradi di alimentare correttamente tali moduli dalla linea a 3.3V: la corrente fornita non basta.

Lo schema a cui mi riferisco tiene conto anche di questo :wink:

Grazie a tutti per le risposte: appena avrò tempo mi studierò le cose che mi avete indicato.

testato:
Il BT, se parliamo di core Arduino, é affidato ad una libreria esterna, e mi sembra che ad oggi non possa essere usato in contemporanea bt e wifi.
Questo se parliamo di BLE, che non tutti i cell hanno. Se parli di BT Classic c'è ancora meno in giro, credo nulla su core Arduino e non so se Idf lo supporta già.

Effettivamente che wifi e bt non si potessero usare contemporaneamente l'avevo capito. Fra gli esempi c'è un file chiamato "WiFiBlueToothSwitch.ino" il cui nome non lascia molto spazio ai dubbi...

Mi è arrivato il modulo, la scansione delle reti funziona ma non mi si connette all'access point, cui altri moduli ESP8266 si connettono senza problemi. Potrebbe essere colpa dell'AP ma non ho avuto tempo di indagare.
Si tratta di una revisione 1.

zoomx:
Mi è arrivato il modulo, la scansione delle reti funziona ma non mi si connette all'access point, cui altri moduli ESP8266 si connettono senza problemi. Potrebbe essere colpa dell'AP ma non ho avuto tempo di indagare.
Si tratta di una revisione 1.

Grazie, tienici aggiornati sugli sviluppi!

Funziona! A casa mi si è connesso regolarmente, al lavoro invece non si è connesso all'AP costituito da un pennino WiFi e Virtual Router, forse ho sbagliato qualcosa perché di solito le difficoltà di connessione le ho nell'assegnazione dell'IP ma in questo caso nel Virtual Router Manager vedo la connessione lo stesso e in questo caso non ho visto nulla.

A questo punto mi scarico il PDF di Neil Kolban, che ha già scritto quello sull'ESP8266 (solo in inglese), che dovrebbe riportare tutto quello che si conosce su questo chip. Su GitHub ho visto degli esempi e la libreria BLE è la sua.

Io ho installato il core manualmente senza git.
Ho scaricato il repository da GitHub e l'ho decompresso in hardware/espressif/esp32 se lo mettete in un'altra cartella l'IDE non lo vede. La cartella hardware è una sottocartella di quella dove stanno i vostri sketch, dove c'è anche la libraries.
Poi ho scaricato la singola libreria BLE dal sito di Neil usando downGit che ti permette di scaricare una singola parte di un repository e l'ho decompressa in hardware/espressif/esp32/libraries/BLE
Se non lo fate il core funziona lo stesso ma ovviamente non potete usare il BLE e l'IDE vi darà continuamente errore sulla libreria perché vede la cartella ma dentro non c'è nulla.
Infine vado nella cartella hardware/espressif/esp32/tools e lancio get.exe come amministratore. Questo programma scaricherà il compilatore, un paio di file zip.

L'unico sketch che ho provato è quello che fa uso dei server NTP per sincronizzare l'orologio interno ed avere l'ora esatta tenendo conto di fuso orario e ora estiva ed invernale.

La storia che bluetooth e wifi non possono funzionare contemporaneamente è seccante. Il vantaggio di questo affare è che ci sono 2 core di cui uno gestisce il WiFi come l'ESP8266 mentre l'altro può fare... altro senza essere interrotto.