Collegamento Arduino rete I2c e sensori

Salve a tutti,
sono nuovo del mondo arduino, quindi scusate se la domanda è banale. Ho intenzione di implementare una rete I2C avente come master un arduino UNO e come slave 20/30 arduino EVERY sono collegati fra di loro in parallelo partendo da arduino UNO (PIN A4,A5) e poi ciascuno EVERY (A4,A5) sfruttando il protocollo I2c. Ad ogni EVERY sono collegati da 1 a 5 pulsanti (con resistenza 10 K) ed ogni pulsante collegato al 5V del EVERY ed inoltre ci sono sempre da 1 a 5 LED per ogni EVERY (con resistenza da 200 ohm) i led e i pulsanti sembrano funzionare come da protocollo. Ora dovrei inserire in ogni EVERY un sensore BME680 (https://cdn-learn.adafruit.com/downloads/pdf/adafruit-mics5524-gas-sensor-breakout.pdf) il problema che questo sensore usa SDA e SCL che sarebbero i pin A4 e A5 che già sto usando per lo scambio informazioni tra master e slave I2C. Secondo voi è possibile collegarlo, senza creare danni allo scambio dati master slave o esiste un altro modo?

Grazie

Ti sbagli, il sensore allegato ha uscita analogica, sente 5 tipi di gas ma non è in grado di fornirti la proporzione, è poco più che spazzatura

Scusa il link è sbagliato ma il nome del sensore è giusto ecco qui il link corretto:

https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas

In ogni iic bus deve esserci un solo master, nel tuo caso UNO, puoi collegare un solo sensore di pressione perché non puoi impostare l'indirizzo che vuoi sul sensore, se si potesse variare l'indirizzo tra 40 indirizzi potresti mettere 40 sensori ma comunque potrebbe leggerli solo il master, se vuoi che ogni slave legga il suo sensore devi avere un bus iic dedicato master su ogni every al quale è collegato il suo sensore, il bus iic è semplice, è possibile emularlo via software con 2 pin normali, andrà a velocità più bassa ma funziona lo stesso

@chpiero: Ti ho già chiesto due anni fa di farlo, ma .. non lo hai fatto, ripeto la richiesta ... come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà ulteriornmente (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

Scusami, ho letto il punto 15 ed ho fatto la mia presentazione.

Grazie,

Piero

semplice.... colleghi i sensori ad ogni nano in SPI.
Semmai vedo che potresti avere dei problemi sul bus I2C, visto che è un BUS fatto per distanze minime

Infatti io userei rs485 per connettere le macchine e iic solo macchina-sensore

A dir la verita si potrebbe provare pjon tra le macchine

Oppure, volendo imparare qualcosa di nuovo, si potrebbero collegare in daisy chain le seriali a fare che ogni macchina faccia da ripetitore alle altre
Questo richiede che il traffico complessivo sia limitato, ma magari è già così

Grazie per le risposte,

L’idea generale è quella di avere un controller che mi gestisca i pulsanti/interruttori di una possibile casa , per capirci dovrebbe risiedere all’interno della scatola dove vengono montanti i pulsanti e il master poi con uno shield Ethernet. Il master dovrebbe avere a bordo anche un codice che traduce i dati provenienti dalla rete i2c o altra e tradurli in messaggi mqtt da inviare ad un impianto domotico (per esempio home assistant). La mia idea è quella di collegare fino ad un massimo di 5 pulsanti , 5 led e 1 sensore di temperatura/umidità/pressione e gas.

Ho già provveduto a progettare una schedina pcb che gestisca pulsanti, led con resistenze appropriate. Mi mancherebbe di finire di scrivere il codice ottimizzato.

Ho letto un pò in giro ed ho visto che forse la soluzione migliore è quella rs485.

Ora però essendo alle prime armi con arduino, chiedo qualche suggerimento. A disposizione per il test ho un Arduino UNO (che vorrei come master) e 3 arduino EVERY. Per comunicare tra loro posso collegarli tramite i pin RX TX senza comprare nessun altro dispositivo?

La mia rete è formata da 4 cavi, in due vorrei far passare i dati e gli altri due li tengo per l'alimentazione (Vin e GND).

Rs485 serve un adattatore (hardware) per ogni macchina

E devi istanziare una seriale software

Ti direi di provare a collegare tra di loro due sole macchine con una seriale sw, mi raccomando, inserisci sulle seriali delle resistenze di sicurezza, adesso cerco il link a dove ne abbiamo parlato

Trovato
https://forum.arduino.cc/t/input-pullup-o-resistore/1020634

Prova inoltre a dare uno sguardo a "era stagione di pin remoti" che offre alcuni esempi software
Usali solo come ispirazione, e vedi se capendoli ti vengono delle idee...

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