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, Studeni
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. Najnoviji raspbian kernel podržava stvaranje više I2C sabirnica pomoću GPIO pinova. Ovo rješenje je super brzo.

Korak 1: Neke naredbe ljuske

Neke naredbe ljuske
Neke naredbe ljuske

Spojite jedan od svojih i2c uređaja dok je vaš malina pi, pokrenite malinin pi i pokrenite

sudo i2cdetect -y 1

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

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

2. korak: 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 tom 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 dva dodatna autobusa, nl sabirnice 3 i 4

Otvorite cli i trčite

cd /boot

sudo nano config.txt

Dodajte sljedeći redak 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 će linija stvoriti dodatnu i2c sabirnicu (sabirnica 4) na GPIO 23 kao SDA i GPIO 24 kao SCL (GPIO 23 i 24 su zadane vrijednosti)

Također dodajte sljedeći redak za stvaranje 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 numeriranju 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 izdanje raspbian u travnju 2019.:

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

Najniži autobus uvijek mora biti autobus 3

Ako vam je potrebno 5 dodatnih autobusa, autobusi moraju biti 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. Spojite 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đer pokrenite:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

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

Attach je primjer popularnog BMP280 osjetnika temperature i tlaka. 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 adafruta.

Možda ću u budućnosti dodati i druge senzore na

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

Jednostavan. 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čeni: