Turinys:

„Raspberry PI Multiple I2C“įrenginiai: 3 žingsniai
„Raspberry PI Multiple I2C“įrenginiai: 3 žingsniai

Video: „Raspberry PI Multiple I2C“įrenginiai: 3 žingsniai

Video: „Raspberry PI Multiple I2C“įrenginiai: 3 žingsniai
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, Lapkritis
Anonim
„Raspberry PI Multiple I2C“įrenginiai
„Raspberry PI Multiple I2C“įrenginiai
„Raspberry PI Multiple I2C“įrenginiai
„Raspberry PI Multiple I2C“įrenginiai

Nusivylęs, nes savo projekte negalite naudoti kelių tų pačių I2C įrenginių. Nereikia naudoti lėtų multiplekserių. Naujausias raspbian branduolys palaiko kelių I2C magistralių kūrimą naudojant GPIO kaiščius. Šis sprendimas yra super greitas.

1 žingsnis: kai kurios apvalkalo komandos

Kai kurios „Shell“komandos
Kai kurios „Shell“komandos

Prijunkite vieną iš savo „i2c“įrenginių, kol „Raspberry Pi“yra, paleiskite „Raspberry pi“ir paleiskite

sudo i2cdetect -y 1

Pamatysite lentelę, kaip parodyta paveikslėlyje. Pridedu BMP280 temperatūros ir barometrinio slėgio jutiklį. Pagal lentelę „i2c“adresas yra 0x76. Įsidėmėkite šį adresą.

Padarykite tai visiems savo „i2c“įrenginiams.

2 veiksmas. Pirmasis atvejis: „I2c“įrenginiai turi tą patį adresą

Pirmas atvejis: „I2c“įrenginiai turi tą patį adresą
Pirmas atvejis: „I2c“įrenginiai turi tą patį adresą

Tai visada buvo problemiškas atvejis. „I2c“magistralė gali valdyti kelis įrenginius, tačiau jie turėtų turėti skirtingus „i2c“adresus. Kai kurie „i2c“įrenginiai turi trumpiklius kitiems „i2c“adresams nustatyti, tačiau daugelis to nedaro. Tokiu atveju galite naudoti i2c multiplekserį (aparatinę įrangą), kad pasuktumėte i2c SDA (duomenys) ir SCL (laikrodis), arba galite sukurti papildomą ar daugiau i2c magistralės.

Sukursiu du papildomus autobusus, 3 ir 4 autobusus

Atidarykite cli ir paleiskite

cd /įkrova

sudo nano config.txt

Pridėkite šią kodo eilutę, pageidautina skyriuje, kuriame įgalinti „spi“ir „i2c“.

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

Ši linija sukurs papildomą „i2c“magistralę (4 magistralė) GPIO 23 kaip SDA ir GPIO 24 kaip SCL (GPIO 23 ir 24 yra numatytieji)

Taip pat pridėkite šią eilutę, kad sukurtumėte „i2c“magistralę 3

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

GPIO 17 bus SDA, o GPIO 27 - 4 i2c magistralės SCL.

Norėdami išeiti, paspauskite valdiklį X.

Pastaba dėl autobusų numeracijos ir tvarkos:

Niekada nenaudokite 0 ir 2 autobusų, jis naudojamas kitiems lentos dalykams, pvz., „Eprom“ant skrybėlių ir pan

2019 m. Balandžio mėn. Raspbian leidimui:

Visada turėtumėte pradėti nuo aukščiausios magistralės (šiuo atveju 4 magistralės) savo config.txt ir pereiti prie žemiausios magistralės (3 magistralės).

Žemiausias autobusas visada turi būti 3 autobusas

Jei jums reikia 5 papildomų autobusų, autobusai turi būti 7, 6, 5, 4, 3 eilės

Šios problemos dėl autobusų užsakymo nebuvo, kai iš pradžių buvo parašyta ši instrukcija. Atrodo, kad branduolyje buvo atlikti pakeitimai.

Išjunkite savo PI, išjunkite. Prijunkite savo „i2c“įrenginius prie 4 magistralės (SDA prie GPIO 23 ir SCL prie GPIO 24), o kitą - prie „i2c“3 magistralės (SDA prie GPIO 17 ir SCL prie GPIO 27).

Įjunkite pi.

Vykdyti:

sudo i2cdetect -l (mažosios raidės L)

Dabar pamatysite, kad taip pat išvardytas 3 ir 4 „i2c“autobusas. Taip pat paleiskite:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Dabar galite naudoti jutiklį savo programavimo kalba. Nepamirškite nurodyti teisingų „i2c“magistralių.

„Attach“yra populiaraus BMP280 temperatūros ir slėgio jutiklio pavyzdys. Joks multiplekseris negali taip greitai perskaityti 2 BMP280.

Taip pat pridedamas 2 „Sensirion SDP 810“jutiklių pavyzdys. Vėl dirba daug greičiau nei anksčiau naudojamas multiplekseris

Sukūriau python kodą, kad galėčiau perskaityti du naujus BMP388 iš „adafruit“.

Ateityje taip pat galiu pridėti kitų jutiklių prie

3 veiksmas: 2 atvejis: skirtingi I2c adresai

Paprasta. „i2c“yra autobusas. Autobuso tikslas yra bendrauti su keliais įrenginiais. Prijunkite įrenginius lygiagrečiai prie tos pačios i2c magistralės. Galite naudoti vieną autobusą.

Vykdyti:

sudo i2cdetect -y 1

Pamatysite išvardytus įrenginius.

Rekomenduojamas: