Obsah:
Video: Více zařízení I2C Raspberry PI: 3 kroky
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
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
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
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í.