Comunicazione I2C

Quanto segue è per avere una conferma sulla fattibilità di comunicazione con il protocollo I2C tra arduini e WEMOS D1 PRO MINI 4M.

In rete ho trovato tutto quanto mi serve tra arduini e non nello specifico di quanto scriverò.

Premetto che tra i NANO la cosa l’ho già fatta ma non così in grande e prima di mettere sul campo tutte le pedine volevo un parere.

Praticamente ho vari sensori di natura diversa e di diversa uscita tra ISP, ModBus(RS485), digitali o analogici.

Visto che per ognuno devo fare esperimenti può essere che il primo è digitale e il secondo è ModBus o altro e questo per ognuno dei 4 sensori.

Per non fare uno sketch unico nel WEMOS vorrei creare questi quatto moduli indipendenti che leggono i sensori e attraverso il protocollo I2C comunicano al WEMOS in ascolto i 4 parametri.

Quindi ogni Nano legge un sensore in modalità diversa (non I2C), avrà un suo indirizzo esadecimale e renderà disponibile la variabile per essere letta dal WEMOS D1 PRO MINI 4M il quale farà da

collettore e invierà ad una pagina web il tutto.

In questo modo avrò 5 sketch, 4 diversi per ognuno dei NANO e uno per il WEMOS.

Ecco tutto questo per chiedere se è fattibile prima di mettermi al lavoro.

Grazie per il tempo.

Alberto

Il bus I2C non è adeguato per realizzare un sistema del genere, a meno che le diverse MCU in gioco non siano a distanza davvero ravvicinate tra loro, ma a questo punto mi chiederei a cosa serve usarne cosi tante per dei task cosi semplici come leggere un sensore.

Il problema delle distanze non sussiste visto che parliamo al massimo di qualche centimetro tra nano e wemos.
Si trova tutto sulla stessa motherboard.
Del resto se non sbaglio l'I2C è nato proprio con questo intento di far comunicare task nello stesso dispositivo.

Il discorso dei tanti nano è per poterli programmare in un posto diverso da dove poi si troveranno a lavorare e renderli quasi plug and play.
Ma questo argomento non lo espongo perché porterebbe fuori tema.

Alberto

Capisco.

E' vero che ormai le MCU le trovi pure nella patatine, solo che a me come architettura mi sembra un'inutile spreco di risorse.

Per quanto riguarda il discorso dei moduli, ad esempio lo avrei affrontato in modo diverso ovvero selezionando solo dei sensori che comunicano sul bus I2C e a quel punto ti risparmi pure la programmazione dei diversi Nano.

Chiaramente questa è solo una mia opinione, non sto dicendo che come vuoi fare tu non va bene.

Lecite osservazioni, i sensori I2C puri ci sono e vanno direttamente nel wemos, gli altri che non hanno uscita I2C di loro natura ma analogica, modbus o semplicemente digitale li gestisco così.

Poi hanno anche piedinature diverse sempre a parità di sensore.

Questo modo di gestire a schede "plug and play" con i nano è appunto perché la stessa tipologia di sensore ma di fabbricazione diversa ha uscite diverse.

E poi il tutto si trova su un palo alto 4 metri e non ho più movenze da funambolo e starmene con il portatile sulla scala non è il caso.

Meglio schedina intercambiabile.

Quindi prendo il tutto come in SI.
4 nano con uscita I2C e un WEMOS D1 PRO MINI 4D possono convivere.
:sweat_smile:

Occhio solo hai livelli di tensione ... gli Arduino Nano classici lavorano a 5V ... le WeMos a 3.3V ... io, in questi casi, ho sempre messo dei level shifter.

Solo un'osservazione ...
... perché continuare da usare delle obsolete schedine basate sul vecchio ESP8266 quando, per qualche US$ in più hai schede molto più affidabili, veloci e performanti, basate su ESP32?

Guglielmo

Ok grazie dell'osservazione per la tensione.

Vedo come muovermi.

Per quanto riguarda l'ESP32 se ne trovo uno delle stesse dimensioni perché no.

Cerco.... A me serve con il micro jack per l'antenna esterna. Non credo sarà un problema trovarlo.
... E cerco i level shifter da 5 a 3.3 che non so cosa siano ma imparerò.

Ho appena visto questo:

https://forum.arduino.cc/t/i2c-e-livelli-di-tensione/510526

Alberto

Eccoli QUI, adatti per bus I2C.

Guglielmo

Ne ho presi alcuni ora sia con componenti discreti che con ic e ho dato un'occhiata furtiva su come usarli.

Se non ho frainteso vanno alimenti con 3.3 e 5V e i dispositivi con rispettive tensioni di lavoro collegati dal lato appunto 3.3 o 5.

Ma darò una letta più approfondita.

C'è anche una shield con un integrato dedicato il txs0108e.

Alberto

Quelli che ti ho indicato sono specifici per uso su bus I2C ed hanno integrate le pull-up sia da un lato che dall'altro ... cosa importante per il buon funzionamento del tutto.

Guglielmo

L'unica cosa che non mi è chiara o comunque da tutti gli esempi che ho visto non risulta evidente è la possibilità di collegare il lato 5V del level shifter ai singoli dispositivi I2C e il lato 3.3V (quello del WEMOS o ESP32 per capirci) con le uscite in parallelo perché ovviamente il dispositivo collettore è uno.
Essendo I2C un bus bidirezionale non dovrebbero esserci problemi ma mi rimetto a voi.

Di quell'oggetto ...
... i pin di alimentazione VH e VL vanno uno ai 5V ed uno ai 3.3V, il GND è comune a tutti ... poi, hai un canale bidirezionale tra i pin An e Bn dove sui pin An colleghi le cose che lavorano a 3.3V e sui pin Bn le cose che lavorano a 5V ... tutto qui.

Questo lo schema:

An stanno su JP3, Bn stanno su JP4.

Guglielmo

Ok come sempre tutto chiaro.

Grazie Alberto

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.