はじめに

こちらは
Arduino と Raspberry Pi の違いのまとめの3つ目の個別記事で、Raspberry Pi で relay を制御する。

目的

Raspberry Pi3 で Relay の制御を行う。

課題

Arduinoで動作していたRelayを持ってきてGPIOを出力にして接続すると、Relayのカチッという動作音はするのだが音がArduinoのときと比べて小さい。

問題点

Relayの出力をテスターで調べるとカチッと音は鳴るが、Relayとしての動作をしてくれていない。

原因

なんかおかしいと思い、調べたところ Raspberry Pi3 の GPIO出力の電圧は3.3Vだそうで、5Vリレーの直接駆動はできないということが分かった。

下記に詳しい。
AN INTRODUCTION TO GPIO AND PHYSICAL COMPUTING ON THE RASPBERRY PI

解決策

解決策としては、少なくとも三つ考えられる。
1. 5V動作のリレーから3V動作のリレーに交換する
2. Transistorを追加して、Switchとして用い、リレーへの電源供給を5Vとなるようにする
3. Raspberry Pi対応の Relay moduleを利用する

  1. が簡単だが、手元に3V動作のリレーはなく、新規に買うと3V動作のリレーの2回路用は500円近くするので、#2を選択した。Transistor によるリレードライブの詳細説明はこちらを参考とした。

電子回路におけるリレー使用上のご注意

ちなみに市販のリレーモジュールは、見た感じでは#2の実装になっている様子である。

リレードライブの回路図

指で書くのは厳しい。。

[回路図]
E9F83867-7B65-441E-BE5B-66A8CD2454C0.jpg

写真 not yet.

市販のRelay module

動作の状況が分かるようにLEDがついており、Relayがoffのときには、LEDが点灯している。つまり、LEDが消えたときには、RelayがOnになっている。もちろんRelayの出力側の配線を逆にすれば、LEDの点灯と動作を合わせることもできる。

リレーモジュール

価格は大きく変動するようなのでebay.comとかいろいろ探すとよいかもしれない。

05_RELAY2_GPIO21.py 
import RPi.GPIO as GPIO
from time import sleep

RELAY2_GPIO = 21 # GPIO number for relay or relay module 

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY2_GPIO, GPIO.OUT)

try:
    while True:
        GPIO.output(RELAY2_GPIO,GPIO.HIGH)
        sleep(1)
        GPIO.output(RELAY2_GPIO, GPIO.LOW)
        sleep(1)
except KeyboardInterrupt:
        # pass
        GPIO.cleanup()

まとめ

これでRaspberry Pi3でリレーが動作するようになった。

親記事

Arduino と Raspberry Pi の違い

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.