Электронный компонент:Релейный кейп v1.0 для Raspberry Pi

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик


Релейный кейп v1.0 для Raspberry Pi[1]

Этот кейп (в оригинале – «Raspberry Pi Relay Board v1.0») оснащен четырьмя реле и интерфейсами NO/NC, позволяющими управлять нагрузкой с высокими напряжением и силой тока. Это делает его хорошим решением для устройств, которыми нельзя управлять напрямую при помощи шины I2C. Стандартизированный форм-фактор кейпа позволяет без труда подключить его к Raspberry Pi. Кроме того, релейный кейп оснащен четырьмя динамическими индикаторами, показывающими состояние («вкл» или «выкл») каждого реле.

Купить релейный кейп v1.0 для Raspberry Pi можно по этой ссылке.

Особенности

  • Совместимость с Raspberry Pi
  • Интерфейсы – I2C
  • Выбор I2C-адреса с помощью трех аппаратных переключателей – 1, 2 и 3 (переключатель 4 ни к чему не подключен)
  • Реле оснащены винтовыми зажимами
  • Стандартизированный форм-фактор кейпа для Raspberry Pi
  • Статусные индикаторы для каждого реле
  • Контакты COM, NO (от «normally open», т.е. «нормально разомкнут») и NC (от «normally closed», т.е. «нормально замкнут») для каждого реле
  • Реле высокого качества

Характеристики

Параметр Минимальное значение Стандартное значение Максимальное значение Единица измерения
Питающее напряжение 4.75 5 5.5 Вольты (постоянный ток)
Рабочая сила тока 10 - 360 Миллиамперы
Коммутируемое напряжение - - 30/250 Вольты (постоянный ток) / Вольты (переменный ток)
Коммутируемая сила тока - - 15 Амперы
Частота - 1 - Герцы
Коммутируемая мощность - - 2770/240 Вольт-Амперы / Ватты
Срок работы реле 100000 Циклы
Размеры 91.2 х 56.15 х 32

Внимание! Заклейте двумя слоями изоленты места, где Raspberry Pi может прикоснуться к релейному кейпу (например, на порте Ethernet) – это позволит избежать контакта между ними. Не работайте с напряжением выше 35 вольт постоянного тока.

Описание и расположение компонентов

Использование

Эта глава написана Джоном М. Уарго (John M. Wargo), и разработчики выражают за этот вклад свою благодарность. Они слегка изменили оригинальный текст, чтобы он соответствовал wiki-статьям о продуктах Seeed Studio. Оригинал статьи можно прочесть по этой ссылке.

Для настройки кейпа и проверки того, работает ли он, нужно проделать следующее:

  • Шаг 1. Подключить релейный кейп к Raspberry Pi
  • Шаг 2. Включить программный интерфейс I2C в Raspbian
  • Шаг 3. Проверить, что Raspberry Pi распознает плату
  • Шаг 4. Запустить тестовое приложение
  • Шаг 5. Запустить код на Python, чтобы проверить работоспособность устройств

Теперь о каждом шаге более подробно.

Шаг 1. Подключение релейного кейпа к Raspberry Pi

Делается это просто. Вам нужно лишь воткнуть штырьковые гребешки Raspberry Pi (их нужно подсоединить к Pi заранее) в контакты-отверстия релейного кейпа. Перед подключением кейпа и платы рекомендуем приклеить поверх Ethernet-порта Raspberry Pi несколько слоев изоленты. Если вы подключаете их друг к другу без стоек (как это сделано на фото ниже), есть шанс того, что релейный кейп прикоснется к корпусу Ethernet-порта, что может повлечь проблемы.

Если вы делаете серьезный проект, то лучше воспользоваться именно стойками, а не изолентой, чтобы разместить кейп и Raspberry Pi на определенном расстоянии друг от друга.

Релейный кейп сделан для старой версии Raspberry Pi с 26-контактным гребешком, поэтому при подключении кейпа к Raspberry Pi с 40-контактным гребешком вам нужно будет немного сдвинуть кейп в сторону (см. фото выше). Если контакты не выровнять, то позже могут возникнуть проблемы – проект попросту не будет работать.

Шаг 2. Включение I2C

Релейный кейп коммуницирует с Raspberry Pi при помощи интерфейса I2C. В операционной системе Raspbian этот интерфейс по умолчанию отключен, поэтому перед использованием релейного кейпа I2C нужно включить. Включите Pi и дождитесь, пока она запустит графический интерфейс. Когда он запустится, откройте меню Pi и кликните на Preferences > Raspberry Pi Configuration, как показано на скриншоте ниже:

Откроется новое окно, выберите в нем вкладку Interfaces, как показано на скриншоте ниже. Справа от I2C поставьте точку в пункте Enabled и нажмите на OK. После того, как вы перезапустите ПК, Pi должна увидеть релейный кейп. В следующем разделе мы проверим, так ли это.

Шаг 3. Проверка распознавания

Теперь, когда интерфейс I2C включен, врем проверить, видит ли Raspberry Pi подключенный к ней релейный кейп. Откройте окно терминала на Pi и выполните следующую команду:

i2cdetect -y -r 1

В результате эта команда покажет список распознанных I2C-устройств, как показано на картинке ниже. В данном случае к системе подключен только один I2C-кейп – релейный кейп с адресом «20». Это важное число, и позже вы в этом еще убедитесь.

Чтобы задать I2C-адрес, нужно использовать четыре DIP-переключателя, находящихся на кейпе. Давайте выясним, что произойдет, если изменить их положение. Этих переключателей, повторюсь, четыре. Три из них названы «A0», «A1» и «A2», а четвертый – «NC» (от «not connected», что значит «не подключен»). С помощью одного переключателя можно задать одно из двух значений – HIGH или LOW. Таблица ниже показывает, как при помощи значений переключателей A0, A1 и A2 задать адрес релейного кейпа.

A0 A1 A2 Адрес
HIGH HIGH HIGH 20
LOW HIGH HIGH 21
HIGH LOW HIGH 22
HIGH HIGH LOW 24
HIGH LOW LOW 26
LOW LOW LOW 27

Шаг 4. Запуск тестового приложения

Воспользуйтесь тестовым кодом из этого GitHub-репозитория. Загрузив приложение, откройте окно терминала, пройдите к тому месту, куда загрузили приложение, и запустите его при помощи следующей команды:

python ./seeed_relay_test.py

Когда приложение попросит ввести данные, можете воспользоваться следующими командами:

  • 1on, 2on, 3on и 4on – эти команды позволяют включать реле по отдельности
  • 1off, 2off, 3off и 4off – эти команды позволяют выключать реле по отдельности
  • allon и alloff – эти команды позволят включать/выключать сразу все реле

Шаг 5. Использование Python-модуля

Чтобы воспользоваться модулем в своем Python-приложении, скопируйте модуль («relay_lib_seeed.py») в папку проекта, а затем припишите к началу приложения следующую строчку:

from relay_lib_seeed import

Это добавит к вашему приложению несколько функций:

  • relay_on(int_value). Включает одно реле. Аргумент int_value – это номер реле, которое нужно включить. Допустимы значения между «1» и «4». К примеру, relay_on(1) включит 1-ое реле (которое на самом деле является 0-вым)
  • relay_off(int_value). Выключает одно реле. Аргумент int_value – это номер реле, которое нужно выключить. Допустимы значения между «1» и «4». К примеру, relay_on(4) включит 4-ое реле (которое на самом деле является 3-им)
  • relay_all_on(). Включает сразу все реле
  • relay_all_off(). Выключает сразу все реле

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

# 7 bit address (будет сдвинут влево, чтобы добавить бит чтения/записи)
DEVICE_ADDRESS = 0x20

Это значение – «20». Это адрес, к которому будет обращаться плата. Если положения переключателей на релейном кейпе будут изменены, соответствующим образом нужно будет поменять и значение адреса.

Чтобы увидеть модуль в действии, откройте окно терминала на Raspberry Pi, пройдите к папке куда были распакованы файлы с GitHub, и выполните следующую команду:

python ./relay_lib_seeed_test.py

Это приложение сделает следующее:

  • На секунду включит все реле
  • Выключит все реле
  • Начнет поочередно включать/выключать все реле с 1-ого по 4-ое

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

При включении реле на кейпе будут зажигаться соответствующие светодиоды. К сожалению, на плате они расположены вразнобой – сначала светодиод для 1-ого реле, потом для 3-его, потом для 2-ого, потом для 4-ого. По этой причине светодиоды будут зажигаться не по порядку.

Код, который выполняет эти действия, выглядит следующим образом:

# Включаем все реле.
relay_all_on()
# Ждем секунду.
time.sleep(1)
# Выключаем все реле.
relay_all_off()
# Ждем секунду.
time.sleep(1)
# Теперь поочередно и бесконечно включаем/выключаем все реле.
while True:
for i in range(1, 5):
   relay_on(i)
   time.sleep(1)
   relay_off(i)

Вот и все. Наслаждайтесь.

Полезные ссылки

См.также

Внешние ссылки