İçindekiler:

Raspberry PI Çoklu I2C Cihazları: 3 Adım
Raspberry PI Çoklu I2C Cihazları: 3 Adım

Video: Raspberry PI Çoklu I2C Cihazları: 3 Adım

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

Hayal kırıklığına uğradınız çünkü projenizde aynı I2C cihazlarının katlarını kullanamazsınız. Yavaş çoklayıcı kullanmaya gerek yok. En son raspbian çekirdeği, GPIO pinlerini kullanarak birden fazla I2C veriyolu oluşturulmasını destekler. Bu çözüm süper hızlıdır.

Adım 1: Bazı Kabuk Komutları

Bazı Kabuk Komutları
Bazı Kabuk Komutları

Raspberry pi'niz açıkken i2c cihazlarınızdan birini bağlayın, ahududu pi'nizi çalıştırın ve çalıştırın

sudo i2cdetect -y 1

Ekteki şekildeki gibi bir tablo göreceksiniz. Bir BMP280 sıcaklık ve barometrik basınç sensörü ekledim. Tabloya göre i2c adresi 0x76'dır. Bu adresi not edin.

Bunu tüm i2c cihazlarınız için yapın.

Adım 2: Birinci Durum: I2c Cihazları Aynı Adrese Sahiptir

Birinci Durum: I2c Cihazları Aynı Adrese Sahiptir
Birinci Durum: I2c Cihazları Aynı Adrese Sahiptir

Bu her zaman sorunlu bir durumdu. Bir i2c veri yolu birden fazla cihazı işleyebilir, ancak farklı i2c adreslerine sahip olmaları gerekir. Bazı i2c cihazlarında, diğer i2c adreslerini ayarlamak için atlama telleri bulunur, ancak çoğunda yoktur. Bu durumda, i2c SDA'yı (Veri) ve SCL'yi (Saat) döndürmek için bir i2c çoklayıcı (donanım) kullanabilir veya ek bir i2c veri yolu veya daha fazlasını oluşturabilirsiniz.

İki ek veri yolu oluşturacağım, nl bus 3 ve 4

Klibi açın ve çalıştırın

cd / önyükleme

sudo nano yapılandırma.txt

spi ve i2c'nin etkinleştirildiği bölümde tercih edilen aşağıdaki kod satırını ekleyin.

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

Bu hat, GPIO 23'te SDA olarak ve GPIO 24'te SCL olarak ek bir i2c veri yolu (veri yolu 4) oluşturacaktır (GPIO 23 ve 24 varsayılandır)

Ayrıca i2c bus 3'ü oluşturmak için aşağıdaki satırı ekleyin

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

GPIO 17, SDA olacak ve GPIO 27, i2c veri yolu 4 için SCL olacak.

Çıkmak için tip kontrolü X.

Otobüs Numaralandırması ve sırası ile ilgili not:

0 ve 2 numaralı otobüsü asla kullanmayın, tahtadaki şapkalardaki eprom gibi diğer şeyler için kullanılır.

Nisan 2019 raspbian sürümü için:

config.txt dosyanızda her zaman en yüksek veri yolu ile (bu durumda 4 numaralı veri yolu) başlamalı ve en düşük veri yoluna (veri yolu 3) kadar gitmelisiniz.

En düşük otobüs her zaman otobüs 3 olmalıdır

5 ekstra otobüse ihtiyacınız varsa, otobüsler sırasıyla 7, 6, 5, 4, 3 olmak zorundadır.

Bu Eğitilebilir Yazı orijinal olarak yazıldığında, otobüs siparişindeki bu sorun yoktu. Görünüşe göre çekirdekte değişiklikler yapılmış.

PI'nizi kapatın, değiştirin. i2c cihazlarınızı veriyolu 4'e (SDA - GPIO 23 ve SCL - GPIO 24) ve diğerini i2c veriyolu 3'e (SDA - GPIO 17 ve SCL - GPIO 27) bağlayın.

Pi'yi açın.

Çalıştırmak:

sudo i2cdetect -l (Küçük Harf L)

Şimdi i2c veri yolu 3 ve 4'ün de listelendiğini göreceksiniz. Ayrıca çalıştırın:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Artık sensörünüzü programlama dilinizde kullanabilirsiniz. Doğru i2c veriyollarını belirtmeyi unutmayın.

Ek, popüler BMP280 Sıcaklık ve Basınç sensörü için bir örnektir. Hiçbir çoklayıcı bu kadar hızlı 2 BMP280 okuyamaz.

2 Sensirion SDP 810 sensörünün bir örneği de ektedir. Yine geçmişte kullandığım çoklayıcıdan çok daha hızlı çalışıyor

Adafruit'ten iki yeni BMP388'i okumak için python kodu oluşturdum.

Ayrıca gelecekte https://github.com/JJSlabbert/Raspberry_PI_i2C_confects'e başka sensörler de ekleyebilirim.

Adım 3: Durum 2: Farklı I2c Adresleri

Basit. i2c bir otobüs. Bir veri yolu amacı, birden fazla cihazla iletişim kurmaktır. Cihazları aynı i2c veri yoluna paralel olarak bağlayın. 1 numaralı otobüsü kullanabilirsiniz.

Çalıştırmak:

sudo i2cdetect -y 1

Listelenen cihazları göreceksiniz.

Önerilen: