КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Расширитель на 8 Входов/Выходов (Trema-модуль)

Расширитель выводов на 8 каналов

Общие сведения:

Trema-модуль расширитель на 8 входов/выходов - позволяет увеличить количество цифровых выводов Arduino. Каждый вывод расширителя является полноценным двунаправленным выводом, а не квазидвунаправленным, то есть его можно использовать как обычный, цифровой, вывод Arduino, без ограничений.

Видео:

Спецификация:

  • Напряжение питания: 2,3 ... 5,5 В
  • Потребляемый ток: до 175 мкА
  • Потребляемый ток в режиме ожидания: до 1 мкА
  • Выходной ток на выводах: до 50 мА
  • Напряжение на выводах I/O: до 5,5 В
  • Общая потребляемая мощьность: до 200 мВт
  • Уровень логической 1 на шине I2C: 0.7Vcc ... 5.5 В
  • Уровень логического 0 на шине I2C: -0.5 ... 0.3Vcc В
  • Частота шины I2C: 100, 400 кГц
  • Рабочая температура: -40 ... 85 °С
  • Температура хранения: -65 ... 150 °С
  • Габариты: 65х30х19 мм (с учётом выводов)
  • Вес: 7 г

Подключение:

Модуль подключается к аппаратной или программной шине I2C Arduino

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ - 1 :  Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем  напрямую к контроллеру Piranha UNO.

Способ - 2 :  Используя Trema Set Shield

Модуль можно подключить к любому из I2C входов Trema Set Shield.

Способ - 3 :  Используя проводной шлейф и Shield

Используя 4-х проводной шлейф, к  Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

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

Схема подключения расширителя выводов к Arduino Uno

Если Вы подключаете расширитель на 8 входов/выходов к другим платам, например, WEMOS D1 mini или WEMOS D1 mini Pro на базе микроконтроллера ESP8266, и т.д., то перед подключением библиотеки iarduino_I2C_IO, нужно подключить библиотеку Wire, как это описано в разделе Wiki - расширенные возможности библиотек iarduino для шины I2C.

Питание:

Входное напряжение питания 5 В, или 3,3 В постоянного тока, подаётся на выводы Vcc и GND модуля.

При питании модуля от напряжения 3,3 В, выводы модуля толерантны к напряжению 5 В.

Подробнее о модуле:

Модуль построен на базе чипа PCA9534D и использует шину I2C, с тактовой частотой до 400 кГц. В модуле реализована аппаратная возможность выбора адреса на шине, от 0x20 до 0x27, что позволяет подключить к одной шине I2C до 8 модулей. Выбор адреса осуществляется установкой трех переключателей в соответствии с таблицей, размещенной на плате модуля. Над таблицей размещены светодиоды, включение которых соответствует единице в таблице.

Для работы с модулем, нами разработана библиотека iarduino_I2C_IO, при использовании которой, Вы можете управлять выводами модуля, используя функции объекта библиотеки, или используя стандартные функции: pinMode(), digitalWrite() и digitalRead(), используемые для управления обычными выводами Arduino.

Подробнее про установку библиотеки читайте в нашей инструкции.

Примеры:

Управление выводами модуля через функции объекта: pinMode, digitalWrite и digitalRead

#include <iarduino_I2C_IO.h>         // Подключаем библиотеку
iarduino_I2C_IO modul_1(0x24);       // Объявляем объект modul_1, указывая установленный адрес на модуле 0x24
iarduino_I2C_IO modul_2(0x26);       // Объявляем объект modul_2, указывая установленный адрес на модуле 0x26
                                     // Для каждого модуля создаётся свой объект, с указанием адреса модуля
void setup() {
    modul_1.begin();                 // Инициируем работу с 1 модулем
    modul_2.begin();                 // Инициируем работу с 2 модулем
    modul_1.pinMode(5,  OUTPUT);     // Конфигурируем 5 вывод 1 модуля как выход
    modul_1.pinMode(7,  INPUT );     // Конфигурируем 7 вывод 1 модуля как вход
    modul_2.pinMode(5,  OUTPUT);     // Конфигурируем 5 вывод 2 модуля как выход
    modul_2.pinMode(7,  INPUT );     // Конфигурируем 7 вывод 2 модуля как вход
}
void loop(){
    modul_1.digitalWrite(5, HIGH);   // Устанавливаем на 5 выводе 1 модуля, состояние логической 1
    modul_2.digitalWrite(5, LOW);    // Устанавливаем на 5 выводе 2 модуля, состояние логического 0
    int a = modul_1.digitalRead(7);  // читаем состояние 7 вывода 1 модуля в переменную a
    int b = modul_2.digitalRead(7);  // читаем состояние 7 вывода 2 модуля в переменную b
}

Управление выводами модуля через стандартные функции: pinMode, digitalWrite и digitalRead

#include <iarduino_I2C_IO_Global.h>                         // Подключаем библиотеку, разрешая использовать обычные функции для управления выводами модуля
                                                            // При этом, адрес 1 модуля должен быть 0x20, следующего 0x21 и т.д.
                                                            // Тогда выводы 0-7 принадлежат 1 модулю, 8-15 второму и т.д.
                                                            // Номера выводов Arduino указываются типом uint8_t, а модулей pinNum.
uint8_t i=2;                                                // Создаём переменную i, с типом uint8_t, указывая ей 2 вывод arduino.
pinNum  j=2;                                                // Создаём переменную j, с типом pinNum , указывая ей 2 вывод модуля.
                                                            //
void setup(){                                               //
     iarduino_I2C_IO_Global.begin();                        // Инициируем раборту с модулями расширения выводов.
     pinMode(i,           OUTPUT);                          // Переводим 2 вывод arduino в режим выход.
     pinMode(j,           OUTPUT);                          // Переводим 2 вывод модуля  в режим выход.
     pinMode((uint8_t) 3, OUTPUT);                          // Переводим 3 вывод arduino в режим выход.
     pinMode((pinNum ) 3, OUTPUT);                          // Переводим 3 вывод модуля  в режим выход.
}                                                           //
                                                            //
void loop(){                                                //
     switch((millis()/1000)%8){                             // Значение в switch() меняется каждую секунду в пределах 0-7.
         case 0: digitalWrite(i,           HIGH); break;    // Устанавливаем на 2 выводе arduino, состояние логической  1.
         case 1: digitalWrite(i,           LOW ); break;    // Устанавливаем на 2 выводе arduino, состояние логического 0.
         case 2: digitalWrite(j,           HIGH); break;    // Устанавливаем на 2 выводе модуля , состояние логической  1.
         case 3: digitalWrite(j,           LOW ); break;    // Устанавливаем на 2 выводе модуля , состояние логического 0.
         case 4: digitalWrite((uint8_t) 3, HIGH); break;    // Устанавливаем на 3 выводе arduino, состояние логической  1.
         case 5: digitalWrite( uint8_t(3), LOW ); break;    // Устанавливаем на 3 выводе arduino, состояние логического 0.
         case 6: digitalWrite( pinNum(3) , HIGH); break;    // Устанавливаем на 3 выводе модуля , состояние логической  1.
         case 7: digitalWrite((pinNum) 3 , LOW ); break;    // Устанавливаем на 3 выводе модуля , состояние логического 0.
         default:                                 break;    //
     }                                                      //
}                                                           //

В первом примере, обращение к каждому модулю осуществляется через его объект, а во втором, обращение осуществляется через стандартные функции управления цифровыми выводами, при этом, выводы Arduino указываются типом uint8_t, а выводы модулей типом pinNum.

Описание основных функций библиотеки:

Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
О том как выбрать тип шины I2C рассказано в статье Wiki - расширенные возможности библиотек iarduino для шины I2C.

Работа с модулями через стандартные функции:

Подключение библиотеки:

#include <iarduino_I2C_IO_Global.h>  // Подключаем библиотеку, разрешая использовать обычные функции для управления выводами модуля
                                     // Объекты создавать не нужно!

Функция begin();

  • Назначение: Инициализация работы с модулями.
  • Синтаксис: begin();
  • Параметры: Нет.
  • Возвращаемые значения: Нет.
  • Примечание: Вызывается 1 раз в коде setup.
  • Пример:
iarduino_I2C_IO_Global.begin(); // Инициируем работу модуля

Стандартные функции pinMode(); digitalRead(); digitalWrite();

  • Назначение: Установка режима работы выводов, чтение и установка состояний выводов.
  • Параметры:
    • №_ВЫВОДА_МОДУЛЯ - число, типа pinNum.
    • №_ВЫВОДА_ARDUINO - число, типа uint8_t.
  • Примечание:
    • Использование других типов, вызовет ошибку.
    • Тип pinNum на самом деле является классом и создавая "переменную" с этим типом, вы на самом деле создаёте экземпляр класса, который имитирует поведение переменной. Такие "переменные" поддерживают все стандартные действия (объявление, присвоение, арифметические и логические операции).
  • Пример:
digitalWrite( pinNum(25) , digitalRead( pinNum(35) )); // Копируем состояние с 35 вывода модуля на 25 вывод модуля
                                                       // 25 вывод, это 1 вывод модуля с адресом 0x23 на шине I2C
                                                       // 35 вывод, это 3 вывод модуля с адресом 0x24 на шине I2C
digitalWrite( uint8_t(3) , digitalRead( pinNum(53) )); // Копируем состояние с 53 вывода модуля на 3 вывод Arduino
                                                       // 53 вывод, это 5 вывод модуля с адресом 0x26 на шине I2C

При использовании стандартных функций работы с выводами, нумерация выводов всех модулей сквозная, по порядку адресов на шине I2C (см. таблицу). Допускается пропускать адреса модулей на шине I2C, например, установить два модуля с адресами 0x21 и 0x23, но и обращаться придется к выводам с номерами 8-15 и 24-31.

Номера выводов, указываемые в стандартных функциях, зависят от адреса модуля на шине I2C:

Адрес модуля: 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27
Вход/Выход № 0 0 8 16 24 32 40 48 56
Вход/Выход № 1 1 9 17 25 33 41 49 57
Вход/Выход № 2 2 10 18 26 34 42 50 58
Вход/Выход № 3 3 11 19 27 35 43 51 59
Вход/Выход № 4 4 12 20 28 36 44 52 60
Вход/Выход № 5 5 13 21 29 37 45 53 61
Вход/Выход № 6 6 14 22 30 38 46 54 62
Вход/Выход № 7 7 15 23 31 39 47 55 63

Описание дополнительных функций библиотеки:

Работа с модулями через объекты библиотеки:

Подключение библиотеки:

#include <iarduino_I2C_IO.h>  // Подключаем библиотеку
iarduino_I2C_IO exp( АДРЕС ); // Объявляем объект exp, с указанием адреса модуля на шине I2C. 
                              // Для каждого модуля создаётся свой объект, с указанием адреса модуля.
                              // Примечание:
                              // Допускается создание одного объекта без указания адреса модуля, который сможет работать с любым модулем на шине.
                              // При этом, адрес 1 модуля должен быть 0x20, следующего 0x21 и т.д.
                              // Тогда выводы 0-7 принадлежат 1 модулю, 8-15 второму и т.д.

Функция begin();

  • Назначение: Инициализация работы с модулем
  • Синтаксис: begin();
  • Параметры: Нет.
  • Возвращаемые значения: Нет.
  • Примечание: Вызывается 1 раз в коде setup.
  • Пример:
exp.begin(); // Инициируем работу модуля

Функция pinMode();

  • Назначение: Установка режима работы вывода модуля (вход или выход).
  • Синтаксис: pinMode( №_ВЫВОДА_МОДУЛЯ , РЕЖИМ_РАБОТЫ );
  • Параметры:
    • №_ВЫВОДА_МОДУЛЯ - число от 0 до 7, соответствующее конфигурируемому выводу.
    • РЕЖИМ_РАБОТЫ - устанавливаемый режим работы вывода модуля: (INPUT или OUTPUT).
  • Возвращаемые значения: Нет.
  • Примечание: Работает как одноимённая функция pinMode.
exp.pinMode(0, INPUT ); // Конфигурируем 0 вывод модуля как вход
exp.pinMode(1, OUTPUT); // Конфигурируем 1 вывод модуля как выход

Функция digitalRead();

  • Назначение: Чтение логического состояния на выводе модуля (LOW или HIGH).
  • Синтаксис: digitalRead( №_ВЫВОДА_МОДУЛЯ );
  • Параметры:
    • №_ВЫВОДА_МОДУЛЯ - число от 0 до 7, соответствующее выводу модуля, состояние которого требуется прочитать.
  • Возвращаемые значения: bool - логическое состояние на выводе (LOW или HIGH).
  • Примечание: Работает как одноимённая функция analogRead.
  • Пример:
bool val = exp.digitalRead(0); // Читаем состояние нулевого входа модуля в переменную val

Функция digitalWrite();

  • Назначение: Установка логического состояния на выводе модуля (LOW или HIGH).
  • Синтаксис: digitalWrite( №_ВЫВОДА_МОДУЛЯ , СОСТОЯНИЕ);
  • Параметры:
    • №_ВЫВОДА_МОДУЛЯ - число от 0 до 7, соответствующее выводу, состояние которого требуется установить.
    • СОСТОЯНИЕ - устанавливаемое логическое состояние на выводе (LOW или HIGH).
  • Возвращаемые значения: Нет.
  • Примечание: Работает как одноимённая функция digitalWrite.
exp.digitalWrite(1, HIGH); // Устанавливаем на первом выводе модуля состояние логической единицы

Нумерация выводов для каждого модуля начинается с 0.

Применение:

  • Увеличение количества цифровых входов/выходов Arduino.
  • Уменьшение числа проводов, между Arduino и цифровыми устройствами.
  • Усиление помехозащищенности, если устройства находятся на значительном удалении от arduino.

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями