Spisu treści:

Raspberry PI Wiele urządzeń I2C: 3 kroki
Raspberry PI Wiele urządzeń I2C: 3 kroki

Wideo: Raspberry PI Wiele urządzeń I2C: 3 kroki

Wideo: Raspberry PI Wiele urządzeń I2C: 3 kroki
Wideo: [#1] Raspberry Pi - Wstęp, instalacja systemu, zdalne połączenie, pierwsze kroki 2024, Listopad
Anonim
Raspberry PI Wiele urządzeń I2C
Raspberry PI Wiele urządzeń I2C
Raspberry PI Wiele urządzeń I2C
Raspberry PI Wiele urządzeń I2C

Sfrustrowany, ponieważ nie możesz używać w swoim projekcie wielokrotności tych samych urządzeń I2C. Nie ma potrzeby używania wolnych multiplekserów. Najnowsze jądro raspbian obsługuje tworzenie wielu magistral I2C przy użyciu pinów GPIO. To rozwiązanie jest super szybkie.

Krok 1: Niektóre polecenia powłoki

Niektóre polecenia powłoki
Niektóre polecenia powłoki

Podłącz jedno ze swoich urządzeń i2c, gdy Twoje Raspberry Pi jest wyłączone, uruchom Raspberry Pi i uruchom

sudo i2cdetect -y 1

Zobaczysz tabelę jak na załączonym rysunku. Mam dołączony czujnik temperatury i ciśnienia barometrycznego BMP280. Adres i2c to 0x76 zgodnie z tabelą. Zanotuj ten adres.

Zrób to dla wszystkich swoich urządzeń i2c.

Krok 2: Przypadek pierwszy: urządzenia I2c mają ten sam adres

Przypadek pierwszy: urządzenia I2c mają ten sam adres
Przypadek pierwszy: urządzenia I2c mają ten sam adres

To zawsze był problematyczny przypadek. Magistrala i2c może obsługiwać wiele urządzeń, ale powinny one mieć różne adresy i2c. Niektóre urządzenia i2c mają zworki do ustawiania innych adresów i2c, ale wiele nie. W takim przypadku możesz użyć multipleksera i2c (sprzęt), aby obrócić i2c SDA (dane) i SCL (zegar) lub możesz utworzyć dodatkową magistralę i2c lub więcej.

Stworzę dwa dodatkowe autobusy, nl bus 3 i 4

Otwórz cli i uruchom

cd /boot

sudo nano config.txt

Dodaj następujący wiersz kodu, najlepiej w sekcji, w której włączone są spi i i2c.

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

Ta linia utworzy dodatkową magistralę i2c (bus 4) na GPIO 23 jako SDA i GPIO 24 jako SCL (GPIO 23 i 24 są domyślne)

Dodaj również następujący wiersz, aby utworzyć magistralę i2c 3

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

GPIO 17 będzie SDA, a GPIO 27 będzie SCL dla magistrali i2c 4.

Tipe kontroluj X, aby wyjść.

Uwaga dotycząca numeracji i kolejności magistrali:

Nigdy nie używaj magistrali 0 i 2, służy do innych rzeczy w tablicy, takich jak eprom na czapkach itp

Dla wersji raspbian z kwietnia 2019 r.:

Powinieneś zawsze zaczynać od najwyższej magistrali (w tym przypadku Bus 4) w swoim pliku config.txt i przechodzić do najniższej magistrali (bus 3).

Najniższy autobus musi zawsze być autobusem 3

Jeśli potrzebujesz 5 dodatkowych autobusów, autobusy muszą być bi w kolejności 7, 6, 5, 4, 3

Ten problem dotyczący zamówienia autobusu nie istniał, gdy ten Instruktaż został pierwotnie napisany. Wygląda na to, że dokonano zmian w jądrze.

Zamknij swoje PI, wyłącz je. Podłącz swoje urządzenia i2c do magistrali 4 (SDA do GPIO 23 i SCL do GPIO 24), a drugie do magistrali i2c 3 (SDA do GPIO 17 i SCL do GPIO 27).

Włącz pi.

Biegać:

sudo i2cdetect -l (mała litera L)

Zobaczysz teraz, że na liście znajduje się również magistrala i2c 3 i 4. Uruchom także:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Teraz możesz używać czujnika w swoim języku programowania. Pamiętaj, aby określić prawidłowe magistrale i2c.

Attach to przykład popularnego czujnika temperatury i ciśnienia BMP280. Żaden multiplekser nie może tak szybko odczytać 2 BMP280.

Dołączony jest również przykład 2 czujników Sensirion SDP 810. Znowu działa znacznie szybciej niż multiplekser, którego używałem w przeszłości

Stworzyłem kod Pythona do odczytu dwóch nowych BMP388 z adafruit.

W przyszłości mogę też dodać inne czujniki na

Krok 3: Przypadek 2: Różne adresy I2c

Prosty. i2c to autobus. Celem magistrali jest komunikacja z wieloma urządzeniami. Podłącz urządzenia równolegle do tej samej magistrali i2c. Możesz skorzystać z autobusu.

Biegać:

sudo i2cdetect -y 1

Zobaczysz wymienione urządzenia.

Zalecana: