ころちゃん

木工・電子工作・IoT・作ったもの試したものを記事にして投稿してます

Raspberry Pi Zero WでLチカ

time 公開日:

Raspberry Pi Zero WでLチカ

ラズパイゼロWのGPIOでLチカ(LEDをチカチカ点滅) に挑戦。プログラム言語は使わずにシェルだけで動かしてみました。

動作環境

ハードウェア Raspberry Pi Zero W
OS Raspbian Stretch with desktop:November 2018

上記構成に加えて、無線経由でSSHでログインできる環境と、GPIOピンヘッダの取り付けが必要です。

セットアップの参考

準備物

  • ブレットボード
  • 抵抗1KΩ 1本
  • ジャンパワイヤ 2本
  • LED 1個(赤色を準備)

物理結線

ラズパイゼロWには40本のピンがあり、そのうち26本の制御可能なGPIOピンがあります。今回は分かりやすい様に、一番端の40番のGPIO21と39番のGNDの2つを使ってみました。

画像は公式サイトからお借りしました。

40番をLEDのアノード側に、39番をLEDのカソード側に接続します。

実際の接続状況。赤いケーブルを40番、黒いケーブルを39番に接続しました。

GPIOピンは3.3V出力のため、赤色LEDのVf:2Vより高く、そのままつなぐと壊れてしまいます。抵抗を入れて電流を制限します。

LEDの制御

結線が完了したら、SSHで接続します。割り当たっているIPアドレスを予め調べておきます。OS初期値のログインユーザーは[ユーザー:pi][パスワード:raspberry]です。

ssh pi@192.168.xxx.xxx

ログイン後、GPIOピンの状態を確認してみます。

gpio readall

[Physical]が物理的なボードのピン番号、[BCM]がGPIO番号になります。物理ピン40番がGPIO21だとわかります。初めの頃この番号の不一致に戸惑いましたが、こういうものと慣れるしかないです。

今回利用するGPIO21のModeが[IN]の状態になっているのが確認できます。[IN]は情報を受け取る側のモードです。今回はLEDへ信号を出力するので、モードを[OUT] に変更します。

echo 21 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio21/direction

上記コマンドは、[echo 文字列 > ファイル]の書式で、文字列をファイルに書き込むという意味あいです。GPIOピン[21]を利用し、モードを[OUT]に設定しています。再度GPIOピンの状態を確認してみます。

gpio readall

GPIO21が[IN]から[OUT]のモードに変わったのがわかります。

次はLEDを点灯させるためのコマンドです。[value]に[1]を入れると点灯、[0]を入れると消灯です。

//点灯
echo 1 > /sys/class/gpio/gpio21/value
//消灯
echo 0 > /sys/class/gpio/gpio21/value

valueの値を確認すると、書き換わっているのが確認できます。

//valueの値確認
cat /sys/class/gpio/gpio21/value

点滅

点灯と消灯を0.5 秒間隔で交互に実行し点滅させます。無限ループなので、[Ctrl]+[c]で停止します。

while :
do
echo 1 > /sys/class/gpio/gpio21/value
sleep 0.5
echo 0 > /sys/class/gpio/gpio21/value
sleep 0.5
done

1.5秒点灯、0.5秒消灯の変則的な点滅を5回繰り返します。画面上の表示とLEDの点灯がリンクします。

for i in `seq 1 5`
do
echo "$i 回目の点灯です。"
echo 1 > /sys/class/gpio/gpio21/value
sleep 1.5
echo 0 > /sys/class/gpio/gpio21/value
echo "消灯です。"
sleep 0.5
done

接続のタイミングで点灯するピンとしないピンの違い

他の方が書いたLチカのサイトを見てて、気になった記載がありました。それは[value]に1を入れなくても、ケーブルをLEDに接続したタイミングで点灯するというものです。自分の環境で試してみたところ、確かに接続したタイミングでLEDが点灯するGPIOピンが存在しました。

今回試したGPIO21は接続したタイミングでは点灯しなかったので、点灯するピンとしないピンの何が違うのか確認してみた結果、以下の通りでした。LEDを接続したタイミングで点灯するGPIOピンは、[gpio readall]コマンドで、Vの値が最初から1になっていました。0になっているピンは接続しても点灯しません。

覚えておくと便利

GPIOピンの確認は、[gpio readall] コマンドのほかに、以下のがあります。

pinout

物理ピンとGPIOピンの情報が確認できます。

sponsored link

down

コメントする




CAPTCHA


管理人

ころちゃん

木工で日用品を作ったり、懐中電灯を改造したりしてます。まだまだ素人ですがどうぞよろしく。



sponsored link

アーカイブ