RaspberryPi
Lチカ
ラズパイ
RaspberryPiZeroW

ラズパイで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はまた違った達成感があります。

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