Sommario:

Dispositivi I2C multipli Raspberry PI: 3 passaggi
Dispositivi I2C multipli Raspberry PI: 3 passaggi

Video: Dispositivi I2C multipli Raspberry PI: 3 passaggi

Video: Dispositivi I2C multipli Raspberry PI: 3 passaggi
Video: #369 Definitive Guide to Attaching Sensors to the Raspberry Pi (Tutorial) 2024, Dicembre
Anonim
Dispositivi I2C multipli Raspberry PI
Dispositivi I2C multipli Raspberry PI
Dispositivi I2C multipli Raspberry PI
Dispositivi I2C multipli Raspberry PI

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

Alcuni comandi di shell
Alcuni comandi di 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

Caso uno: i dispositivi I2c hanno lo stesso indirizzo
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: