Mündəricat:

Raspberry PI Çoxlu I2C Cihazları: 3 Addım
Raspberry PI Çoxlu I2C Cihazları: 3 Addım

Video: Raspberry PI Çoxlu I2C Cihazları: 3 Addım

Video: Raspberry PI Çoxlu I2C Cihazları: 3 Addım
Video: Raspberry Pi Egitim Serisi - SMBUS ve i2c Nedir (Genel Kültür) 2024, Iyul
Anonim
Raspberry PI Çoxlu I2C Cihazları
Raspberry PI Çoxlu I2C Cihazları
Raspberry PI Çoxlu I2C Cihazları
Raspberry PI Çoxlu I2C Cihazları

Layihənizdə eyni I2C cihazlarının birdən çoxunu istifadə edə bilmədiyiniz üçün əsəbiləşirsiniz. Yavaş multipleksorlardan istifadə etməyə ehtiyac yoxdur. Ən son raspbian kernel GPIO pinləri istifadə edərək birdən çox I2C avtobusunun yaradılmasını dəstəkləyir. Bu həll çox sürətlidir.

Addım 1: Bəzi Shell Komandaları

Bəzi Shell Komandaları
Bəzi Shell Komandaları

İ2c cihazlarınızdan birini moruq pi olduğunuzda bağlayın, moruq pi -ni işə salın və qaçın

sudo i2cdetect -y 1

Əlavə şəkildəki kimi bir masa görəcəksiniz. BMP280 temperatur və barometrik təzyiq sensoru bağladım. İ2c ünvanı cədvələ görə 0x76 -dır. Bu ünvanı qeyd edin.

Bunu bütün i2c cihazlarınız üçün edin.

Addım 2: Birinci Vəziyyət: I2c Cihazları Eyni Ünvana malikdir

Birinci hal: I2c cihazları eyni ünvana malikdir
Birinci hal: I2c cihazları eyni ünvana malikdir

Bu həmişə problemli bir hal idi. Bir i2c avtobusu birdən çox cihazı idarə edə bilər, lakin fərqli i2c ünvanlarına sahib olmalıdır. Bəzi i2c cihazlarında digər i2c ünvanlarını təyin etmək üçün atlayıcılar var, lakin bir çoxlarında yoxdur. Bu vəziyyətdə, i2c SDA (Məlumat) və SCL (Saat) döndərmək üçün i2c multiplexer (hardware) istifadə edə bilərsiniz və ya əlavə bir i2c avtobus və ya daha çoxunu yarada bilərsiniz.

İki əlavə avtobus yaradacağam, nl avtobus 3 və 4

Klipi açın və qaçın

cd /açılış

sudo nano config.txt

Aşağıdakı kod sətrini əlavə edin, spi və i2c -in aktiv olduğu hissədə.

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

Bu xətt GPIO 23 -də SDA və GPIO 24 -də SCL olaraq əlavə bir i2c avtobusu (avtobus 4) yaradacaq (GPIO 23 və 24 standart olaraq)

İ2c avtobus 3 yaratmaq üçün aşağıdakı xətti də əlavə edin

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

GPIO 17 SDA, GPIO 27 isə i2c avtobus 4 üçün SCL olacaq.

Çıxmaq üçün X düyməsini idarə edin.

Avtobus nömrələnməsinə və sifarişinə dair qeyd:

Heç vaxt 0 və 2 nömrəli avtobuslardan istifadə etməyin, taxtadakı digər şeylər üçün eprom, papaq və s

2019 -cu ilin aprel ayı üçün raspbian versiyası üçün:

Həmişə config.txt -də ən yüksək avtobusdan (bu halda Avtobus 4) başlamalı və ən aşağı avtobusa (avtobus 3) keçməlisiniz.

Ən aşağı avtobus həmişə 3 nömrəli avtobus olmalıdır

5 əlavə avtobusa ehtiyacınız varsa, avtobuslar 7, 6, 5, 4, 3 sıralarında bi olmalıdır.

Avtobus sifarişində bu məsələ, bu Təlimat əvvəlcə yazılarkən yox idi. Nüvədə dəyişikliklər edildiyi görünür.

PI -ni bağlayın, dəyişdirin. İ2c cihazlarınızı 4 -cü avtobusa (SDA -dan GPIO 23 -ə və SCL -dən GPIO 24 -ə), digərini isə i2c -avtobusa 3 -ə (SDA -dan GPIO 17 -ə və SCL -dən GPIO 27 -yə) qoşun.

Pi'yi işə salın.

Qaç:

sudo i2cdetect -l (Kiçik hərf L)

İndi i2c 3 və 4 nömrəli avtobusun da siyahıda olduğunu görəcəksiniz. Həmçinin işləyin:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

İndi sensorunuzu proqramlaşdırma dilinizdə istifadə edə bilərsiniz. Doğru i2c avtobuslarını göstərməyi unutmayın.

Attach, məşhur BMP280 Temperatur və Təzyiq sensoru üçün bir nümunədir. Heç bir multiplexer 2 BMP280 -i bu qədər sürətli oxuya bilməz.

2 Sensirion SDP 810 sensoru nümunəsi də əlavə olunur. Yenə də keçmişdə istifadə etdiyim multiplekserdən daha sürətli işləyirəm

Adafruitdən iki yeni BMP388 oxumaq üçün python kodu yaratdım.

Gələcəkdə başqa sensorlar da əlavə edə bilərəm

Addım 3: Dava 2: Fərqli I2c ünvanları

Sadə. i2c bir avtobusdur. Bir avtobus məqsədi bir çox cihazla əlaqə qurmaqdır. Cihazları eyni i2c avtobusuna paralel olaraq bağlayın. Bir avtobusdan istifadə edə bilərsiniz.

Qaç:

sudo i2cdetect -y 1

Siyahıda göstərilən cihazları görəcəksiniz.

Tövsiyə: