Sisällysluettelo:
Video: Vadelma PI Useita I2C -laitteita: 3 vaihetta
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
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
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.