
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05


Расстроен, потому что вы не можете использовать в своем проекте несколько одинаковых устройств 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 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
Вы увидите список устройств.
Рекомендуемые:
Arduino Connect Multiple I2C Devices: 6 шагов

Arduino Connect Multiple I2C Devices: в этом руководстве мы узнаем, как подключить несколько модулей с подключением I2C к arduino. Посмотрите видео! В нашем случае мы будем использовать 4 OLED-дисплея в качестве примера, но вы можете использовать любые другие модули I2C / датчики, если хотите.Примечание: 4 OLED-дисплея со
Raspberry Pi - Учебное пособие по Python для датчика влажности и температуры HIH6130 I2C: 4 шага

Raspberry Pi - HIH6130 I2C Humidity & Temperature Sensor Python Tutorial: HIH6130 - датчик влажности и температуры с цифровым выходом. Эти датчики обеспечивают уровень точности ± 4% относительной влажности. С лучшей в отрасли долговременной стабильностью, истинной температурной компенсацией цифрового I2C, лучшей в отрасли надежностью, энергоэффективностью
ЖК-дисплей I2C / IIC - Использование ЖК-дисплея SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: 5 шагов

ЖК-дисплей I2C / IIC | Используйте ЖК-дисплей SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: Привет, ребята, так как обычный ЖК-дисплей SPI 1602 имеет слишком много проводов для подключения, поэтому его очень сложно связать с Arduino, но на рынке доступен один модуль, который может преобразовать дисплей SPI в дисплей IIC, поэтому вам нужно подключить только 4 провода
Raspberry Pi - HIH6130 I2C Датчик влажности и температуры Руководство по Java: 4 шага

Raspberry Pi - Датчик влажности и температуры HIH6130 I2C Руководство по Java: HIH6130 - датчик влажности и температуры с цифровым выходом. Эти датчики обеспечивают уровень точности ± 4% относительной влажности. С лучшей в отрасли долговременной стабильностью, истинной температурной компенсацией цифрового I2C, лучшей в отрасли надежностью, энергоэффективностью
ЖК-дисплей I2C / IIC - Преобразование ЖК-дисплея SPI в ЖК-дисплей I2C: 5 шагов

ЖК-дисплей I2C / IIC | Преобразование ЖК-дисплея SPI в ЖК-дисплей I2C: для использования ЖК-дисплея spi требуется слишком много подключений, что действительно сложно сделать, поэтому я нашел модуль, который может преобразовать ЖК-дисплей i2c в ЖК-дисплей spi, поэтому давайте начнем