Innholdsfortegnelse:

Bringebær PI Flere I2C -enheter: 3 trinn
Bringebær PI Flere I2C -enheter: 3 trinn

Video: Bringebær PI Flere I2C -enheter: 3 trinn

Video: Bringebær PI Flere I2C -enheter: 3 trinn
Video: BTT GTR v1.0/M5 v1.0 - Basics 2024, November
Anonim
Bringebær PI Flere I2C -enheter
Bringebær PI Flere I2C -enheter
Bringebær PI Flere I2C -enheter
Bringebær PI Flere I2C -enheter

Frustrert fordi du ikke kan bruke flere av de samme I2C -enhetene i prosjektet ditt. Du trenger ikke å bruke sakte multiplexere. Den siste raspbian -kjernen støtter opprettelsen av flere I2C -busser ved hjelp av GPIO -pins. Denne løsningen er superrask.

Trinn 1: Noen Shell -kommandoer

Noen Shell -kommandoer
Noen Shell -kommandoer

Koble til en av i2c -enhetene dine mens bringebærpi er av, start bringebærpien og kjør

sudo i2cdetect -y 1

Du vil se et bord som i vedleggsfiguren. Jeg har festet en BMP280 temp og barometrisk trykksensor. I2c -adressen er 0x76 i henhold til tabellen. Legg merke til denne adressen.

Gjør dette for alle i2c -enhetene dine.

Trinn 2: Sak 1: I2c -enheter har samme adresse

Sak 1: I2c -enheter har samme adresse
Sak 1: I2c -enheter har samme adresse

Dette var alltid den problematiske saken. En i2c -buss kan håndtere flere enheter, men de bør ha forskjellige i2c -adresser. Noen i2c -enheter har hoppere for å angi andre i2c -adresser, men mange gjør det ikke. I dette tilfellet kan du bruke en i2c multiplexer (maskinvare) til å rotere i2c SDA (Data) og SCL (Clock), eller du kan opprette en ekstra i2c -buss eller mer.

Jeg skal lage to tilleggsbusser, nl buss 3 og 4

Åpne cli og kjør

cd /oppstart

sudo nano config.txt

Legg til følgende kodelinje, helst i delen der spi og i2c er aktivert.

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

Denne linjen vil opprette en ekstra i2c -buss (buss 4) på GPIO 23 som SDA og GPIO 24 som SCL (GPIO 23 og 24 er standard)

Legg også til følgende linje for å lage i2c -buss 3

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

GPIO 17 vil være SDA og GPIO 27 vil være SCL for i2c buss 4.

Rør kontroll X for å gå ut.

Merknad om bussnummerering og rekkefølge:

Bruk aldri buss 0 og 2, den er bruk for andre ting i brettet som eprom på hatter osv

For raspbian -utgivelsen i april 2019:

Du bør alltid starte med den høyeste bussen (buss 4 i dette tilfellet) i config.txt og gå videre til den laveste bussen (buss 3).

Den laveste bussen må alltid være buss 3

Hvis du trenger 5 ekstra busser, må bussene være i størrelsesorden 7, 6, 5, 4, 3

Dette problemet om bussordre var ikke der da denne instruksjonsboken opprinnelig ble skrevet. Det virker som om det ble gjort endringer i kjernen.

Slå av PI -en, slå den av. Koble i2c -enhetene dine til buss 4 (SDA til GPIO 23 og SCL til GPIO 24) og den andre til i2c -buss 3 (SDA til GPIO 17 og SCL til GPIO 27).

Slå på pi.

Løpe:

sudo i2cdetect -l (liten bokstav L)

Du vil nå se at i2c buss 3 og 4 også er oppført. Kjør også:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Nå kan du bruke sensoren din i programmeringsspråket. Husk å angi riktige i2c -busser.

Attach er et eksempel på den populære BMP280 temperatur- og trykksensoren. Ingen multiplexer kan lese 2 BMP280 -er så fort.

Et eksempel på 2 Sensirion SDP 810 sensorer er også vedlagt. Jobber igjen mye raskere enn multiplexeren jeg brukte tidligere

Jeg opprettet python -kode for å lese to nye BMP388 fra adafruit.

Jeg kan også legge til andre sensorer i fremtiden på

Trinn 3: Sak 2: forskjellige I2c -adresser

Enkel. i2c er en buss. En bussformål er å kommunisere med flere enheter. Koble enhetene parallelt med den samme i2c -bussen. Du kan bruke buss en.

Løpe:

sudo i2cdetect -y 1

Du vil se enhetene oppført.

Anbefalt: