web-dev-qa-db-ja.com

Armbian 3.4.113以降のOrangePI PC Plus(H3)でGPIOにアクセスする

orangePi PC plus(SoC H3)でArmbian 3.4.113のGPIOにアクセスする方法gpio-sunxiを使用して.fexファイルを編集する古い方法は廃止された(これを共有したい...)

7
ralf htp

一般的な手順は https://linux-sunxi.org/GPIO で説明されています

GPIOピンには、sysfsファイルシステムを介してアクセスします。特定のピンを有効にするには、/sys/class/gpio/exportにエクスポートする必要があります

ピンPA1の場合、コマンドはecho 1 > sys/class/gpio/exportになります。ピン番号は次の式で計算されます。

  (position of letter in alphabet - 1) * 32 + pin number

PA1にはピン番号があります( '[〜#〜] a [〜#〜]'は最初の文字です)1PB2にはピン番号34( '[〜#〜] b [〜#〜]'がありますは2文字目)、PG7はピン番号199( '[〜#〜] g [〜#〜] 'は7番目の文字(7-1)* 32 + 7 = 199)

physicalヘッダーの位置が再び異なります。下の図

物理ヘッダーのピン40であるPG7を有効にするために使用できます

   echo 199 > sys/class/gpio/export

OrangePi PC plus GPIO header

画像のソース: https://orange314.com/Hardware

通常、echo "199" sys/class/gpio/exportのようなechoコマンドはPermission deniedエラーを出します

簡単な解決策は次のとおりです。

GPIOピンの1回限りの操作を行うには、最初にスーパーユーザーとして別のシェルを起動してから、エコーを使用する必要があります。たとえば、ピンA10をオンにするには:

$ Sudo sh
# echo 10 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio10/direction
# echo 1 > /sys/class/gpio/gpio10/value

または、tを使用してサブシェルの作成を回避できます。

$ echo 10 | Sudo tee /sys/class/gpio/export
$ echo out | Sudo tee /sys/class/gpio/gpio10/direction
$ echo 1 | Sudo tee /sys/class/gpio/gpio10/value

ソース: https://forum.armbian.com/index.php?/topic/4052-problem-using-gpio-pins-on-legacy-kernel/

別の方法としては、新しいグループを作成し、/ sys/class/gpioディレクトリのグループをこの新しいグループに変更します。

次のように、gpioというグループを作成し、ユーザーをグループに追加し、gpioなどをエクスポートできます。

Sudo groupadd gpio
Sudo usermod -aG gpio <myusername>
su <myusername>
Sudo chgrp gpio /sys/class/gpio/export
Sudo chgrp gpio /sys/class/gpio/unexport
Sudo chmod 775 /sys/class/gpio/export
Sudo chmod 775 /sys/class/gpio/unexport

これにより、ユーザーはエクスポートおよびエクスポート解除できるようになります。

ピンをエクスポートしたら、chgrpとchmodを使用して(それらの内容を忘れないでください)、通常どおり使用できます。

echo "18" > /sys/class/gpio/export
chgrp -HR /sys/class/gpio/gpio18
chmod -R 775 /sys/class/gpio/gpio18

これで、ユーザーは最初のGPIOピン18にアクセスできます。

ソース: https://www.raspberrypi.org/forums/viewtopic.php?t=5185

echoを権限付きで実行すると、新しいディレクトリが/sys/class/gpioに表示されます。つまり、PA2(物理ヘッダーのピン番号2および番号22)の場合は/sys/class/gpio/gpio2になります。

ピン番号2を設定するには、/sys/class/gpio/gpio2のファイルに特定の値を書き込む必要があります

つまり、ピン2を出力に設定し、「ハイ」書き込み

echo "out" > /sys/class/gpio/gpio2/direction

echo "1" > /sys/class/gpio/gpio2/value

gPIOをシャットダウンするとき、ピンはエクスポートされません。

echo 2 > /sys/class/gpio/unexport for pin 2(PA2、number22on the physical header)

GPIOにアクセスする別の方法はpythonを使用することですが、H3ベースのボードではWiringOPはまだ利用できません。

9
ralf htp