Управление восьми канальным реле по I2C
В этом небольшом проекте покажу как подключить модуль с восьми реле к Arduino UNO используя интерфейсу I2C.


В этом небольшом проекте покажу как подключить модуль с восьми реле к Arduino UNO используя интерфейсу I2C, тем самым уменьшая используемых выводов с восьми до двух.
Управление восьми канальным реле по I2C
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Модуль реле 8-х канальный x 1 шт.
► Модуль расширения портов ввода вывода на базе PCF8574 x 1 шт.
► Провод DuPont 10x, 2.54 мм, 20 см, F-M, Female — Male x 1 шт.
Алгоритм программы прост, будем поочередно включать реле от 1 до 8, а заем поочередно отключать от 8 до 1.
Подключение:
Первым делом подключаем модуль реле к модулю PCF8574, для этого вывода IN1 … IN8 подключаем к выводам P0 … P7, затем необходимо подключить питания Vcc и GND. Далее подключаем модуль PCF8574 к Arduino UNO, вывод VCC и GND от PCF8574 подключаем к выводам 5V и GND на Arduino. Последние что осталось подключить, это интерфейс I2C, для этого вывода SDA и SCL от PCF8574 подключаем к выводам A4 и A5 на Arduino.

Установка библиотек:
Для работы с модулем необходимо установить библиотеку «PCF8574», для установки библиотеки, перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «PCF 8574», найдите библиотеку «PCF8574 library» и установите данную библиотеку.

Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include "PCF8574.h" // Подключение библиотеки PCF8574 PCF8574 pcf8574(0x20); // Создаем объект и указываем адрес устройства 0x20 int i = 0; void setup(){ Serial.begin(9600); pcf8574.pinMode(P0, OUTPUT); // Устанавливаем выход P0, как выход pcf8574.pinMode(P1, OUTPUT); // Устанавливаем выход P1, как выход pcf8574.pinMode(P2, OUTPUT); // Устанавливаем выход P2, как выход pcf8574.pinMode(P3, OUTPUT); // Устанавливаем выход P3, как выход pcf8574.pinMode(P4, OUTPUT); // Устанавливаем выход P4, как выход pcf8574.pinMode(P5, OUTPUT); // Устанавливаем выход P5, как выход pcf8574.pinMode(P6, OUTPUT); // Устанавливаем выход P6, как выход pcf8574.pinMode(P7, OUTPUT); // Устанавливаем выход P7, как выход // Проверка инициализация библиотеки pcf8574 Serial.print("Init pcf8574..."); if (pcf8574.begin()){ Serial.println("OK");} else{ Serial.println("ERROR");} delay(50); // Необходимо время для инициализации } void loop() { while ( i <= 7) { pcf8574.digitalWrite(i, LOW); delay(500); i++; } while ( i >= 0) { pcf8574.digitalWrite(i, HIGH); delay(500); i--; } } |
Описание скетча:
Скетч начинается с включения библиотеки PCF8574, далее создаем объект, для работы с модулем, в котором указываем адрес устройства 0x20.
1 2 |
#include "PCF8574.h" PCF8574 pcf8574(0x20); |
В void setup(), инициализируем работу последовательного порта. Так же, указываем как работать с портами «pcf8574.pinMode(Px, OUTPUT)» — выход. В конце функцией «pcf8574.begin()» инициализируем модуль, если инициализация прошла успешно программа продолжит работу, если нет то зациклится с ошибкой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup(){ Serial.begin(9600); pcf8574.pinMode(P0, OUTPUT); // Устанавливаем выход P0, как выход pcf8574.pinMode(P1, OUTPUT); // Устанавливаем выход P1, как выход pcf8574.pinMode(P2, OUTPUT); // Устанавливаем выход P2, как выход pcf8574.pinMode(P3, OUTPUT); // Устанавливаем выход P3, как выход pcf8574.pinMode(P4, OUTPUT); // Устанавливаем выход P4, как выход pcf8574.pinMode(P5, OUTPUT); // Устанавливаем выход P5, как выход pcf8574.pinMode(P6, OUTPUT); // Устанавливаем выход P6, как выход pcf8574.pinMode(P7, OUTPUT); // Устанавливаем выход P7, как выход Serial.print("Init pcf8574..."); if (pcf8574.begin()){ Serial.println("OK");} else{ Serial.println("ERROR");} delay(50); } |
В void loop(), два блока с циклами while, где в первом увеличиваем переменную i и поочередно включаем реле, а во втором уменьшаем i и отключаем поочередно реле.
1 2 3 4 5 6 7 8 9 10 11 12 |
while (i <= 7) { pcf8574.digitalWrite(i, LOW); delay(500); i++; } while (i >= 0) { pcf8574.digitalWrite(i, HIGH); delay(500); i--; } |
Ссылки Библиотека PCF8574 v.2.2.2
Купить на Aliexpress Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Комплект проводов DuPont, 2,54 мм, 20 см
Модуль расширения портов ввода вывода на базе PCF8574
Модуль реле 8-х канальный — 5V, 10A, 250V — lOW, OPTO
Купить в Самаре и области Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Модуль расширения портов ввода вывода на базе PCF8574
Модуль реле 8-х канальный — 5V, 10A, 250V — lOW, OPTO