Sadržaj:

Raspberry PI više I2C uređaja: 3 koraka
Raspberry PI više I2C uređaja: 3 koraka

Video: Raspberry PI više I2C uređaja: 3 koraka

Video: Raspberry PI više I2C uređaja: 3 koraka
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Novembar
Anonim
Raspberry PI više I2C uređaja
Raspberry PI više I2C uređaja
Raspberry PI više I2C uređaja
Raspberry PI više I2C uređaja

Frustrirano jer ne možete koristiti više istih I2C uređaja u svom projektu. Nema potrebe za upotrebom sporih multipleksera. Najnovije raspbian kernel podržava stvaranje više I2C sabirnica koristeći GPIO pinove. Ovo rješenje je super brzo.

Korak 1: Neke naredbe ljuske

Neke naredbe ljuske
Neke naredbe ljuske

Povežite jedan od svojih i2c uređaja dok je vaš malina pi, pokrenite malinu pi i pokrenite

sudo i2cdetect -y 1

Vidjet ćete tablicu kao na priloženoj slici. Priložio sam senzor temperature i barometarskog pritiska BMP280. I2c adresa je 0x76 prema tablici. Zapamtite ovu adresu.

Učinite to za sve svoje i2c uređaje.

Korak 2: Prvi slučaj: I2c uređaji imaju istu adresu

Prvi slučaj: I2c uređaji imaju istu adresu
Prvi slučaj: I2c uređaji imaju istu adresu

Ovo je uvijek bio problematičan slučaj. Sabirnica i2c može rukovati s više uređaja, ali oni bi trebali imati različite i2c adrese. Neki i2c uređaji imaju kratkospojnike za postavljanje drugih i2c adresa, ali mnogi nemaju. U ovom slučaju možete koristiti i2c multiplekser (hardver) za rotiranje i2c SDA (podaci) i SCL (sat) ili možete stvoriti dodatnu i2c sabirnicu ili više.

Napravit ću dvije dodatne magistrale, nl sabirnice 3 i 4

Otvorite cli i pokrenite

cd /boot

sudo nano config.txt

Dodajte sljedeći red koda, po mogućnosti u odjeljak u kojem su omogućeni spi i i2c.

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

Ova linija će stvoriti dodatnu i2c sabirnicu (sabirnica 4) na GPIO 23 kao SDA i GPIO 24 kao SCL (GPIO 23 i 24 su zadane vrijednosti)

Dodajte i sljedeći redak za kreiranje i2c sabirnice 3

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

GPIO 17 bit će SDA, a GPIO 27 SCL za i2c sabirnicu 4.

Tipkom X za izlaz.

Napomena o numeraciji i redoslijedu sabirnica:

Nikada ne koristite sabirnice 0 i 2, koristi se za druge stvari na ploči, poput eproma na šeširima itd

Za raspbansko izdanje u aprilu 2019.:

Uvijek biste trebali početi s najvišom sabirnicom (u ovom slučaju sabirnica 4) u vašem config.txt -u i raditi do najniže sabirnice (sabirnica 3).

Najniži autobus mora uvijek biti autobus 3

Ako vam je potrebno 5 dodatnih autobusa, autobusi bi trebali biti bi u redoslijedu 7, 6, 5, 4, 3

Ovo pitanje o naručivanju autobusa nije postojalo kada je ovaj Instructable izvorno napisan. Čini se da su u kernelu napravljene promjene.

Isključite svoj PI, isključite ga. Povežite svoje i2c uređaje na sabirnicu 4 (SDA na GPIO 23 i SCL na GPIO 24), a drugu na i2c sabirnicu 3 (SDA na GPIO 17 i SCL na GPIO 27).

Uključite pi.

Trčanje:

sudo i2cdetect -l (mala slova L)

Sada ćete vidjeti da su i2c sabirnice 3 i 4 također navedene. Takođe pokrenite:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Sada možete koristiti svoj senzor u svom programskom jeziku. Ne zaboravite navesti ispravne sabirnice i2c.

Attach je primjer popularnog BMP280 osjetnika temperature i pritiska. Nijedan multiplekser ne može pročitati 2 BMP280 tako brzo.

U prilogu je i primjer 2 senzora Sensirion SDP 810. Opet radi mnogo brže od multipleksera koji sam koristio u prošlosti

Napravio sam python kod za čitanje dva nova BMP388 iz adafruit -a.

U budućnosti mogu dodati i druge senzore na

Korak 3: Slučaj 2: Različite I2c adrese

Jednostavno. i2c je autobus. Vlasnik sabirnice treba komunicirati s više uređaja. Spojite uređaje paralelno na istu i2c sabirnicu. Možete koristiti autobus jedan.

Trčanje:

sudo i2cdetect -y 1

Vidjet ćete navedene uređaje.

Preporučuje se: