Подключение блока реле к Arduino по I²C

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Любите ли вы I²C так же, как люблю я? Поистине, гениальное изобретение - можно подключить до 64 устройств всего по двум проводам (не считая питания). Сегодня статья - туториал для новичков. Мы будем подключать готовый блок реле из 8 штук, израсходовав всего два пина. Как ни странно, нормальных туториалов я так и не нашел, в том числе в англоязычном сегменте. Постараюсь восполнить этот пробел.

Блок из 8 пятивольтовых реле с опторазвязкой
Блок из 8 пятивольтовых реле с опторазвязкой
Модуль PCF8574
Модуль PCF8574

Реле уже имеют всю необходимую обвязку и могут управляться напрямую цифровыми выходами. Но наша задача - подключить их по I²C. Как и в прошлой моей статье про USB клавиатуру (https://habr.com/ru/post/645109/), я взял I²C расширитель портов ввода-вывода на микросхеме PCF8574. Она имеет 8 портов (P0 - P7) и один пин прерывания, который мы в данном случае использовать не будем. Соединить модуль реле и модуль PCF8574 очень просто - паяем IN1 - IN8 к P0 - P7, соответственно. Очень удобно припаять модуль прямо на пины блока реле. Можно для удобства сюда же припаять кабель с разъемом. Я взял "витую пару" и разъем DIN-5. Блок реле пролежал у меня в коробке на антресоли лет 7, поэтому слегка запылился. Большим плюсом данного блока есть наличие светодиодов, сигнализирующих о включении реле.

Модуль из 8 реле с припаянным PCF8574
Модуль из 8 реле с припаянным PCF8574

К Arduino Nano подключаем A4 > SDA, A5 > SCL. Ну и соответственно, питание.

Arduino Nano pinout
Arduino Nano pinout

Обращение к устройству I²C происходит по адресу, который можно задать DIP переключателями на плате модуля PCF8574. Когда они все выключены (0 0 0), это соответствует адресу 0x20. Я взял библиотеку PU2CLR - PCF8574 Arduino Library (https://github.com/pu2clr/PCF8574), ее также можно установить через менеджер библиотек Arduino IDE. Следующий скетч будет "перещелкивать" все 8 реле в цикле с задержкой в 1 секунду.

#include <pu2clr_pcf8574.h>
PCF pcf;
void setup()
{
  // I2C адрес устройства 0x20
  pcf.setup(0x20);
}
void loop()
{
  // перебираем в цикле все 8 реле
  for (int i=0; i<8; i++)
  {
    // включить реле
    pcf.digitalWrite(i,LOW);
    delay(1000);
    // выключить реле
    pcf.digitalWrite(i,HIGH);
  }
}

Бонусом моя коробочка - тестер. Я собрал ее специально для подобных экспериментов. Она состоит из Arduino Nano, LCD экрана 1602 с припаянным модулем... конечно же I²C, энкодера с кнопкой, и "пищалки" (которая умеет только пищать, т.е издавать звук одного тона, просто ради прикола). Двумя нажатиями на ручку энкодера можно, например, узнать адреса всех подключенных I²C устройств, поворотами ручки - переключать порты. Что забавно, вся начинка уместилась в крышке коробочки. В корпусе только разъем DIN-5. Как работает реле с этим устройством - на видео.

Источник: https://habr.com/ru/post/646623/


Интересные статьи

Интересные статьи

Сегодня моноблоки крайне популярны. Возможность получить компьютер с большим экраном, не тратя при этом драгоценное место на размещение системного блока, привлекает все больше и больше ...
Среди одноплатников пополнение — появилась модель Odyssey X86J4125800 с четырехъядерным процессором Intel Celeron J4125 и довольно внушительным количеством разного рода модулей, разъемо...
Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника В жизни так бывает, причём бывает чаще чем хотелось б...
Здравствуйте дорогие читатели моего блога. Данная статья относится к разделу робототехники.Я представлю вам инструкцию создания электроэнцефалографа на базе образовательн...
В статье описаны необходимые параметры сервера для оптимальной работы сайта на платформе 1С-Битрикс.