リレーモジュールの使い方|Raspberry Pi・Arduino(ESP32)

リレーモジュールの使い方|Raspberry Pi・Arduino(ESP32)
リレーモジュールの使い方|Raspberry Pi・Arduino(ESP32)

この記事では、リレーモジュールをRaspberry Piで制御する方法を解説します。リレーモジュールが使えるようになれば、家電製品のIoT化ができたり既存の製品を有効活用できます。ただし、初めてのリレーモジュールでいきなりコンセントのAC100Vを扱うのは大変危険です。 ここではまず、豆電球のような事故のない電子部品を使ってリレーモジュールを扱ってみます。

リレーモジュールの使い方

はじめに、リレモジュールの使い方を確認していきましょう。ここでは、Raspberry Piを使わずにリレーモジュールを動かしていきます。リレーモジュールが動作する仕組みをしっかりつかみましょう。

つかうもの

リレーモジュールはこちらのWayinTopの「JQC-3FF-S-Z」リレーを搭載したものを使用しました。

▼ もっと複数チャンネル使いたい場合はリレーアレイが便利です。本記事の内容が理解できればこれらの製品を扱えます。

これらのリレーモジュールは、フォトカプラをドライブすることでリレーのスイッチが切り替わる仕組みです。フォトカプラを使うと、制御対象のデバイスとマイコンを絶縁できるメリットがあります。また、フォトカプラの使い方は SonyのデジイチをM5StickC PLUSでリモート操作できるようにしてみた をご覧ください。

▼ また、1から作るのが面倒な方や100V電源を扱うのに自信がない方は、「スマートプラグ」を使うと良いです。

リレーを動かしてみよう

図のように配線を組んで、実際にリレーを動かしてみました。皆さんも回路を組んで実際に遊んでみることをおすすめします。

リレーモジュールの配線図
リレーモジュールの配線図

  • スイッチを通じてプラス5Vを、リレーモジュールのINへ繋ぐ
  • DCマイナスは電源のマイナス端子へ繋ぐ
  • DCプラスは直接プラス5Vを繋ぐ

上記のように配線したら、スイッチのオンオフを切り替えてみましょう。スイッチを切り替えるたびに、ウィンカーみたいなカチカチ音が聞こえたでしょうか?これはリレーのスイッチが切り替わる音です。この音が聞こえればリレーは正しく動作できてます。次はこの回路に豆電球を取り付けて光らせてみましょう。

豆電球をリレーで光らせよう

次に豆電球を用意して、リレー制御で光らせてみましょう。図のように電池と豆電球をリレーモジュールに繋ぎました。

豆電球とリレーモジュールの配線図
豆電球とリレーモジュールの配線図

COMとNOに豆電球を繋いだ場合、スイッチをオンにすると豆電球が光り、スイッチをオフにすると消灯します。 つまり、スイッチをオンにすることでリレーモジュールのCOMとNOが導通します。

それでは、COMとNCに豆電球を繋ぎ変えてみましょう。今度はスイッチをオンにすると豆電球は消灯し、スイッチをオフにすると光るようになりました。

ここまでの動作から次のことがまとめられます。

  • COM(コモン)共通の端子
  • NO(ノーマリーオープン)は、リレーコイルに電流が流れていない時にCOMとの間が開いている
  • NC(ノーマリークローズ)は、リレーコイルに電流が流れていない時にCOMとの間が閉じている

Raspberry Piでリレーモジュールを使う

それではこれからRaspberry Piを使ってリレーモジュールを動かしていきます。なお、Raspberry Piのセットアップは Raspberry Pi zero WHをモニター・キーボードなしでSSH接続するまで をご覧ください。

▼ なお、本記事ではRaspberry Pi zero WHを使用しましたが、みなさんはお好きなRaspberry Piをお使いください。

トリガーの仕様

今回使用したリレーモジュールのトリガー(IN)へ流す電流は、5mA程度あれば十分です。また電圧は3〜5Vの範囲で入力が可能です。 Raspberry PiのGPIOは1つあたり10mA程度まで電流を出力できます。そして全体で30mA程度までとなります。また、GPIOの出力電圧は3.3Vです。 たくさんのリレーを繋ぐときは消費電流に気をつけましょう。今回はひとつだけの実験ですので、GPIOを直接リレーモジュールのトリガーへ繋ぎました。 ちなみに今回使用したリレーモジュールはジャンパピンが存在し、Low側にするとトリガー電圧を0〜1.5Vに変更できるようになっていました。

Raspberry Piとリレーモジュールの配線

こちらがRaspberry Piとリレーモジュールの配線図になります。GPIO17をリレーモジュールのトリガーへ繋ぎました。

Raspberry Piとリレーモジュールの配線図
Raspberry Piとリレーモジュールの配線図

豆電球をリレーモジュールで点滅させるPythonプログラム

リレーモジュールで豆電球を点滅させるプログラムをPythonで書いてみました。車のウインカーと同じような速さでスイッチがオンオフする演出をしてみました。

py
import RPi.GPIO as GPIO
from time import sleep

RELAY_PIN = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)

while True:
    GPIO.output(RELAY_PIN, True)
    sleep(0.35)
    GPIO.output(RELAY_PIN, False)
    sleep(0.35)

いかがだったでしょうか?うまくリレモジュールは動きましたでしょうか? リレーモジュールの仕組みが分かれば動かすのはとても簡単です。また、豆電球を光らすことができればAC100Vのコンセントも同じ要領で制御できるはずです。ただし、くれぐれも事故がないよう配線などに十分注意してくださいね。

▼ リレーモジュールを使って、電磁弁をオンオフして水道の止水制御をやってみました。

Arduino(ESP32)でリレーモジュールを使う

ここからはArduinoの互換機であるESP32で、リレーモジュールをつかう方法を解説します。

つかうもの

リレーモジュール

5個セットで格安なこちらのリレーモジュールを使いました。

リレーモジュールのスペック・仕様

項目
制御信号TTL
トリガー電流5mA
動作電圧5V
最大負荷AC 250V/10A、DC30V/10A
最大スイッチ電圧250VAC、30V
トリガー電圧0-1.5V(Low)または 3-5V(High)

ArduinoやESP32、Raspberry Piなどでこのリレーモジュールをつかう場合は、トリガー電圧は3.3V〜5VになりますのでジャンパピンをH側にセットします。

ESP32

WayinTopさんから販売されているESP32を使用しました。技適マークも刻印されてますので、安心して国内で使えます。GPIOの役割図は 商品ページ に詳しく掲載されてます。

▼ WiFiやBluetooth接続が必要なければ、他のArduinoでも構いません。こちらの記事で色々な種類のArduinoをご紹介してます。

その他

また、ブレッドボードやジャンプワイヤもあると便利です。

リレーモジュールのおさらい

前半で紹介したリレーモジュールの使い方のおさらいです。

リレーモジュールの端子役割は次の通りです。

端子意味説明
COMコモン共通の端子
NOノーマリーオープンリレーコイルに電流が流れていない時にCOMとの間が開いている
NCノーマリークローズリレーコイルに電流が流れていない時にCOMとの間が閉じている
INトリガーHighの入力信号を与えればリレーコイルが動作する
DC-リレーコイルの電源GND
DC+リレーコイルの電源5V

上図の左側に制御したい機器をつなぎます。右側にはリレーコイル用の5V電源をつないで、マイコンボードのGPIOピンでIN端子を制御します。上図では、制御信号をSW(スイッチ)として表現してます。 リレーコイルを通電させた時の消費電流を測定してみると、5Vで70mA程度でした。

ESP32とリレーモジュールの配線

ESP32とリレーモジュールの配線です。リレーモジュールの使い方があいまいな方は、いきなり家電などのAC100Vを接続しないようにしてください。配線間違いを起こして機材が壊れる可能性がありますし、危険です。

ここではLEDを使って、ESP32内蔵の5V電源で動かしてみることにします。

ESP32とリレーモジュールの配線図
ESP32とリレーモジュールの配線図

「ウインカー風Lチカ」するソースコード

次のソースコードは、一定間隔でリレーモジュールをオンオフするだけのシンプルなプログラムです。

relay_test.ino
/**
 * @date 2022-11-24
 * @author Toshihiko Arai
 * @copyright https://101010.fun
 * @brief ESP32とリレーモジュールを使って、ウインカー風にLチカするプログラム
*/
#include <Arduino.h>

/**
 * @brief Relay  <-->  ESP32  の配線
 *        DC+    <-->  5V
 *        DC-    <-->  GND
 *        IN     <-->  GPIO14
 *        COM    <-->  330Ω--LED--5V
 *        NO     <-->  GND
*/
#define TRG_PIN 14

void setup() {
    Serial.begin(115200);
    pinMode(TRG_PIN, OUTPUT);
}

void loop() {
    digitalWrite(TRG_PIN, HIGH);
    delay(350);
    digitalWrite(TRG_PIN, LOW);
    delay(350);
}

実際にESP32とリレーモジュールを配線して、上記のプログラムを実行した様子を下の動画でご覧いただけます。

リレーのオンオフされる音が、ウインカーにそっくりなんですよね。実際に、昔のウインカーはリレーで動かしていたため、あのような音になっていたそうです。今では電子制御らしく、わざわざスピーカーでウインカー音を鳴らしているのだとか。それにしてもウインカーの音ってなぜか心地よいですよね。癒されます♪

リレーモジュールの応用として、電磁弁をオンオフして水道の止水制御をやってみました。

関連記事

 
最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

スマート農業(スマートアグリ)で使えるセンサー
水耕栽培はじめよう!
関連記事