Sommario:
- Passaggio 1: alcuni comandi della shell
- Passaggio 2: Caso uno: i dispositivi I2c hanno lo stesso indirizzo
- Passaggio 3: Caso 2: Indirizzi I2c diversi
Video: Dispositivi I2C multipli Raspberry PI: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Frustrato perché non puoi utilizzare multipli degli stessi dispositivi I2C nel tuo progetto. Non è necessario utilizzare multiplexer lenti. L'ultimo kernel raspbian supporta la creazione di più bus I2C utilizzando i pin GPIO. Questa soluzione è super veloce.
Passaggio 1: alcuni comandi della shell
Collega uno dei tuoi dispositivi i2c mentre il tuo Raspberry Pi è acceso, avvia il tuo Raspberry Pi ed esegui
sudo i2cdetect -y 1
Vedrai una tabella come nella figura allegata. Ho collegato un sensore di temperatura e pressione barometrica BMP280. L'indirizzo i2c è 0x76 secondo la tabella. Prendi nota di questo indirizzo.
Fallo per tutti i tuoi dispositivi i2c.
Passaggio 2: Caso uno: i dispositivi I2c hanno lo stesso indirizzo
Questo è sempre stato il caso problematico. Un bus i2c può gestire più dispositivi, ma dovrebbero avere indirizzi i2c diversi. Alcuni dispositivi i2c hanno ponticelli per impostare altri indirizzi i2c, ma molti no. In questo caso puoi usare un multiplexer i2c (hardware) per ruotare i2c SDA (Dati) e SCL (Clock) oppure puoi creare un bus i2c aggiuntivo o più.
Creerò due bus aggiuntivi, nl bus 3 e 4
Apri il cli e corri
cd/boot
sudo nano config.txt
Aggiungi la seguente riga di codice, preferibile nella sezione in cui spi e i2c sono abilitati.
dtoverlay=i2c-gpio, bus=4, i2c_gpio_delay_us=1, i2c_gpio_sda=23, i2c_gpio_scl=24
Questa linea creerà un bus i2c aggiuntivo (bus 4) su GPIO 23 come SDA e GPIO 24 come SCL (GPIO 23 e 24 sono i valori predefiniti)
Aggiungi anche la seguente riga per creare il bus i2c 3
dtoverlay=i2c-gpio, bus=3, i2c_gpio_delay_us=1, i2c_gpio_sda=17, i2c_gpio_scl=27
GPIO 17 sarà l'SDA e GPIO 27 sarà l'SCL per il bus i2c 4.
Digitare il controllo X per uscire.
Nota sulla numerazione e l'ordine degli autobus:
Non usare mai il bus 0 e 2, è usato per altre cose nella scheda come eprom su cappelli ecc
Per la versione raspbian di aprile 2019:
Dovresti sempre iniziare con il bus più alto (Bus 4 in questo caso) nel tuo config.txt e lavorare fino al bus più basso (bus 3).
L'autobus più basso deve essere sempre l'autobus 3
Se hai bisogno di 5 bus extra, i bus devono bi nell'ordine di 7, 6, 5, 4, 3
Questo problema sull'ordine del bus non era presente quando questo Instructable è stato originariamente scritto. Sembra che siano state apportate modifiche al kernel.
Spegni il tuo PI, spegnilo. Collega i tuoi dispositivi i2c al bus 4 (SDA a GPIO 23 e SCL a GPIO 24) e l'altro al bus i2c 3 (SDA a GPIO 17 e SCL a GPIO 27).
Accendi il pi.
Correre:
sudo i2cdetect -l (L minuscola)
Ora vedrai che sono elencati anche i bus i2c 3 e 4. Esegui anche:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
Ora puoi usare il tuo sensore nel tuo linguaggio di programmazione. Ricorda di specificare i bus i2c corretti.
Attach è un esempio per il popolare sensore di temperatura e pressione BMP280. Nessun multiplexer può leggere 2 BMP280 così velocemente.
Si allega anche un esempio di 2 sensori Sensirion SDP 810. Anche in questo caso funziona molto più velocemente del multiplexer che ho usato in passato
Ho creato il codice Python per leggere due nuovi BMP388 da adafruit.
Potrei anche aggiungere altri sensori in futuro a
Passaggio 3: Caso 2: Indirizzi I2c diversi
Semplice. i2c è un autobus. Uno scopo del bus è quello di comunicare con più dispositivi. Collegare i dispositivi in parallelo allo stesso bus i2c. Puoi usare l'autobus uno.
Correre:
sudo i2cdetect -y 1
Vedrai i dispositivi elencati.
Consigliato:
Arduino Collega più dispositivi I2C: 6 passaggi
Arduino Connect Multiple I2C Devices: In questo tutorial impareremo come collegare diversi moduli con una connessione I2C ad arduino. Guarda il video! Nel nostro caso useremo 4 display OLED come esempio, ma puoi usare qualsiasi altro modulo I2C/ sensori se lo desideri. Nota: 4 display OLED co
Dadi elettrici multipli sfaccettati: 3 passaggi
Dadi elettrici a più sfaccettature: ci sono molti progetti che ti insegnano come realizzare un dado elettrico o LED sul sito di istruzioni, ma questo progetto è diverso, questo dado elettrico può essere regolato in diverse quantità di sfaccettature. Puoi scegliere il lato dei dadi da solo, t
Tutorial: come Arduino controlla più dispositivi con lo stesso indirizzo utilizzando il multiplexer I2C TCA9548A: 3 passaggi
Tutorial: come Arduino controlla più dispositivi con lo stesso indirizzo utilizzando il multiplexer I2C TCA9548A: Descrizione: Il modulo multiplexer I2C TCA9548A consente di collegare dispositivi con lo stesso indirizzo I2C (fino a 8 I2C con lo stesso indirizzo) collegati a un microcontrollore. Il multiplexer funge da gatekeeper, inviando i comandi al set selezionato di
Sensori multipli BMP280 in Arduino Uno tramite SPI: 6 passaggi
Sensori BMP280 multipli in Arduino Uno tramite SPI: In questo tutorial collegheremo tre BMP280 su Arduino Uno tramite SPI ma potresti connettere fino a otto BMP280 su Uno utilizzando le porte digitali da D3 a D10 come nSS (Slave Select) per ciascun sensore. Il risultato dei campioni di pressione atmosferica misurati dal B
Sensori di temperatura IR multipli - MLX90614: 4 passaggi
Sensori di temperatura IR multipli - MLX90614: questa è una guida rapida su come configurare più sensori di temperatura senza contatto MLX90614B tramite il bus I2C con un Arduino uno e visualizzare le letture sul monitor seriale di Arduino IDE. Sto usando le schede pre-costruite, ma se acquisti il sensore b