Электронный компонент:Релейный кейп 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)
Вот и все. Наслаждайтесь.
Полезные ссылки
- ZIP-архив со схемой релейного кейпа v1.0 для Raspberry Pi
- PDF-файл со схемой релейного кейпа v1.0 для Raspberry Pi
- Даташит HLS8L
- Даташит PCAL9535A
- Тестовый код