ФОРУМ КУПИТЬ

Последние статьи из блога

ВСЕ СТАТЬИ

RPi-MegaD-Adapter - использование исполнительных модуей MegaD вместе с Raspberry Pi

28/06/2020 15:49:58

Микрокомпьютеры Raspberry Pi очень популярны у любителей домашней автоматизации. И это вполне закономерно. При скромной цене Raspberry Pi предлагает сравнительно неплохую производительность и имеет на борту все самое необходимое: USB, Ethernet, Wi-Fi, набор портов GPIO. К этому стоит добавить хорошую надежность и огромное сообщество помогающих друг другу пользователей.

RPi находит применение в совершенно разных областях Умного Дома. Например, я использовал этот мини-ПК для изготовления вызывной SIP-панели домофона, для автоматизации садового петушка, в качестве речевой "говорилки" сообщений сервера. Многие устанавливают Raspberry Pi даже в качестве сервера. В целом платформа предоставляет пользователям широкие возможности.

Но если со стандартными интерфейсами RPi (сеть, USB, камера, аудио) все понятно, то GPIO (универсальные порты ввода-вывода) часто остаются практически незадействованными. А ведь их достаточно много. Отчасти эта ситуация обусловлена сложностью подключения. Необходимо хотя бы на минимальном уровне разбираться в электроника, знать за какой конец держать паяльник и иметь под рукой всякие там резисторы и конденсаторы. Кроме этого, не вполне удобно реализовано в RPi питание через microUSB или определенные пины разъема GPIO.

Адаптер для подключения к Raspberry Pi (shield) готовых модулей
RPi-MegaD-Adapter (shield)

Поэтому возникла идея изготовления адаптера (Shield'а), который бы обеспечивал возможность подключения к Raspberry Pi любых стандартных исполнительных модулей семейства MegaD. Так можно было бы легко задействовать все доступные порты микрокомпьютера. А RPi стал бы выступать в роли "головы" для исполнительных модулей MegaD вместо контроллера MegaD-2561.

Адаптер подключается к 40-пиновой гребенке RPi (типа "папа"), с помощью разъема GPIO IN (типа "мама"), смонтированного снизу платы.

Сверху адаптера установлено два 34-пиновых разъема XP1 и XP2 для подключения с помощью шлейфов модулей MegaD-8I7O-R, MegaD-8I7O-SD, MegaD-8I7O-S, MegaD-14-R, MegaD-14-IOR. Также установлен 40-пиновый повторитель GPIO. Это сделано для того, что иметь доступ к отдельным пинам Raspberry Pi, если используется только один исполнительный модуль.

Raspberry Pi с установленным адаптером RPi-MegaD-Adapter
Адаптер установлен на RaspberryPi 3

На плате адаптера смонтирован DC-DC преобразователь 12В->5В (2А). Таким образом, пользователю нужно подключить к клеммнику POWER IN только 12В от внешнего блока питания. Это напряжение будет использоваться и для питания исполнительных модулей MegaD и через преобразователь для питания Малинки. Дополнительно 5В через microUSB подключать не нужно! Зеленые светодиоды 12V OK и 5V OK сообщат о наличии напряжения и корректной работе конвертера питания. На плате также присутствует клеммник 5V IN/OUT. Этот клеммник можно использовать для подключения периферии, которой требуется 5В.

Крепежные отверстия на плате адаптера и RPi совпадает, что позволяет закрепить адаптер с помощью нейлоновых стоек и винтов.

 

Конфигурационные джамперы адаптера

Любой стандартный исполнительный модуль MegaD имеет на борту обвязку для 15 портов. Например MegaD-8I7O-R - это 7 стандартных входов с опторазвязкой, 7 релейных выходов 10А и 1 цифровой вход. Два исполнительных модуля - это обвязка 30 портов. Но у малины только 28 GPIO портов. Поэтому на плате адаптера смонтировано 4 джампера - по 2 на каждый разъем.

Джамперы JP1 и JP2

У Малины есть пины 27 и 28, которые именуются ID_SD и ID_SC (I2C ID EEPROM). Считается, что в процессе загрузки RPi пытается найти на этих пинах внешний EEPROM, в котором содержится информация для автоматической настройки GPIO. Одни пользователи считают, что к этим пинам не следует подключать что либо. Другие же не видят препятствий для использования GPIO0 и GPIO1 в своих целях. Поэтому с помощью джамперов JP1 и JP2 можно задать, подключать порты GPIO0/GPIO1 к портам P6 разъемов XP1/XP2 или нет.
Джампер установлен - соответствующий порт RPi соединен с портом P6 исполнительного модуля
Джампер снят - соответствующий порт RPi отключен от порта P6 исполнительного модуля

Джамперы JP3 и JP4

Так как общее количество портов, включая GPIO0 и GPIO1, у RPi всего 28, а не 30, необходимо было решить, какие порты исполнительного модуля отцепить. Но дело в том, что ценность обвязки порта во-многом зависит от типа исполнительного модуля. Так, например, в MegaD-14-R любой порт P0-P13 (реле) ценнее, чем P14 (цифровой вход). В то же время в MegaD-14-IOR все наоборот - релейный выход P14 ценнее любого входа P0-P13. Поэтому решено было установить два джампера, по одному на каждый исполнительный модуль, которые коммутирую GPIO26/GPIO20 либо на P0 либо на P14 исполнительного модуля.
Правое положение - соответствующий порт RPi подключен к P0
Левое положение - соответствующий порт RPi подключен к P14

 

Особенность портов GPIO02, GPIO03, GPIO14

Порты GPIO02 (P7/XP1) и GPIO03 (P7/XP2) снабжены в RPi аппаратной подтяжкой номиналом 1,8кОм. Это упрощает подключение различных цифровых датчиков. Но данная особенность приводит к тому, что если к разъемам XP1/XP2 подключены модули MegaD-8I7O или MegaD-14-R, то порт P7 будет включен, пока порт не GPIO02/GPIO03 не настроен как OUT (выход).

Частично эту проблему можно решить, добавив в /boot/config.txt следующую запись:

gpio=2,3=op,dl

Тогда порт P7 исполнительного модуля при старте Raspberry Pi моргнет всего на долю секунды, пока загрузчик не изменит тип порта на OUT.
Это стоит учитывать при подключении к P7 различных нагрузок. Если этот порт используется для управления освещением, то кратковременное включение при старте или перезагрузке Малинки не будет являться существенной проблемой. Ну а при желании можно легко удалить резисторы R23 и R24 (подтяжка GPIO02, GPIO03) с платы Raspberry Pi. Это полностью устранит данную особенность портов, если они используются как выходы.

Raspberry Pi. Подтягивающие резисторы R23, R24 портов GPIO02, GPIO03
Резисторы подтяжки портов GPIO02, GPIO03

Похожая ситуация с UART-портом GPIO14 (P8). Он также будет включаться при загрузке, но не из-за подтяжки, ее там попросту нет, а из-за того, что по умолчанию в Raspberry Pi включен консольный вывод через Serial-интерфейс (UART). Решается запуском raspi-config и отключением этой функции.

Отключение Serial interface. raspi-config
Отключение консольного вывода через raspi-config

 

Работа с ШИМ-портами

С обычными портами все более-менее понятно. Их можно конфигурировать как IN или OUT и управлять любым удобным способом.
Например, так:

echo 17 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
echo "1" > /sys/class/gpio/gpio17/value

Необходимо учитывать, что при работе со входами исполнительных модулей MegaD, порт в режиме IN в RPi будет в состоянии "0" при отжатой кнопке и в состоянии "1" при нажатой.

Однако к RaspberryPi можно подключить и модуль MegaD-8I7O-SD с 3 диммируемыми портами. Для управления диммированием требуются ШИМ-порты.
В Малинке два независимых аппаратных ШИМ-порта: GPIO18 (выведен на XP1/P10) и GPIO19 (выведен на XP1/P10)

Для работы с этими портами проще всего использовать программу gpio из пакета wiringpi.

sudo apt-get install wiringpi
gpio -g mode 18 pwm
gpio -g pwm 18 512

Но один ШИМ-порт на разъем - это недостаточно. Ведь в MegaD-8I7O-SD три диммируемых канала.
Выход предлагает программа pi-blaster, которая позволяет наделить функцией PWM любой порт RPi.

sudo apt-get install git
git clone https://github.com/sarfata/pi-blaster.git
cd pi-blaster/
./autogen.sh
./configure
make
sudo ./pi-blaster
echo "18=0.2" > /dev/pi-blaster
echo "24=0.5" > /dev/pi-blaster

Какие именно порты будут обрабатываться программой pi-blaster можно задать в исходниках (pi-blaster.c).

 

Крепление Raspberry Pi и адаптера к DIN-рейке

В текущий момент времени доступна масса различных способов крепления RPi к DIN-рейке. Многие изделия можно напечатать на 3D-принтере. Вот несколько вариантов.

Raspberry Pi DIN-rail mount clips
Клипсы напечатаны на 3D-принтере

Raspberry Pi DIN-rail mount holder
Держатель напечатан на 3D-принтере. Фото с другой стороны

Raspberry Pi универсальный кронштейн на DIN-рейку
Кронштейн универсальный с возможностью быстрого демонтажа платы

 

Не только Raspberry Pi

Важно отметить, что описанный шилд можно применять не только с Малиной. Его можно использовать с любым микро-ПК, который совместим с 40-пиновым GPIO-разъемом Raspberry Pi.
На текущий момент известны следующие совместимые микрокомпьютеры:

  • Orange Pi
  • Rock64 Media Board
  • Asus Tinker Board
  • Le Potato
  • Banana Pi
  • Odroid-C2 (?)
  • Rock Pi 4 (?)

 

Соответствие портов Raspberry Pi и портов исполнительных модулей MegaD
RPi-MegaD-Adapter-ports.xls

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2020-07-01 15:57:51 | Владимир
А у Вас есть файлы для 3D-печати креплений для малины на дин-рейку?Не поделитесь, на почту?


2020-07-02 22:31:28 | Andrey_B
Владимир, я их не сам печатал. Покупал в словацком Интернет-магазине. Но там не дают исходников. Только сами изделия можно приобрести.


2020-07-29 11:08:46 | THK
Андрей, добрый день!
сразу напрашивается вопрос - это задел для аналога "Меги" на малине или аналогичных компов?
Кстати, Orange Pi Zero H2 с 512мб, OS Armbian v 5.59 работает 24х7 уже второй год без каких либо проблем. На ней крутятся 2 демона для сигнализации CCU825 - СCUProxy и мой из этой темы https:/www.ab-log.ru/forum/viewtopic.php?f=1&t=1527&start=20
ИМХО, конечно, при тех ценах на Orange Pi, которые есть сейчас, есть смысл рассматривать их в качестве головы для автономных девайсов.


2020-07-29 11:27:08 | Andrey_B
Виктор, скорее это не задел, а альтернатива. Микроконтроллеры хороши тем, что практически неубиваемы, надежны, почти ничего не потребляют. У них не может кончиться место на диске, у них не выйдет из строя накопитель, они не способны заразиться какой-нибудь гадостью, а замена контроллера занимает минуты, не требуя установки и настройки ОС. Но минусы тоже есть, которые связаны с ограниченным количеством ресурсов. Поэтому я не рассматриваю в данный момент мини-ПК как полноценную замену микроконтроллеру в среднесрочной перспективе, но как альтернативу или дополнительную возможность - почему бы и нет...


2020-10-13 07:04:49 | Илья
Добрый день! Как управлять портами / считывать данный с датчиков с модулей расширения, подключенных к малине?


2020-10-13 08:51:41 | Andrey_B
Илья, это описано в документации, статьях, инструкциях для Raspberry Pi.


2020-10-13 19:06:15 | Илья
Жалко,что нет такого приятного и дружелюбного веб-интерфейса как на megaD


2024-10-29 10:49:36 | Роман
Где его можно приобрести?


2024-10-29 13:56:32 | Andrey_B
Роман, в разделе "Купить".