Posted at

ラズパイでLチカをしてみる(入門編)

前回、ラズパイにOSをインストールしたり、基本的なセットアップを行いました。

初めてラズパイをセットアップしてみた

今回は、電子回路を学ぶために、ラズパイを使ってLEDを点滅させてみようと思います。


用意するもの


ラズパイからどうやってLEDを点灯させているかを学ぶ

ラズパイには、GPIOという複数のピンがあり、電子回路に必要なものである。

どう使うかというと、ピンから線を引っ張って、LEDライトやセンサーなどに繋げる。

IMG_20181103_000223のコピー.jpg

これらのピンにはそれぞれ役割があり、電源・グラウンド・GPIOだったりする。

電源とグラウンドというのは、乾電池でいう+極とー極という認識でいいと思う。

GPIOは、ラズパイで操作が行えるピンである。


GPIOは、集積回路やコンピュータボード上の一般的なピンであり、その動作(入力ピンであるか出力ピンであるかを含む)は、実行時にユーザによって制御可能である。GPIOは"General-purpose input/output"の略で、「汎用入出力」を意味する。


どのピンが何の役割かは、公式ドキュメントを参考に。


ラズパイで光らせてみる

回路はこんな感じ。一番シンプルなLED回路。

3.3Vの電源 → 抵抗 → LED → GND という流れ。

スクリーンショット 2018-11-04 22.39.04.png

単にラズパイから電源を供給しているだけなので、一番左の3.3V電源に繋げると、LEDが光る。

IMG_20181102_173748.jpg


Lチカ

次はLEDをチカチカと点滅させてみる。

そのためには電源に繋げるのではなく、代わりにGPIOに繋げてラズパイ側で操作させる。

公式ドキュメントに従ってLチカをしてみる。


回路

先程、3.3V電源に繋げていたものを、GPIO17番に繋げるだけである。

スクリーンショット 2018-11-02 23.28.40.png


ラズパイ上でシステムを組む


使用するモジュールをインストール

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するシステムである。


test.py

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

ラズパイをLチカさせてみた


最後に

ラズパイを使ってLEDを操作してみました。

ただ点滅させただけですが、目の前にあるモノがプログラムで動くのっていいですね!

Webエンジニアとして活動しているので、サイト上で動くものしか作ってこなかったので、IOTはまた違った達成感があります。

なんとなく、入出力のやり方もわかったので、スマートホーム的なものを作ってみようかなと思います!