Оглавление:

Raspberry PI Multiple I2C Devices: 3 шага
Raspberry PI Multiple I2C Devices: 3 шага

Видео: Raspberry PI Multiple I2C Devices: 3 шага

Видео: Raspberry PI Multiple I2C Devices: 3 шага
Видео: Введение в OpenSCADA. Работа с шиной I2C и GPIO Raspberry Pi 2024, Июль
Anonim
Raspberry PI Несколько устройств I2C
Raspberry PI Несколько устройств I2C
Raspberry PI Несколько устройств I2C
Raspberry PI Несколько устройств I2C

Расстроен, потому что вы не можете использовать в своем проекте несколько одинаковых устройств I2C. Нет необходимости использовать медленные мультиплексоры. Последнее ядро raspbian поддерживает создание нескольких шин I2C с использованием контактов GPIO. Это решение очень быстрое.

Шаг 1: некоторые команды оболочки

Некоторые команды оболочки
Некоторые команды оболочки

Подключите одно из ваших устройств i2c, когда у вас Raspberry Pi, запустите Raspberry Pi и запустите

sudo i2cdetect -y 1

Вы увидите таблицу, как на прикрепленном рисунке. Я прикрепил датчик температуры и атмосферного давления BMP280. Адрес i2c - 0x76 согласно таблице. Обратите внимание на этот адрес.

Сделайте это для всех своих устройств i2c.

Шаг 2. Случай первый: устройства I2c имеют одинаковый адрес

Случай первый: устройства I2c имеют одинаковый адрес
Случай первый: устройства I2c имеют одинаковый адрес

Это всегда было проблемным случаем. Шина i2c может обрабатывать несколько устройств, но у них должны быть разные адреса i2c. Некоторые устройства i2c имеют перемычки для установки других адресов i2c, но многие этого не делают. В этом случае вы можете использовать мультиплексор i2c (аппаратный) для вращения i2c SDA (Data) и SCL (Clock), или вы можете создать дополнительную шину i2c или более.

Я создам два дополнительных автобуса, nl bus 3 и 4.

Откройте cli и запустите

cd / boot

sudo nano config.txt

Добавьте следующую строку кода, желательно в раздел, где включены spi и i2c.

dtoverlay = i2c-gpio, bus = 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, bus = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

GPIO 17 будет SDA, а GPIO 27 будет SCL для шины 4 i2c.

Нажмите кнопку X, чтобы выйти.

Примечание о нумерации и порядке автобусов:

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

Для выпуска raspbian в апреле 2019 года:

Вы всегда должны начинать с самой высокой шины (в данном случае с шины 4) в файле config.txt и переходить к самой низкой шине (шина 3).

Самый низкий автобус всегда должен быть автобусом 3.

Если вам нужно 5 дополнительных автобусов, автобусы должны идти в порядке следования 7, 6, 5, 4, 3.

Этой проблемы с заказом автобусов не было, когда изначально было написано это руководство. Похоже, что в ядро внесены изменения.

Выключите свой PI, выключите его. Подключите свои устройства i2c к шине 4 (SDA к GPIO 23 и SCL к GPIO 24), а другие к шине i2c 3 (SDA к GPIO 17 и SCL к GPIO 27).

Включите пи.

Запустить:

sudo i2cdetect -l (нижний регистр L)

Теперь вы увидите, что шина i2c 3 и 4 также указаны в списке. Также запустите:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

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

Attach - это пример популярного датчика температуры и давления BMP280. Ни один мультиплексор не может так быстро прочитать 2 BMP280.

Также прилагается пример 2 датчиков Sensirion SDP 810. Опять же, работает намного быстрее, чем мультиплексор, который я использовал в прошлом.

Я создал код на Python для чтения двух новых BMP388 от adafruit.

Я также могу добавить другие датчики в будущем на

Шаг 3: Случай 2: разные адреса I2c

Простой. i2c - это автобус. Назначение шины - связываться с несколькими устройствами. Подключите устройства параллельно к одной шине i2c. Вы можете воспользоваться автобусом один.

Запустить:

sudo i2cdetect -y 1

Вы увидите список устройств.

Рекомендуемые: