OrangePi-ZEROを使ってみる

WiringOP-ZEROライブラリ

OPI-PCのピンヘッダーは40ピンですが、ZEROのGPIOピンヘッダーは26ピンです。
今まで、OPI-PCの1-26ピンがそのまま出ているのかと思っていたので真面目に調べていませんでした。

こちらにZERO のピンヘッダーの解説が有ります。
よくよく見てみると、OPI-PCとアサインが違うことが分かりました。
特に、Pin#19 と Pin#21 に、OPI-PCにはない PA15 PA16 が出ています。
PA15 PA16 はWiringOPでは使うことができません。
調べてみるとZERO専用 のWiringライブラリが有りました。



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

<2017年10月11日追記>
今までwiringPiSetup()でも、wiringPiSetupGpio()でも、RaspberryPiやOrangePi-PCとピ ン番号の互換が有りましたが
なぜか最新のライブラリではwiringPiSetupGpio()では互換が失われました。
wiringPiSetup()のピン番号は互換性が有ります。

こちらで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とZEROではCの番号が違います。
Aの番号 Bの番号 Cの番号 @の番号 Aの番号 Bの番号 Cの番号
OPI-PC ZERO OPI-PC ZERO OPI-PC ZERO OPI-PC ZERO





1 2




8 2 2 12 12 3 4




9 3 3 11 11 5 6




7 4 4 6 6 7 8 15 14 20 13 198





9 10 16 15 21 14 199
0 17 17 1 1 11 12 1 18 5 110 7
2 27 27 0 0 13 14




3 22 22 3 3 15 16 4 23 0 68 19





17 18 5 24 1 71 18
12 10 利用できない 64 15 19 20




13 9 利用できない 65 16 21 22 6 25 25 2 2
14 11 15 66 14 23 24 10 8 14 67 13





25 26 11 7 19 21 10

Cの番号の違いは「gpio readall」で分かります。





Pin#18に接続したLEDをLチカする場合はこのようになります。

OPI-PCの場合

$ sudo sh -c "echo 71 >/sys/class/gpio/export"
$ sudo sh -c "echo out >/sys/class/gpio/gpio71/direction"
$ sudo sh -c "echo 1 > /sys/class/gpio/gpio71/value"
$ sudo sh -c "echo 0 > /sys/class/gpio/gpio71/value"
$ sudo sh -c "echo 71 > /sys/class/gpio/unexport"
 
$ gpio -g mode 24 out
$ gpio -g write 24 on
$ gpio -g write 24 off

$ gpio mode 5 out
$ gpio write 5 on
$ gpio write 5 off

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

ZEROの場合

$ sudo sh -c "echo 18 >/sys/class/gpio/export"
$ sudo sh -c "echo out >/sys/class/gpio/gpio18/direction"
$ sudo sh -c "echo 1 > /sys/class/gpio/gpio18/value"
$ sudo sh -c "echo 0 > /sys/class/gpio/gpio18/value"
$ sudo sh -c "echo 18 > /sys/class/gpio/unexport"

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

$ gpio mode 5 out
$ gpio write 5 on
$ gpio write 5 off

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


SPI使用時の注意

ZEROでSPIを使うときは注意が必要です。
RpiもOpi-PCも物理ピン#24はSPI-CE0(GPIO8)ですが、ZEROの物理ピン#24はSPI-CE1(GPIO8)となって います。
SPIを使うプログラムは変更が必要になります。

次回はZEROで使えるPythonライブラリを紹介します。