Raspberry PiのGPIOの学習として、LEDを光らせる通称Lチカを教材にすることが多いと思います。ただ、これだけだとLEDを光らせるだけで、GPIOの使い方は学習出来るものの、これを発展させて何かシステムを構築するのは難しいのではないでしょうか。この記事では、リレーをRaspberry Piから駆動し、リレーの接点を取り込んでみたいと思います。これにより、Raspberry Piから周辺機器を運転/停止したり、PLCのIOを動かすことが出来るようになります。
下の記事でRaspberry Piの種類と購入先の情報をまとめています。ご購入を検討されてはいかがでしょうか。
駆動するリレー回路
Raspberry PiのGPIOは、下の記事の通り、3.3V出力で、かつ供給電流が16mAしかありません。一方、3.3Vの小型リレーでも駆動電流100mAが必要です。そのため、Raspberry PiのGPIOから直接リレーを駆動することは出来ません。
リレーをRaspberry Piから駆動する場合、何らかのドライブ回路が必要になります。今回は、リレー駆動回路が一体となっている市販の基板を使用します。
使用するリレー基板(リレー駆動回路込)
AMAZONで購入可能なもので、使用出来そうなものをいくつか紹介します。
- HiLetgo 2個セット 5V 1チャンネルリレーモジュール 5V 高低レベル トリガー
- 1 Channel Relay Module DC 5V for Arduino Raspberry Pi DSP AVR - 2pcs in Pack by Devbattles
その他必要なもの
Raspberry Piの環境以外で、その他必要になるものです。
- Kuman 120pcs ジャンパーワイヤー 多色デュポンワイヤー
- 抵抗コンデンサLED詰め合わせパック(計20種)
回路図
Raspberry Pi、リレー基板、配線、抵抗が準備出来たら、次の回路図を参考に配線しましょう。GPIOは、好きなポートを選択可能ですが、この例ではGPIO14をリレー駆動信号出力端子、GPIO15をリレーの接点信号の入力端子として使用しています。 GPIO15にプルダウン抵抗を入れています。Raspberry PiではGPIOには内蔵のプルアップ・プルダウン抵抗が含まれているのですが、起動直後ではGPIOの状態が変化するモデルもあるようで、念の為入れています。
Raspberry Pi リレー駆動プログラム
Raspberry Piからリレーを駆動するプログラムをPythonで作成します。作成プログラムは次の通りです。GPIOからリレー駆動信号を出力し、リレーの接点状態を表示するプログラムになります。
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM) # GPIOの接続先を指定する。
channel1 = 14
channel2 = 15
GPIO.setwarnings(False)
GPIO.setup(channel1, GPIO.OUT)
GPIO.setup(channel2, GPIO.IN)
try:
while True:
GPIO.output(channel1, GPIO.HIGH)
sleep(1)
if GPIO.input(channel2)==1:
print('Relay ON')
elif GPIO.input(channel2)==0:
print('Relay OFF')
sleep(1)
GPIO.output(channel1, GPIO.LOW)
sleep(1)
if GPIO.input(channel2)==1:
print('Relay ON')
elif GPIO.input(channel2)==0:
print('Relay OFF')
sleep(1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
実行結果
Raspberry Piで作成したPythonプログラムを実行しましょう。
sudo python GPIOtest.py
出力結果
リレーがカチ、カチと出力が切り替わり、リレーの接点状態が正しく読み込めていることを確認出来ました。
まとめ
Raspberry PiでPythonプログラムからリレーの駆動を簡単に行うことが出来ました。これを発展させて、Raspberry PiをWebサーバーとして、Webを経由してリレーを動かすことも紹介していきたいと思います。