Sisällysluettelo:

Vadelma PI Useita I2C -laitteita: 3 vaihetta
Vadelma PI Useita I2C -laitteita: 3 vaihetta

Video: Vadelma PI Useita I2C -laitteita: 3 vaihetta

Video: Vadelma PI Useita I2C -laitteita: 3 vaihetta
Video: BTT Octopus V1.1 — Основы 2024, Heinäkuu
Anonim
Raspberry PI Useita I2C -laitteita
Raspberry PI Useita I2C -laitteita
Raspberry PI Useita I2C -laitteita
Raspberry PI Useita I2C -laitteita

Turhautunut, koska et voi käyttää useita I2C -laitteita projektissasi. Ei tarvitse käyttää hitaita multipleksereitä. Uusin raspbian -ydin tukee useiden I2C -väylien luomista GPIO -nastojen avulla. Tämä ratkaisu on erittäin nopea.

Vaihe 1: Jotkut Shell -komennot

Jotkut Shell -komennot
Jotkut Shell -komennot

Liitä yksi i2c -laitteistasi, kun vadelmapi on käynnissä, käynnistä vadelmapi ja käynnistä

sudo i2cdetect -y 1

Näet taulukon, kuten liitteenä olevassa kuvassa. Liitän BMP280 lämpötila- ja ilmanpaineanturin. Taulukon mukainen i2c -osoite on 0x76. Huomaa tämä osoite.

Tee tämä kaikille i2c -laitteillesi.

Vaihe 2: Tapaus yksi: I2c -laitteilla on sama osoite

Tapaus yksi: I2c -laitteilla on sama osoite
Tapaus yksi: I2c -laitteilla on sama osoite

Tämä oli aina ongelmallinen tapaus. I2c -väylä voi käsitellä useita laitteita, mutta niillä pitäisi olla erilaiset i2c -osoitteet. Joillakin i2c -laitteilla on hyppyjoukkoja muiden i2c -osoitteiden asettamiseksi, mutta monilla ei. Tässä tapauksessa voit käyttää i2c -multiplekseria (laitteisto) i2c SDA: n (data) ja SCL: n (kello) kiertämiseen tai voit luoda ylimääräisen i2c -väylän.

Luon kaksi lisäväylää, nl -väylän 3 ja 4

Avaa cli ja aja

cd /boot

sudo nano config.txt

Lisää seuraava koodirivi, mieluiten osioon, jossa spi ja i2c on käytössä.

dtoverlay = i2c-gpio, väylä = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

Tämä linja luo täydentävän i2c -väylän (väylä 4) GPIO 23: ssa SDA: na ja GPIO 24: ssä SCL: nä (GPIO 23 ja 24 ovat oletusasetuksia)

Lisää myös seuraava rivi luodaksesi i2c -väylän 3

dtoverlay = i2c-gpio, väylä = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

GPIO 17 on SDA ja GPIO 27 on SCL i2c -väylälle 4.

Poistu vetämällä ohjainta X.

Huomautus väylän numeroinnista ja järjestyksestä:

Älä koskaan käytä väylää 0 ja 2, sitä käytetään muihin taululla oleviin asioihin, kuten hattujen eprom jne

Huhtikuun 2019 raspbian -julkaisu:

Aloita aina korkeimmalla väylällä (väylä 4 tässä tapauksessa) config.txt -tiedostossasi ja jatka matalimpaan väylään (väylä 3).

Alimman väylän on aina oltava linja 3

Jos tarvitset 5 lisäbussia, bussien on oltava bi -luokkaa 7, 6, 5, 4, 3

Tätä väylän tilausta koskevaa ongelmaa ei ollut, kun tämä Instructable kirjoitettiin alun perin. Näyttää siltä, että ytimeen on tehty muutoksia.

Sammuta PI, kytke se pois. Liitä i2c -laitteet väylään 4 (SDA - GPIO 23 ja SCL - GPIO 24) ja toinen i2c -väylään 3 (SDA - GPIO 17 ja SCL - GPIO 27).

Kytke pi päälle.

Juosta:

sudo i2cdetect -l (pienet kirjaimet L)

Näet nyt, että myös i2c -väylät 3 ja 4 on lueteltu. Suorita myös:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Nyt voit käyttää anturia ohjelmointikielelläsi. Muista määrittää oikeat i2c -väylät.

Attach on esimerkki suositusta BMP280 -lämpötila- ja paineanturista. Kukaan multiplekseri ei voi lukea kahta BMP280: tä näin nopeasti.

Liitteenä on myös esimerkki kahdesta Sensirion SDP 810 -anturista. Jälleen toimii paljon nopeammin kuin aiemmin käyttämäni multiplekseri

Luin python -koodin lukemaan kaksi uutta BMP388: ta adafruitista.

Voin myös lisätä muita antureita tulevaisuudessa osoitteeseen

Vaihe 3: Tapaus 2: Erilaiset I2c -osoitteet

Yksinkertainen. i2c on bussi. Väylän tarkoitus on kommunikoida useiden laitteiden kanssa. Liitä laitteet rinnakkain samaan i2c -väylään. Voit käyttää väylää yksi.

Juosta:

sudo i2cdetect -y 1

Näet laitteet luettelossa.

Suositeltava: