Satura rādītājs:

Aveņu PI vairākas I2C ierīces: 3 soļi
Aveņu PI vairākas I2C ierīces: 3 soļi

Video: Aveņu PI vairākas I2C ierīces: 3 soļi

Video: Aveņu PI vairākas I2C ierīces: 3 soļi
Video: МКС Monster8 — Основы 2024, Jūlijs
Anonim
Aveņu PI vairākas I2C ierīces
Aveņu PI vairākas I2C ierīces
Aveņu PI vairākas I2C ierīces
Aveņu PI vairākas I2C ierīces

Neapmierināts, jo savā projektā nevarat izmantot daudzkārtējas vienas un tās pašas I2C ierīces. Nav nepieciešams izmantot lēnos multipleksorus. Jaunākais raspbian kodols atbalsta vairāku I2C kopņu izveidi, izmantojot GPIO tapas. Šis risinājums ir super ātrs.

1. darbība. Dažas čaulas komandas

Dažas čaulas komandas
Dažas čaulas komandas

Pievienojiet vienu no savām i2c ierīcēm, kamēr jūsu aveņu pi ir, ieslēdziet savu aveņu pi un palaidiet

sudo i2cdetect -y 1

Jūs redzēsit tabulu, kas pievienota attēlā. Man ir pievienots BMP280 temp un barometriskā spiediena sensors. Saskaņā ar tabulu i2c adrese ir 0x76. Ievērojiet šo adresi.

Dariet to visām savām i2c ierīcēm.

2. darbība. Pirmais gadījums: I2c ierīcēm ir viena adrese

Pirmais gadījums: I2c ierīcēm ir viena adrese
Pirmais gadījums: I2c ierīcēm ir viena adrese

Tas vienmēr bija problemātiskais gadījums. I2c kopne var apstrādāt vairākas ierīces, taču tām vajadzētu būt atšķirīgām i2c adresēm. Dažām i2c ierīcēm ir džemperi citu i2c adrešu iestatīšanai, bet daudzām nav. Šajā gadījumā jūs varat izmantot i2c multipleksoru (aparatūru), lai pagrieztu i2c SDA (dati) un SCL (pulkstenis), vai arī varat izveidot papildu i2c kopni vai vairāk.

Es izveidošu divus papildu autobusus, 3. un 4. autobusu

Atveriet cli un palaidiet

cd /boot

sudo nano config.txt

Pievienojiet šādu koda rindu, vēlams sadaļā, kurā ir iespējoti spi un i2c.

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

Šī līnija izveidos papildu i2c kopni (4. autobuss) GPIO 23 kā SDA un GPIO 24 kā SCL (GPIO 23 un 24 ir noklusējuma iestatījumi)

Pievienojiet arī šādu rindu, lai izveidotu i2c kopni 3

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

GPIO 17 būs SDA un GPIO 27 būs SCL i2c 4. autobusam.

Lai izietu, nospiediet vadības pogu X.

Piezīme par autobusu numerāciju un secību:

Nekad neizmantojiet autobusu 0 un 2, tas ir paredzēts citām lietām, piemēram, eprom uz cepurēm utt

Raspbian versijai 2019. gada aprīlī:

Jums vienmēr jāsāk ar augstāko kopni (šajā gadījumā 4. autobusu) jūsu config.txt failā un jāiet līdz zemākajai kopnei (3. autobuss).

Zemākajam autobusam vienmēr jābūt 3. autobusam

Ja jums ir nepieciešami 5 papildu autobusi, autobusiem jābūt bi 7, 6, 5, 4, 3

Šī problēma saistībā ar autobusu pasūtījumu nebija, kad šī instrukcija sākotnēji tika uzrakstīta. Šķiet, ka kodolā ir veiktas izmaiņas.

Izslēdziet savu PI, izslēdziet to. Savienojiet savas i2c ierīces ar 4. autobusu (SDA līdz GPIO 23 un SCL uz GPIO 24), bet otru - ar i2c 3. autobusu (SDA līdz GPIO 17 un SCL līdz GPIO 27).

Ieslēdziet pi.

Palaist:

sudo i2cdetect -l (mazie burti L)

Tagad jūs redzēsit, ka ir iekļauts arī i2c 3. un 4. autobuss. Arī palaist:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Tagad sensoru varat izmantot savā programmēšanas valodā. Atcerieties norādīt pareizās i2c kopnes.

Attach ir populārā BMP280 temperatūras un spiediena sensora piemērs. Neviens multipleksors nevar nolasīt 2 BMP280 tik ātri.

Ir pievienots arī 2 Sensirion SDP 810 sensoru piemērs. Atkal strādā daudz ātrāk nekā multiplekseris, ko izmantoju agrāk

Es izveidoju pitona kodu, lai no adafruit lasītu divus jaunus BMP388.

Nākotnē es varu pievienot arī citus sensorus vietnei

3. darbība: 2. gadījums: dažādas I2c adreses

Vienkārši. i2c ir autobuss. Autobusu mērķis ir sazināties ar vairākām ierīcēm. Savienojiet ierīces paralēli vienai un tai pašai i2c kopnei. Jūs varat izmantot pirmo autobusu.

Palaist:

sudo i2cdetect -y 1

Jūs redzēsit uzskaitītās ierīces.

Ieteicams: