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 через I²C разветвитель.
Схема устройства
Код для Arduino
- i2cHubScanner.ino
// библиотека для работы с I²C хабом #include <TroykaI2CHub.h> // создаём объект для работы с хабом // адрес по умолчанию 0x70 TroykaI2CHub splitter; // можно создавать несколько объектов с разными адресами // подробнее читайте на: // http://wiki.amperka.ru/продукты:troyka-i2c-hub void setup() { // открываем последовательный порт Serial.begin(115200); // ждём открытия порта while(!Serial) { } // печатаем сообщение об успешной инициализации Serial-порта Serial.println("Serial init OK"); // начало работы с I²C хабом splitter.begin(); Serial.println("Splitter init OK"); // ждём одну секунду delay(1000); } void loop() { // счётчик цикла for (int i = 0; i < 8; i++) { // переключаем по очереди каналы splitter.setBusChannel(i); // выводим номер канала Serial.print("Set channel "); Serial.print(i); Serial.println(":"); // запускаем I²C сканер startScanerI2C(); // ждём одну секунду delay(1000); } } void startScanerI2C() { // переменная состояние ответа byte state; // переменная хранения текущего адреса byte address; // переменная для хранения количества найденых I²C устройств int countDevices = 0; // печатем о начале поиска Serial.println("Scanning..."); // перебираем по очереди все адреса от 0 до 127 for (address = 1; address < 127; address++ ) { // начинаем передачу данных по текущем адресу Wire.beginTransmission(address); // завершаем передачу данных state = Wire.endTransmission(); // если пришедший байт равен нулю if (state == 0) { // на адресе есть устройство // печатаем об этом Serial.print("I2C device found at address 0x"); // если адрес меньше 16, печатем ноль if (address < 16) { Serial.print("0"); } // печатаем текущий адрес в 16 разрядной системе исчесления Serial.print(address, HEX); Serial.println(" !"); // инкрементируем кол-во найденых устройств countDevices++; } } // если не найдено ни одного I²C устройства // печатаем об этом if (countDevices == 0) { Serial.println("No I²C devices found"); } else { // печатаем о завершении процесса Serial.println("Done"); } }
Элементы платы
Микросхема управления
Сердце модуля — микросхема хаб PCA9547 для модулей с шиной I²C.
Troyka-контакты
На модуле выведено две пары Troyka-контактов.
Нижняя группа
- Сигнальный (R) — сигнал сброса микросхемы управления PCA9547. Подключите к цифровому пину микроконтроллера. По умолчанию пин отключён от чипа
- Питание (V) — соедините с рабочим напряжением микроконтроллера.
- Земля (G) — Соедините с пином
GNDмикроконтроллера.
Верхняя группа
- Сигнальный (D) — пин данных шины I²C. Подключите к SDA пину микроконтроллера.
- Сигнальный (C) — пин тактирования шины I²C. Подключите к SCL пину микроконтроллера.
Контакты питания портов выхода
контакты шины I²C портов выхода
Площадки выбора адреса
Подключайте до восьми модулей к одному контроллеру путём смены адреса чипа. Для этого на обратной стороне модуля мы расположили три контактных площадки. Для смены адреса замкните интересующие контактные площадки с помощью паяльника и припоя.
| Адрес | A2 | A1 | A0 |
|---|---|---|---|
| 0x70 | 0 | 0 | 0 |
| 0x71 | 0 | 0 | 1 |
| 0x72 | 0 | 1 | 0 |
| 0x73 | 0 | 1 | 1 |
| 0x74 | 1 | 0 | 0 |
| 0x75 | 1 | 0 | 1 |
| 0x76 | 1 | 1 | 0 |
| 0x78 | 1 | 1 | 1 |
Перемычка сброса
По умолчанию ножка RESET микросхемы управления PCA9547 физически отключёна от пина R. Для включения программного сброса капните каплей припоя на контактную площадку. После проделанных действий при подаче низкого уровня на пин R, микросхема перезагрузиться.
Принципиальная и монтажная схемы
Характеристики
- Напряжение питания: 3.3–5 В
- Интерфейс на вход: I²C
- Адрес модуля по умолчанию: 0x70
- Интерфейс на выход: восемь дополнительных каналов I²C
- Габариты: 25,4×25,4 мм


