Как подключить два i2c с одним адресом
Перейти к содержимому

Как подключить два i2c с одним адресом

I²C хаб (Troyka-модуль)

I²C хаб подружит модули с одинаковыми адресами.

Видеообзор

Принцип работы

Работу модуля удобно представить в виде галетного переключателя.

Есть управляющее устройство Master и подчинённые устройства Slave на восьми каналах I²C хаба. В каждый промежуток времени I²C хаб коммутирует Master только с одним устройством.

Хаб позволяет подключить к управляющей плате восемь I²C устройств с одинаковым адресом и опрашивать их по очереди, переключая каналы.

Подключение и настройка

I²C хаб общается с управляющей электроникой по I²C/TWI. При подключении к Arduino или Iskra JS используйте Troyka Shield. С Troyka Slot Shield провода не понадобятся вовсе. А при подключении к Raspberry Pi возьмите Troyka Cap.

Arduino.ru

Подключение нескольких I2C устройств с одинаковыми адресами

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

При проектировании генератора, возникла проблема — необходимо вывести на индикатор 8 разрядов, а вналичии есть два четырехразрядных индикатора на микросхемах TM 1650 или FD650В. Проблема в том, что они управляются по шине I2C и имеют одинаковые адреса. Для решения конкретной задачи (генератор до 4000 Гц), это вполне устраивало, и первый вариант успешно со своей задачей справился http://arduino.ru/forum/programmirovanie/kontroller-led-i-klaviatury-fd650v-kak-im-upravlyat#comment-232263Далее захотелось использовать генератор по максимуму (до 8 МГц), для этого нужно было увеличить число разрядов до 8. Порывшись в инете нашел в основном теорию и использование специальных микросхем, которых в наличии нет. В результате появилась такая конструкция:

Подключается к аппаратному порту I2C ардуино, а дисплеи к выходному разъему. CSL идет напрямую, а SDA rjvvкоммутируются транзисторами Q1 и Q2. Переключение осуществляется логическими 0 или 1 с пина А3. В принципе можно поменять CSL и SDA при этом работоспособность сохраняется. Управление можно тоже взять с любого свободного выхода. Остальные I2C устройства с уникальными адресами подключаются стандартно.

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

Пример применения в скетче. Отличия от скетча с четырехразрядной индикации в строках 24,62,66,70,138-157

Подключение несколько устройств i2c на Arduino

Сканер i2c Ардуино, подключение нескольких устройств

IIC Arduino (I2C – Inter-Integrated Circuits, межмикросхемное соединение) — это последовательный протокол обмена данными по двум двунаправленным линиям связи. Эти линии называют также: SDA (Serial Data) — шина последовательных данных и SCL (Serial Clock) — шина тактирования. Шины SDA и SCL Arduino подтягиваются к шине питания через резисторы. Рассмотрим подробнее, что это такое шина i2c arduino.

Шина I2C Ардуино описание

Микроконтроллеры Arduino используют два пина для работы по интерфейсу I2C. В Arduino Uno и Nano линии SDA соответствует аналоговый порт A4, а SCL соответствует аналоговый порт A5. На Ardunio Mega SDA — 20 пин, SCL — 21 пин. Для облегчения работы с шиной I2C и обмена данными между устройствами для Arduino IDE написана стандартная библиотека Wire (скачивать и устанавливать ее не надо).

Для каждого устройства, при подключении к микроконтроллеру, присваивается уникальный адрес (максимум можно подключить 127 устройств). Поменять адрес устройства на шине нельзя, так как он вшит в микросхему. Часто производители предоставляют возможность поменять адрес устройства в небольшом диапазоне, что дает возможность подключить к шине IIC Ардуино несколько одинаковых устройств.

Сканер I2C интерфейса (шины) Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • два текстовых дисплея 1602 I2C;
  • любое устройство с I2C интерфейсом;
  • провода «папа-папа», «папа-мама».

Подключение двух дисплеев 1602 I2C к Ардуино

Подключение двух дисплеев 1602 I2C к Ардуино

Перед тем, как управлять несколькими объектами, подключенных к IIC шине, необходимо узнать их адреса. Для этого используется программа — сканер I2C Arduino, которая позволяет узнать адреса всех устройств, подключенных в данный момент к шине. Соберите схему из двух текстовых экранов с IIC модулем (можно подключить только одно устройство), подключенных к Ардуино Уно, и загрузите следующий скетч.

Скетч. Сканер шины i2c для Arduino

Пояснения к коду:
  1. данный код позволяет узнать все адреса устройств, подключенных к шине IIC. Если устройство не было подключено или подключено неправильно — на мониторе порта будет выходить сообщение, что устройства не найдены;
  2. ниже, на скриншоте монитора порта Arduino IDE, выводится адрес LCD 1602.

Сканер шины i2c для Arduino

Сканер шины i2c для Arduino с LCD дисплеем

Как подключить несколько устройств по I2C Arduino

В следующем примере к шине IIC Arduino будет подключено сразу три устройства — текстовый дисплей 1602, датчик давления bmp180 и RTC модуль часов. После сборки схемы можно сделать предварительное сканирование шины, но адреса у всех устройств разные и изменить адрес можно только у дисплея. У других устройств адреса «вшиты» производителем и используются в библиотеках по умолчанию.

Скетч. Подключение нескольких устройств к шине i2c

I2C интерфейс: подключение нескольких устройств

I2C интерфейс: подключение нескольких устройств

После сборки схемы, убедитесь, что у вас установлены необходимые библиотеки для работы с устройствами по IIC протоколу, и загрузите следующий пример кода в микроконтроллер. Данная программа будет выводить на текстовый экран текущую дату и время суток (устанавливаются в процедуре void setup и время можно поменять), а также данные о температуре воздуха и атмосферном давлении.

Пояснения к коду:
  1. обновление информации на текстовом экране происходит каждую секунду, данный интервал можно увеличить по своему желанию;
  2. время выводится с секундами, формат вывода времени и даты также можно изменить в строчке LCD.print(time.gettime(«H:i:s — d.m»));

Заключение. Мы рассмотрели возможность подключения нескольких устройств по протоколу IIC к плате Arduino, что будет полезно знать при проектировании различных DIY поделок своими руками, например метеостанции на Ардуино с датчиком давления. Если у вас остались вопросы по сканеру IIC интерфейсной шины или подключении устройств по данному протоколу — смело оставляйте их в комментариях к этой записи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *