INHOUDSOPGAWE:

Framboos PI Meervoudige I2C -toestelle: 3 stappe
Framboos PI Meervoudige I2C -toestelle: 3 stappe

Video: Framboos PI Meervoudige I2C -toestelle: 3 stappe

Video: Framboos PI Meervoudige I2C -toestelle: 3 stappe
Video: Raspberry Pi Gesture Detection with an affordable APDS-9960 I2C sensor and Python 3 #shorts 2024, Julie
Anonim
Framboos PI Meervoudige I2C -toestelle
Framboos PI Meervoudige I2C -toestelle
Framboos PI Meervoudige I2C -toestelle
Framboos PI Meervoudige I2C -toestelle

Gefrustreerd omdat u nie veelvoude van dieselfde I2C -toestelle in u projek kan gebruik nie. U hoef nie stadige multiplexers te gebruik nie. Die nuutste raspbian -kern ondersteun die skepping van verskeie I2C -busse met GPIO -penne. Hierdie oplossing is super vinnig.

Stap 1: 'n paar Shell -opdragte

Sommige Shell -opdragte
Sommige Shell -opdragte

Koppel een van u i2c -toestelle terwyl u framboos pi is, begin u framboos pi en hardloop

sudo i2cdetect -y 1

U sal 'n tabel sien, soos in die aangehegte figuur. Ek het 'n BMP280 temp en barometriese druksensor aan. Die i2c -adres is 0x76 volgens die tabel. Let op hierdie adres.

Doen dit vir al u i2c -toestelle.

Stap 2: Geval een: I2c -toestelle het dieselfde adres

Geval een: I2c -toestelle het dieselfde adres
Geval een: I2c -toestelle het dieselfde adres

Dit was altyd die problematiese geval. 'N i2c -bus kan verskeie toestelle hanteer, maar hulle moet verskillende i2c -adresse hê. Sommige i2c -toestelle het springers om ander i2c -adresse in te stel, maar baie nie. In hierdie geval kan u 'n i2c -multiplexer (hardeware) gebruik om die i2c SDA (Data) en SCL (Clock) te draai, of u kan 'n ekstra i2c -bus of meer skep.

Ek sal twee ekstra busse, nl bus 3 en 4, skep

Maak die cli oop en hardloop

cd /boot

sudo nano config.txt

Voeg die volgende reël kode by, verkieslik in die afdeling waar spi en i2c aangeskakel is.

dtoverlay = i2c-gpio, bus = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

Hierdie lyn sal 'n addisionele i2c -bus (bus 4) op GPIO 23 as SDA en GPIO 24 as SCL skep (GPIO 23 en 24 is standaard)

Voeg ook die volgende reël by om i2c -bus 3 te skep

dtoverlay = i2c-gpio, bus = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

GPIO 17 sal die SDA wees en GPIO 27 sal die SCL vir i2c bus 4 wees.

Draai beheer X om uit te gaan.

Opmerking oor die bus nommer en volgorde:

Gebruik nooit bus 0 en 2 nie; dit kan gebruik word vir ander dinge op die bord, soos eprom op hoede, ens

Vir die raspbian -vrystelling van April 2019:

U moet altyd begin met die hoogste bus (Bus 4 in hierdie geval) in u config.txt en deurwerk na die laagste bus (bus 3).

Die laagste bus moet altyd bus 3 wees

As u 5 ekstra busse benodig, moet die busse in die orde van 7, 6, 5, 4, 3 wees

Hierdie probleem oor die busbestelling was nie daar toe hierdie instruksies oorspronklik geskryf is nie. Dit lyk asof veranderinge aan die kern aangebring is.

Skakel jou PI af, skakel dit af. Koppel u i2c -toestelle aan bus 4 (SDA na GPIO 23 en SCL na GPIO 24) en die ander aan i2c -bus 3 (SDA na GPIO 17 en SCL na GPIO 27).

Skakel die pi aan.

Hardloop:

sudo i2cdetect -l (kleinletters L)

U sal nou sien dat i2c bus 3 en 4 ook gelys word. Voer ook uit:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Nou kan u u sensor in u programmeertaal gebruik. Onthou om die korrekte i2c -busse te spesifiseer.

Attach is 'n voorbeeld vir die gewilde BMP280 temperatuur- en druksensor. Geen multiplexer kan 2 BMP280's so vinnig lees nie.

'N Voorbeeld van 2 Sensirion SDP 810 -sensors is ook aangeheg. Werk weer baie vinniger as die multiplexer wat ek in die verlede gebruik het

Ek het python -kode geskep om twee nuwe BMP388's van adafruit te lees.

Ek kan ook in die toekoms ander sensors by https://github.com/JJSlabbert/Raspberry_PI_i2C_conficts voeg

Stap 3: Geval 2: Verskillende I2c -adresse

Eenvoudig. i2c is 'n bus. Die doel van 'n bus is om met verskeie toestelle te kommunikeer. Koppel die toestelle parallel aan dieselfde i2c -bus. U kan bus een gebruik.

Hardloop:

sudo i2cdetect -y 1

U sal die toestelle op die lys sien.

Aanbeveel: