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ライブラリが有りました。



WiringOP-ZERO内部で、WiringOPとピンの互換をとっているので、WiringPi関数を使ったC言語では
OPI-PCとZEROは互換性が有りますが、ハードウェアレベルではピン互換はありません。
こちらでArmbian+WiringOPでは 4つのピン番号があることを紹介しています。

@WiringOPで物理的なピン番号を使う場合
AWiringOPでWiringPi番号を使う場合
BWiringOPでGPIO番号を使う場合
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の番号 OPI-PCのCの番号 ZEROのCの番号 @の番号 Aの番号 Bの番号 OPI-PCのCの番号 ZEROのCの番号




1 2



8 2 12 12 3 4



9 3 11 11 5 6



7 4 6 6 7 8 15 14 13 198




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



3 22 3 3 15 16 4 23 68 19




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



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




25 26 11 7 21 10

この違いは「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 on1
$ 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 24 out
$ gpio -g write 24 on1
$ 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


SPI使用時の注意

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

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