Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Raspberry PiでGPIO制御を行う

今回はいつも調べてしまう、ラズパイでのGPIO制御についてまとめておこうと思います!!
毎度調べるのも手間なので。。。



■環境

今回はraspberry Pi 4を用いて動作確認し、そちらの紹介を行っていきます。

【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】

新品価格
¥6,875から
(2020/12/26 21:01時点)

ただ、raspberry Pi 3でも動作する手順になっています。

■ピン配置の確認

まずはraspberry Piのピン配置について記載していきます。
公式(https://www.raspberrypi.org/documentation/usage/gpio/README.md)より、ピン配置はこちら。
f:id:Elsammit:20201226185453p:plain

コマンドによりピン配置の確認ができます。
こちらのコマンドを実行すると、

pinout

こちらのようにピン配置の結果が得られます。
f:id:Elsammit:20201226185806p:plain

■コマンドでのGPIO制御

では早速GPIO制御についてまとめていきたいと思います!!
今回使用するGPIOですが、
out:gpio17
in:gpio27
で設定していきたいと思います!!
gpio**の部分を自分が使用したいgpioの番号をセットすればOKです。

GPIOを制御するにあたって、

/sys/class/gpio

配下に格納されたファイルを操作していきます。

まずは使用するGPIOを定義していきます。
こちらのようにコマンドを実行すればOKです。

echo 27 > /sys/class/gpio/export
echo 17 > /sys/class/gpio/export

すると、/sys/class/gpio配下に
gpio27、gpio17
が追加されているかと思います。

次に、gpio17、gpio27をin outに変更していきたいと思います。
gpio27をinにするには、

echo in > /sys/class/gpio/gpio27/direction

とすればよく、
gpio17をoutにするためには、

echo out > /sys/class/gpio/gpio17/direction

とすればOKです。

■動作確認

では、正しく設定されているか確認してみます。
GPIOのon(1)/off(0)は、

 /sys/class/gpio/gpio17/value
 /sys/class/gpio/gpio27/value

まずはinから!!
あらかじめGPIO17へボタンを接続しておきます。
ボタン押下せずに

cat  /sys/class/gpio/gpio27/value

を実行すると、

0

が表示されるかと思います。
ボタンを押下しながら、

cat  /sys/class/gpio/gpio27/value

を実行すると、

1

が表示され、gpioのinが有効になっていることが確認できます。

次にout!!
あらかじめLEDを接続しておきます。

echo 1 >  /sys/class/gpio/gpio17/value

とするとLEDが点灯し、

echo 0 >  /sys/class/gpio/gpio17/value

とするとLEDが消灯することが確認できるかと思います。

■最後に

今回はコマンドでのGPIO操作を紹介いたしました。
pythonやgo言語、c言語を用いた場合にもそれぞれ手法があるのでそちらについても後で紹介できればいいな?と思っております。
後、イベント駆動についても紹介出来たらいいな~~