Obsah:

Viaceré zariadenia I2C Raspberry PI: 3 kroky
Viaceré zariadenia I2C Raspberry PI: 3 kroky

Video: Viaceré zariadenia I2C Raspberry PI: 3 kroky

Video: Viaceré zariadenia I2C Raspberry PI: 3 kroky
Video: МКС Monster8 — Основы 2024, Júl
Anonim
Viaceré zariadenia I2C Raspberry PI
Viaceré zariadenia I2C Raspberry PI
Viaceré zariadenia I2C Raspberry PI
Viaceré zariadenia I2C Raspberry PI

Frustrované, pretože vo svojom projekte nemôžete použiť násobky rovnakých zariadení I2C. Nie je potrebné používať pomalé multiplexory. Najnovšie jadro raspbian podporuje vytváranie viacerých zberníc I2C pomocou pinov GPIO. Toto riešenie je super rýchle.

Krok 1: Niektoré škrupinové príkazy

Niektoré príkazy Shell
Niektoré príkazy Shell

Pripojte jedno zo svojich zariadení i2c, kým je váš Raspberry Pi vypnutý, spustite Raspberry Pi a spustite ho

sudo i2cdetect -y 1

Uvidíte tabuľku ako na priloženom obrázku. Pripojil som snímač teploty a barometrického tlaku BMP280. Adresa i2c je 0x76 podľa tabuľky. Všimnite si túto adresu.

Vykonajte to pre všetky svoje zariadenia i2c.

Krok 2: Prípad prvý: Zariadenia I2c majú rovnakú adresu

Prípad prvý: Zariadenia I2c majú rovnakú adresu
Prípad prvý: Zariadenia I2c majú rovnakú adresu

Vždy to bol ten problematický prípad. Zbernica i2c môže pracovať s viacerými zariadeniami, ale mali by mať rôzne adresy i2c. Niektoré zariadenia i2c majú prepojky na nastavenie ďalších adries i2c, ale mnohé nie. V tomto prípade môžete použiť multiplexor i2c (hardvér) na otáčanie i2c SDA (údaje) a SCL (hodiny) alebo môžete vytvoriť ďalšiu zbernicu i2c alebo viac.

Vytvorím dva ďalšie autobusy, autobus 3 a 4

Otvorte cli a spustite

cd /boot

sudo nano config.txt

Pridajte nasledujúci riadok kódu, najlepšie do sekcie, kde sú povolené spi a i2c.

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

Tento riadok vytvorí dodatočnú zbernicu i2c (zbernica 4) na GPIO 23 ako SDA a GPIO 24 ako SCL (predvolené sú GPIO 23 a 24)

Pridajte aj nasledujúci riadok na vytvorenie zbernice 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 pre i2c zbernicu 4.

Ovládačom ovládania X ukončíte.

Poznámka k číslovaniu a objednávke autobusov:

Nikdy nepoužívajte zbernicu 0 a 2, používa sa na iné veci na doske, ako je eprom na klobúkoch atď

Pre vydanie raspbian z apríla 2019:

Vždy by ste mali začať s najvyššou zbernicou (v tomto prípade zbernica 4) v súbore config.txt a prepracovať sa k najnižšej zbernici (zbernica 3).

Najnižší autobus musí byť vždy autobus 3

Ak potrebujete 5 autobusov navyše, autobusy musia byť bi v poradí 7, 6, 5, 4, 3

Tento problém pri objednávke autobusu neexistoval, keď bol pôvodne napísaný tento návod. Zdá sa, že v jadre boli vykonané zmeny.

Vypnite PI, vypnite ho. Pripojte svoje zariadenia i2c k zbernici 4 (SDA do GPIO 23 a SCL do GPIO 24) a druhé k i2c zbernici 3 (SDA do GPIO 17 a SCL do GPIO 27).

Zapnite pí.

Beh:

sudo i2cdetect -l (malé písmená L)

Teraz uvidíte, že v zozname je aj autobus i2c 3 a 4. Spustiť tiež:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Teraz môžete svoj senzor používať vo svojom programovacom jazyku. Nezabudnite zadať správne zbernice i2c.

Príloha je príkladom obľúbeného snímača teploty a tlaku BMP280. Žiadny multiplexor nedokáže tak rýchlo prečítať 2 BMP280.

Prikladám tiež príklad 2 senzorov Sensirion SDP 810. Funguje opäť oveľa rýchlejšie ako multiplexor, ktorý som používal v minulosti

Vytvoril som kód pythonu na čítanie dvoch nových BMP388 z adafruit.

V budúcnosti môžem tiež pridať ďalšie senzory na

Krok 3: Prípad 2: Rôzne adresy I2c

Jednoduché. i2c je autobus. Cieľom zbernice je komunikovať s viacerými zariadeniami. Pripojte zariadenia paralelne k rovnakej zbernici i2c. Môžete použiť autobus jeden.

Beh:

sudo i2cdetect -y 1

Uvidíte uvedené zariadenia.

Odporúča: