Съдържание:

Raspberry PI множество I2C устройства: 3 стъпки
Raspberry PI множество I2C устройства: 3 стъпки

Видео: Raspberry PI множество I2C устройства: 3 стъпки

Видео: Raspberry PI множество I2C устройства: 3 стъпки
Видео: Arduino I2C связь между контроллерами 2024, Юли
Anonim
Raspberry PI множество I2C устройства
Raspberry PI множество I2C устройства
Raspberry PI множество I2C устройства
Raspberry PI множество I2C устройства

Разочарован, защото не можете да използвате множество от едни и същи I2C устройства във вашия проект. Няма нужда да използвате бавни мултиплексори. Най -новото raspbian ядро поддържа създаването на множество I2C шини, използващи GPIO пинове. Това решение е супер бързо.

Стъпка 1: Някои команди на Shell

Някои команди на Shell
Някои команди на Shell

Свържете едно от вашите i2c устройства, докато вашият малинов pi е, стартирайте си малинов pi и стартирайте

sudo i2cdetect -y 1

Ще видите таблица, както на прикачената фигура. Прикачих сензор за температура и барометрично налягане BMP280. Адресът i2c е 0x76 според таблицата. Забележете този адрес.

Направете това за всички ваши i2c устройства.

Стъпка 2: Първи случай: Устройствата I2c имат същия адрес

Първи случай: Устройствата I2c имат същия адрес
Първи случай: Устройствата I2c имат същия адрес

Това винаги е бил проблемният случай. I2c шината може да обработва множество устройства, но те трябва да имат различни i2c адреси. Някои i2c устройства имат джъмпери за задаване на други i2c адреси, но много от тях не. В този случай можете да използвате i2c мултиплексор (хардуер), за да завъртите i2c SDA (данни) и SCL (часовник) или можете да създадете допълнителна i2c шина или повече.

Ще създам два допълнителни автобуса, nl автобус 3 и 4

Отворете cli и тичайте

cd /boot

sudo nano config.txt

Добавете следния ред код, за предпочитане в секцията, където spi и i2c са активирани.

dtoverlay = i2c-gpio, автобус = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

Този ред ще създаде допълнителна i2c шина (шина 4) на GPIO 23 като SDA и GPIO 24 като SCL (GPIO 23 и 24 са по подразбиране)

Също така добавете следния ред, за да създадете i2c шина 3

dtoverlay = i2c-gpio, автобус = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

GPIO 17 ще бъде SDA, а GPIO 27 ще бъде SCL за i2c шина 4.

Напишете контрол X, за да излезете.

Забележка относно номерацията и реда на автобуса:

Никога не използвайте автобус 0 и 2, той се използва за други неща в дъската като eprom на шапки и т.н.

За изданието на raspbian през април 2019 г.:

Винаги трябва да започвате с най -високата шина (в този случай автобус 4) във вашия config.txt и да работите до най -ниската шина (автобус 3).

Най -ниската шина винаги трябва да е автобус 3

Ако имате нужда от 5 допълнителни автобуса, автобусите трябва да се движат по реда на 7, 6, 5, 4, 3

Този въпрос относно поръчката на автобус не е съществувал, когато този Instructable е написан първоначално. Изглежда, че са направени промени в ядрото.

Изключете вашия PI, включете го. Свържете вашите i2c устройства към шина 4 (SDA към GPIO 23 и SCL към GPIO 24), а другото към i2c шина 3 (SDA към GPIO 17 и SCL към GPIO 27).

Включете pi.

Бягай:

sudo i2cdetect -l (малки букви L)

Сега ще видите, че i2c автобус 3 и 4 също е в списъка. Също така изпълнете:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Сега можете да използвате вашия сензор на вашия език за програмиране. Не забравяйте да посочите правилните шини i2c.

Attach е пример за популярния сензор за температура и налягане BMP280. Никой мултиплексор не може да прочете 2 BMP280s толкова бързо.

Приложен е и пример за 2 сензора Sensirion SDP 810. Отново работи много по -бързо от мултиплексора, който използвах в миналото

Създадох python код за четене на два нови BMP388 от adafruit.

В бъдеще мога да добавя и други сензори към

Стъпка 3: Случай 2: Различни I2c адреси

Прост. i2c е автобус. Представителят на автобус трябва да комуникира с множество устройства. Свържете устройствата паралелно към същата i2c шина. Можете да използвате автобус едно.

Бягай:

sudo i2cdetect -y 1

Ще видите изброените устройства.

Препоръчано: