Ciao a tutti,
Io sto creando una stazione meteo con arduino. Inizialmente utilizzavo arduino Uno, ma dopo aver riscontrato problemi di memoria mi sono rivolto ad arduino Mega 2560. La maggior parte dei problemi riscontrati l'ho risolta da solo, ma questo problema sembra irrisolvibile... Ho un sensore di pressione (BMP180) e un display OLED da 0.96'', entrambi i moduli usufruiscono di una connessione a interfaccia I2c, ma non so come farli funzionare dato che andrebbero collegati agli stessi pin (20 - SDA; 21 - SCL). Al momento ho provato a collegare tutti i pin SDA e SCl in parallelo e ho fatto sì che venga alimentato (collegando per mezzo di un transistor il GND) un modulo alla volta, ma non pare funzionare. Ho fatto parecchie ricerche, ma non sono riuscito a capire molto dato che non sono un esperto del gergo tecnico, perciò chiedo una risposta comprensibile anche dai non esperti in materia .
prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...
... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiIN 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 tutto il succitato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto.
Allora...
Io al momento mi ritrovo con questo schema con l'unica differenza che ogni collegamento al GND uscente da entrambe i moduli viene comandato con due transistor che sblocco quando ho bisogno di utilizzare il modulo ad esso connesso. Questa possibile soluzione che ho tentato già un mese fa non funziona, quindi ho fatto alcune ricerche ma non ho capito molto. Tramite il link di @gpb01 ho capito che sono necessarie delle resistenze di pull-up, il problema è che non ho capito dove vanno inserite . Dallo schema di questo link ho capito che va inserita anche una connessione a 5V a SCL o SDA... Potrei avere frainteso... Inoltre non ho capito quale dei dispositivi è il master e quale lo slave (suppongo arduino il master e i moduli gli slave). Il principio del funzionamento del bus I2c l'ho capito, ma dopo che ho capito anche come fare i collegamenti elettrici ho il problema dello sketch, che forse è correto ma i collegamenti elettrici non ne permettevano il funzionamento. Qui ho riassunto i collegamenti che ho attualmente escludendo i transistor (non sapevo come disegnarli )
Jamoncerrano
Meglio se metti i link ai device I2C che hai, così ti possiamo suggerire meglio i collegamenti.
Comunque in linea di principio l'I2C è un bus i cui dispositivi sono tutti collegati in parallelo sulle linee SDA e SCL, ed è anche bene che siano sempre alimentati. L'unico problema che potrebbe presentarti è se i 2 device hanno indirizzi uguali, improbabile nel tuo caso ma non è detto.
Inoltre ho visto che esistono diverse versioni dell'BMP180, alcune potrebbero non essere adatte a lavorare con l'Arduino Mega, per via delle diverse tensioni in gioco (3,3 e 5 V).
... esatto ... purtroppo su Arduino MEGA (... contrariamente ad Arduino UNO o Leonardo) hanno montato di base le resistenze di pull-up collegate verso il +5V quindi ... utilizzando sensori a 3.3V si rischia di danneggiarli.
Rimuovi immediatamente i transistor che non ti servono , i collegamenti in linea di principio sono quelli del post #6
Se lo schema elettrico del post #9 è quello reale del tuo modulo e se lo schermo è quello che immagino io, (sarebbe comodo inserire i link come ti ha detto @ilguargua) , non devi mettere le resistenze di pull-up , nel caso di tale schema sono R1 e R2.
Per questo schema, quello che serve è un convertitore da 3,3 a 5v per SCL e SDA e collegarlo al 3,3 del mega e non al 5V . Insisto per caricare i collegamenti ai moduli effettivi.
Infatti l'arduino è il master e gli altri sono gli schiavi e la selezione del dispositivo sarà fatta dal codice tramite l'indirizzo I2C. "pre-programmato" in ogni ddevice , niente transistor.
@jamoncerrano : i "convertitori da 3,3 a 5v e viceversa per SCL e SDA" sono QUESTI qui. C'è da segnalare che, se non si ha fretta, se li prendi simili su AliExpress con la metà del prezzo di uno di Adafruit, ne prendi dieci
Nota che sono proprio adatti al bus I2C infatti, iin caso di mancanza di collegamento, hanno comunque le resistenze di pull-up incorporate ed il segnale NON rimane flottante.
Ciao a tutti e grazie delle risposte, ho fatto varie prove sia con il modulo BMP180 che con il monitor OLED ed entrambi funzionano singolarmente.
@gonpezzi grazie mille per la dritta! era una mia idea che pensavo potesse funzionare, in effetti ripensandoci su in parecchi progetti ho visto monitor LCD che utilizzano connessioni I2c e anche sensori anch'essi usufruenti della connessione I2c sugli stessi collegamenti SDA e SCL... Quindi li cavo immediatamente. @gpb01 Il problema dei diversi livelli di tensione non l'ho ben capito, però tutti i moduli sono collegati ad un'alimentazione a 5V. I moduli funzionano anch'essi a 5V.
Grazie ancora a tutti per le risposte!
Jamoncerrano
P.S. Dovendo frequentare le scuole non sono disponibile a tutte le ore, principalmente il pomeriggio
Buongiorno a tutti,
scusate se riapro la conversazione, ma per motivi scolastici non sono riuscito a lavorare con arduino. Ho notato che il mio barometro (BMP180) lavora a 3.3V, però io ho 5V di base su questo circuito.
Basta collegare l'alimentazione ai 3.3V e il GND al GND comune o devo fare altri passaggi?
Allego lo sketch nel caso possa essere utile stazione_meteo.ino (12,4 KB)
Devi vedere le specifiche della breakout board che usi dove è montato il BMP180 ...
... normalmente queste schedine hanno già a bordo i necessari regolatori di tensione, però, se metti il link al prodotto che usi (cosa che ti è già stata chiesta), si può controllare.
@brunello22: Le solite breackout board "schifezza" disegnate con i piedi con componenti di pessima qualità.
Hanno montato un regolatore di tensione, così la puoi alimentare a 5V, peccato che poi, sul bus I2C debba lavorare a 3.3V (ed hanno messo a bordo le pull-up verso i 3.3V del loro regolatore).
In pratica, se la usi DA SOLA e su una MCU della vecchia serie AVR, probabilmente funziona (anche se, con 3.3V, siamo al limite per il livello HIGH), con le nuove MCU AVR, come il ATmega4809 ... già non va più (è più alto il minimo del livello HIGH ... minimo VCC * 0.7).