Создание контроллера: разбираемся с GPIO

Макетка для тестирования GPIO

Для начала устанавливаем WiringOP утилиту.

sudo apt-get install build-essential
sudo git clone https://github.com/zhaolei/WiringOP.git -b h3
sudo cd WiringOP
sudo chmod +x ./build
sudo ./build

Проверяем правильность сборки

gpio -v
gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
 
Banana Pro Details:
  Type: Banana Pro, Revision: 1.2, Memory: 1024MB, Maker: LeMaker

Текущее состояние пинов можно посмотреть командой gpio readall, из этого списка нам интересны только первые 26 из колонки Physical. В свою очередь из этого списка пинами ввода/вывода будут только 17 шт, они отмечены цветом.

WiringOP output readall

Сконфигурировать пин в режим вывода или ввода можно командой

gpio export <BCM-PIN> out
gpio mode <wPi-PIN> out

Записать или прочитать значение пина можно командой

gpio write <PIN> 0
gpio write <PIN> 1

перевод в низкое и высокое сосотояние соответственно. Номер пина в этом случае берем из колонки wPi. Собираем макетку и тестируем. Светодиоды подключены через сопротивления 560 Ом.

Физическое размещение пинов на плате

Orange Pi Zero pinout

Физическое размещение пинов Orange Pi Zero

В режиме вывода успешно отработали только некоторые пины: 3, 5, 7, 11, 15, 22 (номера по колонке Physical)

Для контроллера это явно не достаточно и требуется какой-то расширитель портов. Попробую сделать это через интерфейс I2C …

Создание контроллера: подготовка

Основная идея

Создание недорого, легко настраиваемого контроллера домашней автоматизации.

На чем будем строить?

Так как изначально собирался писать на Java (проверим «Java — write once, run everywhere») выбор пал на простые платформы для которых уже существуют JVM. Для пробы взял китайскую разработку Orange Pi Zero, это одноплатный компьютер на процессоре H2 и 512M памяти. Его и будем мучить.

  1. Первое что нужно сделать приклеить на процессор радиатор – он солидно разогревается.
  2. На роль блока питания подойдет любая зарядка от смартфона с выходным током больше 0.6A.
  3. Много есть информации что не каждая карта MicroSD работает с этой платой. Заказывал здесь – проблем не было.
  4. Устанавливаем операционку (я брал здесь). Ставим рекомендованную Armbian – в дистрибутиве уже отрегулирована частота процессора до 1200MHz. Процесс установки описывать не буду, этой информации предостаточно в инете.
  5. Устанавливаем Java 8 SE. Например так:

sudo add-apt-repository “deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main”
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

После установки, по команде
java -version
должны получить что-то подобноее
java version “1.8.0_121”
Java(TM) SE Runtime Environment (build 1.8.0_121b13)
Java HotSpot(TM) Client VM (build 25.121b13, mixed mode)