Kazalo:

Raspberry PI več I2C naprav: 3 koraki
Raspberry PI več I2C naprav: 3 koraki

Video: Raspberry PI več I2C naprav: 3 koraki

Video: Raspberry PI več I2C naprav: 3 koraki
Video: Как превратить Raspberry Pi Pico в ПЛК | Беремиз4Пико 2024, Julij
Anonim
Raspberry PI več I2C naprav
Raspberry PI več I2C naprav
Raspberry PI več I2C naprav
Raspberry PI več I2C naprav

Razočaran, ker v svojem projektu ne morete uporabljati več istih naprav I2C. Ni treba uporabljati počasnih multiplekserjev. Najnovejše raspbian jedro podpira ustvarjanje več vodilov I2C z uporabo zatičev GPIO. Ta rešitev je zelo hitra.

Korak: Nekaj ukazov lupine

Nekaj ukazov Shell
Nekaj ukazov Shell

Priključite eno od naprav i2c, medtem ko je vaš malinov pi, zaženite svoj malinov pi in zaženite

sudo i2cdetect -y 1

Videli boste tabelo, kot je na priloženi sliki. Priložil sem senzor temperature in barometričnega tlaka BMP280. Naslov i2c je glede na tabelo 0x76. Upoštevajte ta naslov.

Naredite to za vse svoje naprave i2c.

Korak: Prvi primer: Naprave I2c imajo isti naslov

Primer: I2c naprave imajo isti naslov
Primer: I2c naprave imajo isti naslov

To je bil vedno problematičen primer. Vodilo i2c lahko upravlja več naprav, vendar bi morale imeti različne naslove i2c. Nekatere naprave i2c imajo mostičke za nastavitev drugih naslovov i2c, mnoge pa ne. V tem primeru lahko za vrtenje i2c SDA (podatki) in SCL (ura) uporabite multipleksor i2c (strojna oprema) ali pa ustvarite dodatno vodilo i2c ali več.

Ustvaril bom dva dodatna vodila, nl vodila 3 in 4

Odprite cli in zaženite

cd /zagonski

sudo nano config.txt

Dodajte naslednjo vrstico kode, prednostno v razdelku, kjer sta omogočeni spi in i2c.

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

Ta vrstica bo ustvarila dodatno vodilo i2c (vodilo 4) na GPIO 23 kot SDA in GPIO 24 kot SCL (GPIO 23 in 24 sta privzeti)

Za ustvarjanje vodila i2c 3 dodajte tudi naslednjo vrstico

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

GPIO 17 bo SDA, GPIO 27 pa SCL za vodilo i2c 4.

Tipko X za izhod.

Opomba o oštevilčenju in vrstnem redu avtobusov:

Nikoli ne uporabljajte vodila 0 in 2, uporablja se za druge stvari na plošči, kot je eprom na klobukih itd

Za izdajo raspbian v aprilu 2019:

Vedno začnite z najvišjim vodilom (v tem primeru vodilo 4) v datoteki config.txt in se pomaknite do najnižjega vodila (vodilo 3).

Najnižji avtobus mora biti vedno avtobus 3

Če potrebujete 5 dodatnih avtobusov, se morajo avtobusi voziti po vrstnem redu 7, 6, 5, 4, 3

Tega vprašanja glede naročila avtobusov ni bilo, ko je bil ta Instructable prvotno napisan. Zdi se, da so bile v jedru spremenjene.

Ugasnite svoj PI, ga izklopite. Naprave i2c priključite na vodilo 4 (SDA na GPIO 23 in SCL na GPIO 24), drugo pa na vodilo i2c 3 (SDA na GPIO 17 in SCL na GPIO 27).

Vklopite pi.

Zaženi:

sudo i2cdetect -l (male črke L)

Zdaj boste videli, da sta navedena tudi vodila 3 in 4 i2c. Zaženi tudi:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Zdaj lahko senzor uporabite v svojem programskem jeziku. Ne pozabite določiti pravilnih vodilov i2c.

Attach je primer priljubljenega senzorja temperature in tlaka BMP280. Noben multiplekser ne more tako hitro prebrati 2 BMP280.

Priložen je tudi primer dveh senzorjev Sensirion SDP 810. Spet deluje veliko hitreje kot multiplekser, ki sem ga uporabljal v preteklosti

Ustvaril sem kodo python za branje dveh novih BMP388 iz adafruta.

V prihodnosti lahko na https://github.com/JJSlabbert/Raspberry_PI_i2C_conficts dodam tudi druge senzorje

3. korak: Primer 2: Različni naslovi I2c

Enostavno. i2c je avtobus. Namestnik avtobusa naj bi komuniciral z več napravami. Naprave povežite vzporedno z istim vodilom i2c. Lahko uporabite avtobus.

Zaženi:

sudo i2cdetect -y 1

Videli boste navedene naprave.

Priporočena: