PINE64のGPIO()でLEDを点灯させるための手順をまとめました。
Raspberry PIシリーズと同様にファイルシステムからの出力が可能です。
しかし、ファイルシステムのGPIOポートを特定するのは、いくつかの手順が必要です。
[ad#ad-1]
GPIOポートの特定
PINE64のRPI2互換ポートは、以下のピンアサインになっています。
http://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdfより抜粋
linux-sunxi.orgによれば、以下計算式でGPIOポートの特定が可能です。
(position of letter in alphabet - 1) * 32 + pin number
今回は、PI-2connectorのPIN11(GPIO PC7ポート)を使用します。
となると、GPIOポートの特定は、以下の通りとなります。
(3 - 1) * 32 + 7 = 71
Cは、アルファベット順で3番目です。
ピンナンバーは7なので、上の式で求められます。
GPIOポートの番号は、以下の通りになります。
GPIO-Ch | RPI2 Connector | GPIO-Ch | |||
3.3V | - | 1 | 2 | - | 5V |
PH3 | 227 | 3 | 4 | - | 5V |
PH2 | 226 | 5 | 6 | - | GND |
PL10 | 362 | 7 | 8 | 32 | PB0 |
GND | - | 9 | 10 | 33 | PB1 |
PC7 | 71 | 11 | 12 | 72 | PC8 |
PH9 | 233 | 13 | 14 | - | GND |
PC12 | 76 | 15 | 16 | 77 | PC13 |
3.3V | - | 17 | 18 | 78 | PC14 |
PC0 | 64 | 19 | 20 | - | GND |
PC1 | 65 | 21 | 22 | 79 | PC15 |
PC2 | 66 | 23 | 24 | 67 | PC3 |
GND | - | 25 | 26 | 231 | PH7 |
PL9 | 361 | 27 | 28 | 360 | PL8 |
PH5 | 229 | 29 | 30 | - | GND |
PH6 | 230 | 31 | 32 | 68 | PC4 |
PC5 | 69 | 33 | 34 | - | GND |
PC9 | 73 | 35 | 36 | 70 | PC6 |
PC16 | 80 | 37 | 38 | 74 | PC10 |
GND | - | 39 | 40 | 75 | PC11 |
GPIOポートへのアクセス
シェル上でGPIOポートを出力させる方法
シェル上で以下の通りに入力します。
sudo -i cd /sys/class/gpio echo 71 > export cd gpio71 echo "out" > direction echo 1 > value
入力したコマンドの意味を順序ごとに示します。
・rootへ切り替え
・gpioへディレクトリ移動
・GPIOポート71を/sys/class/gpioへエクスポートする。
・gpio71へディレクトリ切り替え
・入出力方向を「出力」へ切り替え
・Hiレベルに設定
なお、Loレベルへの設定は、
echo 0 > value
です。
PINE64のGPIO PC7から、3.3Vで出力されますので、LEDを制限抵抗(このときは1Kohmを接続)をつけてGNDに接続します。
制限抵抗は必ず接続してください。
PINE64の定格を超えるとPINE64を破損する可能性があります。
出力電流の定格
GPIOの吐き出し電流出力は、最大で100mAです。
GND引き込める最大電流量は調べていません。Loサイドで設計されるなら確認を忘れないでくださいね。
GPIO 入力ポートのレベル取得方法
もし、入出力方向を入力にし、そのレベルを確認したい場合は以下のように入力します。
echo "in" > direction cat value
結果は以下のように出力されます。
/sys/class/gpio/gpio71# cat value 1
シェルスクリプトでの活用方法
簡単ですが、以下のように記載すると、およそ1秒ごとにLEDが点滅することになります。
!/bin/sh GPIO_PORT=/sys/class/gpio/gpio71 GPIO_VALUE=$GPIO_PORT/value while true do echo Turn on $GPIO_PORT echo 1 > $GPIO_VALUE sleep 1 echo Turn off $GPIO_PORT echo 0 > $GPIO_VALUE sleep 1 done
情報元
GPIOポートの使用方法について
linux-sunxi.org
http://linux-sunxi.org/GPIO
PINE64ピンアサインについて
PINE64 WIKI
http://wiki.pine64.org