Obsah:

Více zařízení I2C Raspberry PI: 3 kroky
Více zařízení I2C Raspberry PI: 3 kroky

Video: Více zařízení I2C Raspberry PI: 3 kroky

Video: Více zařízení I2C Raspberry PI: 3 kroky
Video: Arduino návody | Raspberry Pi: I2C modul BMP180 2024, Červenec
Anonim
Více zařízení I2C Raspberry PI
Více zařízení I2C Raspberry PI
Více zařízení I2C Raspberry PI
Více zařízení I2C Raspberry PI

Frustrováno, protože ve svém projektu nemůžete použít násobky stejných I2C zařízení. Není třeba používat pomalé multiplexory. Nejnovější jádro raspbian podporuje vytváření více sběrnic I2C pomocí pinů GPIO. Toto řešení je super rychlé.

Krok 1: Některé příkazy Shell

Některé příkazy Shell
Některé příkazy Shell

Připojte jedno ze svých zařízení i2c, když je váš Raspberry Pi vypnutý, spusťte Raspberry Pi a spusťte

sudo i2cdetect -y 1

Uvidíte tabulku jako na přiloženém obrázku. Připojil jsem snímač teploty a barometrického tlaku BMP280. Adresa i2c je podle tabulky 0x76. Všimněte si této adresy.

Udělejte to pro všechna vaše zařízení i2c.

Krok 2: Případ první: Zařízení I2c mají stejnou adresu

Případ první: Zařízení I2c mají stejnou adresu
Případ první: Zařízení I2c mají stejnou adresu

To byl vždy ten problematický případ. Sběrnice i2c zvládne více zařízení, ale měla by mít různé adresy i2c. Některá zařízení i2c mají propojky pro nastavení dalších adres i2c, ale mnoho ne. V tomto případě můžete použít multiplexor i2c (hardware) k otáčení i2c SDA (data) a SCL (hodiny) nebo můžete vytvořit další sběrnici i2c nebo více.

Vytvořím dva další autobusy, nl bus 3 a 4

Otevřete cli a spusťte

cd /boot

sudo nano config.txt

Přidejte následující řádek kódu, nejlépe v sekci, kde je povolen spi a i2c.

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

Tento řádek vytvoří další sběrnici i2c (sběrnice 4) na GPIO 23 jako SDA a GPIO 24 jako SCL (výchozí jsou GPIO 23 a 24)

Přidejte také následující řádek a vytvořte sběrnici i2c 3

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

GPIO 17 bude SDA a GPIO 27 bude SCL pro sběrnici 4 i2c.

Chcete -li ukončit řízení X, změňte jej.

Poznámka k číslování a objednávce autobusů:

Nikdy nepoužívejte sběrnici 0 a 2, používá se pro jiné věci na desce, jako je eprom na kloboucích atd

Pro vydání raspbian z dubna 2019:

Vždy byste měli začít s nejvyšší sběrnicí (v tomto případě Bus 4) v souboru config.txt a postupovat až po nejnižší sběrnici (sběrnice 3).

Nejnižší sběrnice musí být vždy sběrnice 3

Pokud potřebujete 5 dalších autobusů, autobusy musí být bi v pořadí 7, 6, 5, 4, 3

Když byl tento Instructable původně napsán, tento problém v objednávce autobusu nebyl. Vypadá to, že v jádře byly provedeny změny.

Vypněte PI, vypněte jej. Připojte svá zařízení i2c na sběrnici 4 (SDA na GPIO 23 a SCL na GPIO 24) a druhou na i2c sběrnici 3 (SDA na GPIO 17 a SCL na GPIO 27).

Zapněte pí.

Běh:

sudo i2cdetect -l (malá písmena L)

Nyní uvidíte, že je uvedena také sběrnice 3 a 4 sběrnice i2c. Také spusťte:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Nyní můžete senzor používat ve svém programovacím jazyce. Nezapomeňte zadat správné sběrnice i2c.

Attach je příkladem oblíbeného snímače teploty a tlaku BMP280. Žádný multiplexer nedokáže přečíst tak rychle 2 BMP280.

Je také připojen příklad 2 senzorů Sensirion SDP 810. Opět funguje mnohem rychleji než multiplexor, který jsem používal v minulosti

Vytvořil jsem kód pythonu pro čtení dvou nových BMP388 z adafruit.

V budoucnu mohu také přidat další senzory na

Krok 3: Případ 2: Různé adresy I2c

Jednoduchý. i2c je autobus. Účelem sběrnice je komunikovat s více zařízeními. Připojte zařízení paralelně ke stejné sběrnici i2c. Můžete použít autobus jeden.

Běh:

sudo i2cdetect -y 1

Zobrazí se uvedená zařízení.

Doporučuje: