前回、ラズパイにOSをインストールしたり、基本的なセットアップを行いました。
→ 初めてラズパイをセットアップしてみた
今回は、電子回路を学ぶために、ラズパイを使ってLEDを点滅させてみようと思います。
用意するもの
- ラズパイZERO WH
- LED (今回は、家にあったLEDを代用しています。)
- ミニブレッドボード(はんだ付けなしで電子回路が組める)
- ジャンパーワイヤ(ラズパイとブレッドボードを繋げる線)
- 抵抗 27Ω
ラズパイからどうやってLEDを点灯させているかを学ぶ
ラズパイには、GPIOという複数のピンがあり、電子回路に必要なものである。
どう使うかというと、ピンから線を引っ張って、LEDライトやセンサーなどに繋げる。
これらのピンにはそれぞれ役割があり、電源・グラウンド・GPIOだったりする。
電源とグラウンドというのは、乾電池でいう+極とー極という認識でいいと思う。
GPIOは、ラズパイで操作が行えるピンである。
GPIOは、集積回路やコンピュータボード上の一般的なピンであり、その動作(入力ピンであるか出力ピンであるかを含む)は、実行時にユーザによって制御可能である。GPIOは"General-purpose input/output"の略で、「汎用入出力」を意味する。
どのピンが何の役割かは、公式ドキュメントを参考に。
ラズパイで光らせてみる
回路はこんな感じ。一番シンプルなLED回路。
3.3Vの電源 → 抵抗 → LED → GND という流れ。
単にラズパイから電源を供給しているだけなので、一番左の3.3V電源に繋げると、LEDが光る。
Lチカ
次はLEDをチカチカと点滅させてみる。
そのためには電源に繋げるのではなく、代わりにGPIOに繋げてラズパイ側で操作させる。
公式ドキュメントに従ってLチカをしてみる。
回路
先程、3.3V電源に繋げていたものを、GPIO17番に繋げるだけである。
ラズパイ上でシステムを組む
使用するモジュールをインストール
GPIOを操作するために、gpiozeroを使用
$ pip install gpiozero
これだけだと、エラーが起こる
$ python -c "import gpiozero"
/home/pi/.anyenv/envs/pyenv/versions/3.7.1/lib/python3.7/site-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from rpigpio: No module named 'RPi'
'Falling back from %s: %s' % (name, str(e))))
/home/pi/.anyenv/envs/pyenv/versions/3.7.1/lib/python3.7/site-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from rpio: No module named 'RPIO'
'Falling back from %s: %s' % (name, str(e))))
/home/pi/.anyenv/envs/pyenv/versions/3.7.1/lib/python3.7/site-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from pigpio: No module named 'pigpio'
'Falling back from %s: %s' % (name, str(e))))
ので、追加でモジュールをインストール
pip install RPi.GPIO
pythonでGPIOを操作する
1秒ごとに電源をon/offするシステムである。
from gpiozero import LED
from time import sleep
led = LED(17) # 17はGPIOの番号
while True:
led.on()
sleep(1)
led.off()
sleep(1)
実行すると、LEDが点滅し続ける
$ python test.py
#最後に
ラズパイを使ってLEDを操作してみました。
ただ点滅させただけですが、目の前にあるモノがプログラムで動くのっていいですね!
Webエンジニアとして活動しているので、サイト上で動くものしか作ってこなかったので、IOTはまた違った達成感があります。
なんとなく、入出力のやり方もわかったので、スマートホーム的なものを作ってみようかなと思います!