Сборка Orange Pi шлюз

Примечание. Инструкции здесь были протестированы и подтверждены для работы с Orange Pi Zero, неясно, будет ли он работать на других типах Orange.

Подготовка системы

Установка ARMbian

Загрузите и установите образ ОС ARMbian (debian):
https://www.armbian.com/orange-pi-zero/

Установка sunxi-tools

Эти инструменты необходимы для изменений загрузчика системы:

sudo apt-get update
sudo apt-get install sunxi-tools

Настройка spidev

Добавте /dev/spidev1.0 это требуется для /dev/spidev0.0 используется для встроенной флэш-памяти NAND.

bin2fex /boot/script.bin /tmp/orange.fex

Теперь отредактируйте /tmp/orange.fex:

nano /tmp/orange.fex

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

[spi0]
spi_used = 1
spi_cs_bitmap = 1
spi_mosi = port:PC00<3><default><default><default>
spi_miso = port:PC01<3><default><default><default>
spi_sclk = port:PC02<3><default><default><default>
spi_cs0 = port:PC03<3><1><default><default>

[spi1]
spi_used = 1
spi_cs_bitmap = 1
spi_cs0 = port:PA13<2><1><default><default>
spi_sclk = port:PA14<2><default><default><default>
spi_mosi = port:PA15<2><default><default><default>
spi_miso = port:PA16<2><default><default><default>

[spi_devices]
spi_dev_num = 2

[spi_board0]
modalias = "spidev"
max_speed_hz = 33000000
bus_num = 0
chip_select = 0
mode = 0
full_duplex = 1
manual_cs = 0

[spi_board1]
modalias = "spidev"
max_speed_hz = 33000000
bus_num = 1
chip_select = 0
mode = 0
full_duplex = 1
manual_cs = 0

Затем перекомпилируйте файл fex:

sudo fex2bin /tmp/orange.fex /boot/script.bin

Перезагрузите систему:

sudo reboot

Теперь должны быть 2 файла устройств:

$ ls -l /dev/spidev*
crw------- 1 root root 153, 0 Jan 11 16:31 /dev/spidev0.0
crw------- 1 root root 153, 1 Jan 11 16:31 /dev/spidev1.0

Загрузите модуль GPIO

sudo modprobe gpio-sunxi

Добавьте строку gpio-sunxi в /etc/modules для автоматической загрузки модуля во время загрузки:

echo "gpio-sunxi" >> /etc/modules

Загрузка MySensors

Примечание. Поддержка OrangePi теперь включена в официальный репозиторий разработки MySensors.

git clone https://github.com/mysensors/MySensors.git
cd MySensors

Настройка

Всегда используйте номер GPIO для установки радио. Если вы следуете приведенной ниже схеме соединений, контакт CE подключен к выводу 22, который является номером 2 GPIO, а CS подключен к выходу 24, который является номером 13 GPIO.

./configure --spi-spidev-device=/dev/spidev1.0 --my-transport=nrf24 --my-rf24-ce-pin=2 --my-rf24-cs-pin=13

Последовательный порт

Если по какой-то причине вы не можете использовать контакты GPIO в Orange Pi, вы можете подключить радио к arduino с эскизом GatewaySerial и использовать через последовательный порт:

./configure --my-gateway=serial --my-serial-port=/dev/ttyACM0 --my-serial-baudrate=115200

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

Если вы используете контроллер на Orange Pi, который не поддерживает связь со шлюзом через ethernet, вы можете использовать виртуальный последовательный порт:

./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyMySensorsGateway

Для некоторых контроллеров необходимо использовать более простое имя: например, /Dev/ttyUSB020 (проверьте, чтобы он был свободен).

MQTT

Ниже приведен пример создания шлюза MQTT:

./configure --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-publish-topic-prefix=mysensors-out --my-mqtt-subscribe-topic-prefix=mysensors-in --my-mqtt-client-id=mygateway1

Сборка

Чтобы собрать шлюз, выполните команду:

make

Если во время компиляции ошибок не было, будет создан файл bin/mysgw.

Тест

Первый раз, запустите шлюз с включенными сообщениями отладки, чтобы убедиться, что он работает:

sudo ./bin/mysgw -d

Следующее сообщение указывает, что связь с модулем nrf24 не удалась:

mysgw: Starting gateway...
mysgw: Protocol version - 2.2.0-beta
mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.2.0-beta
mysgw: TSM:INIT
mysgw: TSF:WUR:MS=0
mysgw: !TSM:INIT:TSP FAIL
mysgw: TSM:FAIL:CNT=1
mysgw: TSM:FAIL:PDT

Успешный вариант:

mysgw: Starting gateway...
mysgw: Protocol version - 2.2.0-beta
mysgw: MCO:BGN:INIT GW,CP=RNNG---,VER=2.2.0-beta
mysgw: TSF:LRT:OK
mysgw: TSM:INIT
mysgw: TSF:WUR:MS=0
mysgw: TSM:INIT:TSP OK
mysgw: TSM:INIT:GW MODE
mysgw: TSM:READY:ID=0,PAR=0,DIS=0
mysgw: MCO:REG:NOT NEEDED
mysgw: Listening for connections on 0.0.0.0:5003
mysgw: MCO:BGN:STP
mysgw: MCO:BGN:INIT OK,TSP=1

Установка

Чтобы установить запустите:

sudo make install

Эта команда также добавит инструкции по загрузке шлюза после перезагрузи.

Подключение

Oragen Pi Zero

NRF24L01+ радио

OrangePi Pin No. NRF24L01+ Цвет
GND GND Чёрный
3.3V VCC Красный
22 / GPIO2 CE Оранжевый
24 / GPIO13 CSN/CS Жёлтый
23 / GPIO14 SCK Зелёный
19 / GPIO15 MOSI Синий
21 / GPIO16 MISO Фиолетовый
Не поддерживается IRQ Серый