Informazioni ESP32 e Arduino I2C

Buongiorno,
Necessiterei di sapere se qualcuno ha mai utilizzato arduino per comunicare con un ESP32 in modalità Slave, sia per la parte Wifi che bluetooth.
Per essere più chiari ho un arduino che utilizzo come master raccolta dati e attualmente utilizzo un hc06 paired con un altro hc06 e arduino che utilizzo per la gestione remota di potenza.
Il wifi per comunicare con thingspeak ed un altro hc06 per controllare il master (arduino) tramite app Android.
Il punto è che stavo disegnando delle schede e avrei trovato più comodo avere una scheda dedicata con altri componenti i2c che utilizzo come eeprom, rtc e lcd piuttosto che utilizzare diversi pin come software serial.
Quindi il mio interesse era avere un ESP32 (anche solo BT) che riceve dati i2c tramite un arduino master e abbia la possibilità di essere bloccato in comunciazione con un altro ESP32 che riceve e trasferisce i dati all'arduino di controllo potenza.
Aggiungerei un secondo ESP32 con la possibilità di lavorare con 1 device che si puo connettere e ricevere dati tramite bt e spedirli ad arduino e ricevere dati da arduino e spedirli tramite wifi.
Attualmente la mia configurazione tramite hc06 e esp01 funziona era solo per disegnare delle schede più conformi e appunto disegnarne una solo come i2c.

Grazie mille, buona giornata.

Stefano

Buongiorno,

Prima di tutto le dico che l'esp 32 é un micro controllore piuttosto potente e sicuramente può utilizzare sia il bluthooth che il WI-fi interno nello stesso programma quindi le chiederei di dare maggiori dettagli a proposito del progetto soprattutto se il problema é la carenza di porte i/o dell'esp 32 e quindi ne vuole mettere due per questo...
Comunquesia far comunicare due controllori tramite i2c é piuttosto semplice il principio di funzionamento é uguale al modulo bluthooth. Perciò per non esagerare con processori e potenza di calcolo personalmente le consiglierei di utilizzare un solo micro controllore principale come l'esp32 e successivamente collegarlo ad un altro controllore (tramite i2c) anche meno potente che serva soltanto per lo scopo di utilizzare le porte i/o in piú che servono. Arrivati a questo punto non saprei le conoscenze di elettronica ed elettrotecnica che ha lei, ma potrebbe o creare un'altra scheda apposita da zero con un micro controllore che le serve e collegarla all'esp32 oppure collegare qualche Arduino uno o nano all'esp con lo scopo di utilizzare solo le porte.

Premetto che non sono assolutamente un esperto é questo consiglio è un pensiero personale, come avrei fatto io, quindi prenda il tutto con le pinze.

Arrivederci

Davide02:
Prima di tutto le dico che l’esp 32 é un micro controllore piuttosto potente e sicuramente può utilizzare sia il bluthooth che il WI-fi interno nello stesso programma …

… probabilmente “nello stesso programma”, ma quasi sicuramente NONallo stesso tempo” … se ben ricordo infatti, o si usa BT o si usa WiFi, ma assieme non possono essere utilizzati (ovvero, ad esempio, non posso fare un ciclo in cui leggo da BT e ritrasmetto subito su WiFi o viceversa).

Guglielmo

In realtà BT e wifi insieme è possibile, bisogna stare attenti all’ordine di connessione e a scrivere bene lo sketch. È vero che condividono la stessa antenna, ma ho uno sketch dove coesistono tranquillamente.
Ho visto che è più semplice attivare la wifi dopo aver stabilito la connessione bt.
Nel mio sketch il controllo wifi gira in un task e il bt in un’altro, ma devo scollegare il wifi quando mi collego bt, poi riattivo il wifi e girano assieme, senza conflitti.
Quindi riesco tranquillamente a ‘passare’ comandi bt che giro con post ad un server immediatamente e rimanendo connesso ad entrambi.

wipity:
Nel mio sketch il controllo wifi gira in un task e il bt in un’altro, ma devo scollegare il wifi quando mi collego bt, poi riattivo il wifi e girano assieme, senza conflitti.

Quindi scusa, devi disattivare il WiFi, poi effettui la connessione in BT, quindi riattivi il WiFi con il BT connesso e, a questo punto, puoi usarli simultaneamente? Interessante ... avevo informazioni contrastanti in merito ...

Guglielmo

Si, una figata!
Ho dovuto usare un po’ di bool per conferme varie, ma considera:
Il ble rimane sempre attivo, pronto a connettersi;
un task verifica , se un bool lo consente, di attivare il wifi e cercare la connessione;
se mi collego ble , disattivo il Wi-Fi, una volta connesso, do un comando bt per attivare la connessione ( oppure puoi farlo in automatico).
Da lì è tutta discesa, considera anche che gli giro direttamente delle stringhe json che vengono passate al task che le usa nei POST.
Imposto le credenziali wifi e tutto quello che voglio.
All’inizio stavo impazzendo perché andava in crash, poi ho invertito la sequenza e ora è stabile!

Ringrazio,
Effettivamente utilizzare un esp32 per la sola comunicazione è al quanto sprecato.
Sarebbe più consono revisionare il codice e montarlo sull'esp32 ma a questo punto potrei prevedere un upgrade ad arduino nano iot in quanto la mia base era il nano e continuare ad utilizzare un singolo software serial per la comunicazione bt con la parte remota e utilizzare il bt e wifi di arduino per comunicare con thingspeak e con l'app di android.
Necessito del wifi quando non sono nei pressi del dispositivo e del bt se ho da modificare dei parametri quindi possono coesistere tra di loro perchè potrei evitare che funzionino assieme.

La mia premura era di costruire una scheda che potesse essere utilizzata per diversi progetti quindi avesse tutte le disponibilità anche se inutilizzate ora magari revisionando la scheda per differire le alimentazioni di arduino nano e iot in caso non necessito di doppia comunicazione bt e wifi.

wipity:
All’inizio stavo impazzendo perché andava in crash, poi ho invertito la sequenza e ora è stabile!

... grazie mille per la dritta :slight_smile:

Guglielmo

Gulielmo
Figurati!
Io ho usato l’esempio ble come seriale(non ricordo il nome corretto) come base di partenza, creandomi una lista di comandi e di risposte bt.
Un file json di configurazione + un file uguale che funge da maschera(solo il secondo file è modificabile, in modo da averne uno di default), e una funzione che cerca le chiavi all’interno del file per modificare il valore in base al comando bt che invio.
Così la parte di invio post cerca i dati direttamente nel file json.
Ti ricordo che le librerie bt occupano un bel po di spazio... io sono al limite, tipo il 92%...
Aiutami se puoi nel mio post inerente il display....

Stequila93
ti consiglio di provare a passare al solo esp32, hai tutto in uno e con il core Arduino vai via pulito, con possibilità di lavorare con il dual core e praticamente tutte le funzionalità arduino.
So che è più semplice la comunicazione seriale per il bt, ma riempi la scheda di moduli con aumento di costi .
In più passeresti al ble anziché bt classico, tranquillamente supportato da Android.
E puoi comunque gestirti la wifi all’occorenza.

Si ti ringrazio, effettivamente ho visto che posso tranquillamente convertire il codice da arduino a esp devo solo concepire l'utilizzo delle porte e probabilmente qualche funzione.

Piccolo particolare: ESP32 funziona tutto in 3,3 volt e occhio alle analogiche e ai pin che puoi usare solo Out e quelli solo In.

Questo magari lo hai già visto ma è sempre utile.
Per il resto, grande scheda e grandi prestazioni !!!

Ottima osservazione!

Non ho capito bene.

Tu usi il bluetooth nel mentre che sei anche connesso in WiFi? O disattivi l'uno quando usi l'altro?
Fino adesso dicevano che non si poteva fare perché la radio era una sola.

zoomx:
Non ho capito bene.

Tu usi il bluetooth nel mentre che sei anche connesso in WiFi? O disattivi l'uno quando usi l'altro?
Fino adesso dicevano che non si poteva fare perché la radio era una sola.

E' vero, condividono la stessa antenna, ma citando il solito.... si, può, fareee!!
BLE e WiFi vanno assieme.
anch'io mi sono imbattuto nella stessa problematica e nei vari post dove si diceva che era impossibile. Quello che ho scoperto è che l'iter di attivazione ti fa andare in crash se attivi il BLE mentre sei connesso alla WiFi. Il contrario no.
Il problema non è avere il bt acceso e la wifi accesa contemporaneamente, condividendo la stessa radio sono già assieme.
Che errore ti da se provi a connetterti al bt mentre sei già connesso alla wifi?

Non è semplice da gestire, devi scriverti bene lo sketch e fare delle prove.

Ho perso quasi 6 mesi a capire come gestirla in modo ottimale!
Adesso va che è uno spettacolo!

Quindi sarebbe possibile una connessione che riceve dati dal bluetooth e li inoltra sul WiFi....

Prova da fare.

Fino adesso avevo letto che per farlo bisognava spegnere alternativamente i due servizi, per cui se usavo il bluetotth dovevo spegnere il WiFi e viceversa.