OrangePi-ZEROを使ってみる

GPIO Pythonライブラリ

前回、ZERO専用のWiringOPライブラリ(WiringOP libary for the Orange Pi Zero)を紹介しました。
となると、気になるのがPythonライブラリです。
こちらこちらでOPI-PCのPythonライブラリ を 紹介しています。
ZEROでも同じように使えるのかどうか調べてみました。

orangepi_PC_gpio_pyH3

https://github.com/duxingkei33/orangepi_PC_gpio_pyH3

ライブラリ内で指定するピン番号は以下の様になります。
OPI-PCとの互換性はありません。
()内の表記のあるピンは番号で指定しても、PORTオブジェクトで指定しても構いません。
()内の表記のないピンはOPI-PCには無い(正確にはSOCにはあるが、ピンヘッダーに出ていない)ポートなので
番号で指定する必要が有ります。
ライブラリ内で指定する番号 物理Pin番号 ライブラリ内で指定する番号

1 2
12(port.PA12) 3 4
11(port.PA11) 5 6
6(port.PA6) 7 8 198(port.PG6)

9 10 199(port.PG7)
1(port.PA1) 11 12 7(port.PA7)
0(port.PA0) 13 14
3(port.PA3) 15 16 19(port.PA19)

17 18 18(port.PA18)
15 19 20
16 21 22 2(port.PA2)
14(port.PA14) 23 24 13(port.PA13)

25 26 10(port.PA10)

以下のコードで動作を確認することができます。
# -*- coding: utf-8 -*-
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
import sys

PIN = port.PA10

argvs = sys.argv
argc = len(argvs)

if (argc == 2):
  PIN = int(argvs[1])

print "PIN=",PIN
gpio.init()
gpio.setcfg(PIN, gpio.OUTPUT)

for _ in xrange(5):
    gpio.output(PIN,True)
    time.sleep(1.0)
    gpio.output(PIN,False)
    time.sleep(1.0)

以下のコードでオンボードの赤のLEDがLチカします。
# -*- coding: utf-8 -*-
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
import sys

PIN = 17
gpio.init()
gpio.setcfg(PIN, gpio.OUTPUT)

for _ in xrange(5):
    gpio.output(PIN,True)
    time.sleep(1.0)
    gpio.output(PIN,False)
    time.sleep(1.0)

orangepi_PC_gpio_pyH3 Update

https://github.com/nvl1109/orangepi_PC_gpio_pyH3

オリジナルのライブラリ(https://github.com/duxingkei33/orangepi_PC_gpio_pyH3)から
以下のPORTオブジェクトを変更・追加したライブラリです。
port.STATUS_LED
port.PA15
port.PA16

機能はオリジナルと変わりません。

WiringPi-Python-OP

https://github.com/lanefu/WiringPi-Python-OP

ライブラリ内で指定するピン番号は以下の様になります。
こちらも、OPI-PCとの互換性はありません。
このライブラリはWiringOPのラップ関数ですが、ラップ元のライブラリがWiringOPです。
$HOME/WiringPi-Python-OP/WiringPi にWiringOPのコードを抱えています。
WiringOPでサポートしていないPA15(Pin#19) PA16(Pin#21) はサポートしていません。
ライブラリ内で指定する番号 物理Pin番号 ライブラリ内で指定する番号

1 2
8 3 4
9 5 6
7 7 8 28

9 10 29
0 11 12 21
2 13 14
3 15 16 30

17 18 31
使えない 19 20
使えない 21 22 6
16 23 24 15

25 26 24

以下のコードで動作を確認することができます。
# -*- coding: utf-8 -*-
import wiringpi
import time
import sys

OUTPUT = 1
HIGH = 1
LOW = 0
PIN = 15

argvs = sys.argv
argc = len(argvs)

if (argc == 2):
  PIN = int(argvs[1])

print "PIN=",PIN
wiringpi.wiringPiSetup()
wiringpi.pinMode(PIN,OUTPUT)
wiringpi.digitalWrite(PIN,LOW)
for _ in xrange(5):
  wiringpi.digitalWrite(PIN,HIGH)
  time.sleep(1)
  wiringpi.digitalWrite(PIN,LOW)
  time.sleep(1)


次回は、WiringPi-Python-OPライブラリを、 WiringPi-Python-OP-ZEROライブラリにアップデートする方法を紹介します。