Оглавление:
- Шаг 1: некоторые команды оболочки
- Шаг 2. Случай первый: устройства I2c имеют одинаковый адрес
- Шаг 3: Случай 2: разные адреса I2c
Видео: Raspberry PI Multiple I2C Devices: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Расстроен, потому что вы не можете использовать в своем проекте несколько одинаковых устройств 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 4B за 3 шага: 3 шага
Обнаружение лиц на Raspberry Pi 4B за 3 шага: в этом руководстве мы собираемся выполнить обнаружение лиц на Raspberry Pi 4 с помощью Shunya O / S, используя библиотеку Shunyaface. Shunyaface - это библиотека распознавания / обнаружения лиц. Проект направлен на достижение максимальной скорости обнаружения и распознавания с помощью
Raspberry Pi - Учебное пособие по Python для датчика влажности и температуры HIH6130 I2C: 4 шага
Raspberry Pi - HIH6130 I2C Humidity & Temperature Sensor Python Tutorial: HIH6130 - датчик влажности и температуры с цифровым выходом. Эти датчики обеспечивают уровень точности ± 4% относительной влажности. С лучшей в отрасли долговременной стабильностью, истинной температурной компенсацией цифрового I2C, лучшей в отрасли надежностью, энергоэффективностью
Интерфейс сенсора ADXL335 на Raspberry Pi 4B в 4 шага: 4 шага
Интерфейс датчика ADXL335 на Raspberry Pi 4B за 4 шага: в этом руководстве мы собираемся связать датчик ADXL335 (акселерометр) на Raspberry Pi 4 с Shunya O / S
Raspberry Pi - HIH6130 I2C Датчик влажности и температуры Руководство по Java: 4 шага
Raspberry Pi - Датчик влажности и температуры HIH6130 I2C Руководство по Java: HIH6130 - датчик влажности и температуры с цифровым выходом. Эти датчики обеспечивают уровень точности ± 4% относительной влажности. С лучшей в отрасли долговременной стабильностью, истинной температурной компенсацией цифрового I2C, лучшей в отрасли надежностью, энергоэффективностью