OrangePi-PC2を使ってみる

WiringOPライブラリ

OPI-PC2(H5)のピンアウトはこちらに公開され ています。
こちらのOPI- PC(H3)のピンアウトと見比べると、Pin#8,10,19,21,23,24,37のポート番号が違います。
また、SPIデバイスはSPI0ではなくSPI1となっています。

OPI-PC2(H5)に対応したWiringOPはいくつか公開されていますが、ほとんどがOPI-PC用のWiringOPをベースに、
64Bit化の改造を加ただけで、ポートマッピングを変更していないので、Pin#8,10,19,21,23,24,37のLチカができない不 具合が有ります。
こちらで公開されている WiringOPはこれらのピンも含めて、全てのPinでLチカすることができます。

githubの仕様が変わったみたいで、特定のブランチを指定してダウンロードするコマンドが変わりました。
ダウンロードとインストールは以下のコマンドで行います。
$ git clone -b h5 https://github.com/FREEWING-JP/WiringOP

$ cd WiringOP

$ chmod +x ./build

$ sudo ./build

ライブラリ内部で、RaspberryPiやOrangePi-PCとピン番号の互換をとっているので、WiringPi関数を使ったアプリケー ションでは
RPI/OPI-PCとOPI-PC2は互換性が有りますが、ハードウェアレベルではピン互換はありません。

こちらでArmbian+WiringOPでは 4つのピン番号があることを紹介しています。

@WiringOPでwiringPiSetupPhys()で初期化する場合
AWiringOPでwiringPiSetup()で初期化する場合
BWiringOPでwiringPiSetupGpio()で初期化する場合
Cデバイスファイルを使って操作するときの番号

WiringOP付属のgpioコマンドで操作するときの番号は@ABの何れかの番号になります。
 gpio -1 mode/write pin# (このときの番号は@の番号)
 gpio mode/write pin# (このときの番号はAの番号)
 gpio -g mode/write  pin# (このときの番号はBの番号)

OPI-PCとOPI-PC2ではCの番号が違います。
Aの番号 Bの番号 Cの番号 @の番号 Aの番号 Bの番号 Cの番号
OPI-PC OPI-PC2 OPI-PC OPI-PC2




1 2



8 2 12 12 3 4



9 3 11 11 5 6



7 4 6 6 7 8 15 14 13 69




9 10 16 15 14 70
0 17 1 1 11 12 1 18 110 110
2 27 0 0 13 14



3 22 3 3 15 16 4 23 68 68




17 18 5 24 71 71
12 10 64 15 19 20



13 9 65 16 21 22 6 25 2 2
14 11 66 14 23 24 10 8 67 13




25 26 11 7 21 21
30 0 19 19 27 28 31 1 18 18
21 5 7 7 29 30



22 6 8 8 31 32 26 12 200 200
23 13 9 9 33 34



24 19 10 10 35 36 27 16 201 201
25 26 20 107 37 38 28 20 198 199




39 40 29 21 199 199

Cの番号の違いは「gpio readall」で分かります。
こちらがOPI-PCの結果です。


こちらがOPI-PC2の結果です。
上と見比べるとPin#8,10,19,21,23,24,37のGPIO番号が違います。
この違いでOPI-PC用のライブラリはOPI-PC2では動きません。


Pin#37に接続したLEDをLチカする場合はこのようになります。
$ sudo sh -c "echo 107 >/sys/class/gpio/export"
$ sudo sh -c "echo out >/sys/class/gpio/gpio107/direction"
$ sudo sh -c "echo 1 > /sys/class/gpio/gpio107/value"
$ sudo sh -c "echo 0 > /sys/class/gpio/gpio107/value"
$ sudo sh -c "echo 107 > /sys/class/gpio/unexport"

$ gpio -g mode 26 out
$ gpio -g write 26 on
$ gpio -g write 26 off

$ gpio mode 25 out
$ gpio write 25 on
$ gpio write 25 off

$ gpio -1 mode 37 out
$ gpio -1 write 37 on
$ gpio -1 write 37 off

SPIを使う場合、エディターで[/boot/armbianEnv.txt]に2行追加する必要が有ります。
これを追加しないと、SPIデバイスが出現しません。
overlays=spi-spidev
param_spidev_spi_bus=1

OPI-PC2でSPIを使うときは注意が必要です。
RPIもOPI-PCもSPIチャネル0を使っていますが、OPI-PC2はSPIチャネル1を使っています。
従って、SPIデバイスは以下のデバイスとなります。
直接このファイルをアクセスするライブラリでは、デバイスを変える必要が有ります。
$ ls /dev/spi*
/dev/spidev1.0