部品 · 読了まで7分

Arduinoのリレーモジュールとは?配線、コード、安全のポイント

Arduinoのリレーモジュールとは、ボードの信号でランプやポンプ、ファンを動かすスイッチです。NO・NC・COM、アクティブLOWの配線、JD-VCC、ボタンで切り替えるスケッチを解説します。

リレーは、小さな電気信号ではるかに大きな負荷をオン・オフする電気で動くスイッチです。Arduinoのピンが出せるのは5 Vと数十ミリアンペアだけで、LEDには十分でも、ランプ、ファン、水ポンプ、230 Vの商用電源で動く機器には足りません。リレーモジュールはその差を埋めます。Arduinoが小さな信号を送ると、リレーが内部の接点を閉じ、大きな電流が負荷に流れます。スマートホーム、自動水やり、タイマーのプロジェクトの中心となる部品です。

1チャンネル5Vリレーモジュール
1チャンネル5 Vリレーモジュール:青い箱がリレーで、その横のネジ端子に負荷側をつなぎます。

リレーはどう動く?

リレーの中にはコイル(電磁石)、動く金属のアーム、いくつかの接点があります。コイルに電流が流れると磁界がアームを引き寄せて接点が閉じます。聞こえる「カチッ」という音はこの動きです。電流が止まるとバネがアームを押し戻し、接点が開きます。

大事なのは、コイル側(制御回路)と接点側(負荷回路)の間に電気的なつながりがないことです。両者は磁気だけでつながっています。そのため、5 VのArduino回路を商用電源のラインから切り離しておけます。

リレーモジュールには何が載っている?

リレー単体をArduinoのピンに直接つなぐことはできません。コイルはピンが出せる以上の電流を必要とし、オフになるときに発生する電圧のスパイクでピンが壊れることがあります。モジュール基板には、これらの問題を解決する部品が載っています。

  • 駆動用トランジスタ:ピンからの小さな信号で、コイルが必要とする70〜80 mAをスイッチングします。
  • フライバックダイオード:コイルがオフになるときに発生する逆電圧を吸収し、トランジスタとArduinoを守ります。
  • フォトカプラ(一部のモデル):制御信号を光として伝え、Arduinoとリレー回路を完全に分離します。
  • 状態表示LED:リレーがオンのときに点灯します。コードが動いているかの確認にとても便利です。
  • ネジ端子:はんだ付けなしで負荷の配線をしっかり固定できます。

NO、NC、COMの意味は?

リレーの負荷側には3つの端子があります。どれを使うかで、リレーに通電していないときに機器がオンかオフかが決まります。

端子意味COMとつながるのはいつ?
COM共通端子。負荷の線の1本をここにつなぐ常にNOかNCのどちらかとつながっている
NOノーマルオープン(常時開)リレーに通電しているときだけ
NCノーマルクローズ(常時閉)リレーに通電していないとき
ほとんどのプロジェクトではCOMとNOを使います。こうすると、Arduinoがオフ、再起動中、またはフリーズしたときに機器もオフのままになります。常に動かしておき、ときどきだけ止めたい機器にはNCを選びます。

仕様(一般的な5 Vモジュール)

項目値
コイル電圧5 V DC
コイル電流約70〜80 mA(1チャンネルあたり)
接点定格10 A 250 V AC / 10 A 30 V DC(リレーに印字)
トリガーアクティブLOWまたはアクティブHIGH(モジュールによる)
制御ピンVCC、GND、IN(複数チャンネルの基板ではIN1、IN2…)
負荷端子COM、NO、NC

リレーモジュールをArduinoにつなぐ

制御側は3本の線です。モジュールのVCCを5Vに、GNDをGNDに、INをデジタル7番ピンにつなぎます。負荷側では、制御したい機器の線を1本切り、その両端をCOMとNOの端子につなぎます。リレーは、ふつうの壁スイッチの代わりになるだけです。

C++ (Arduino IDE)
1const int RELAY_PIN = 7;
2
3void setup() {
4  pinMode(RELAY_PIN, OUTPUT);
5  digitalWrite(RELAY_PIN, HIGH);  // aktif LOW modülde kapalı başla / start OFF on active-LOW modules
6}
7
8void loop() {
9  digitalWrite(RELAY_PIN, LOW);   // röle çeker, cihaz açılır / relay on
10  delay(3000);
11  digitalWrite(RELAY_PIN, HIGH);  // röle bırakır, cihaz kapanır / relay off
12  delay(3000);
13}
多くのリレーモジュールはアクティブLOWです。INピンがLOWのときにリレーがオンになり、HIGHのときにオフになります。どちらのタイプかは状態表示LEDでわかります。アクティブHIGHの基板なら、上のコードのHIGHとLOWを入れ替えてください。setup()で最初にリレーをオフにしておくと、Arduinoの起動中に機器が一瞬オンになるのを防げます。

ボタンでリレーを制御する:オン・オフスイッチ

実際のプロジェクトでは、ボタン、センサー、タイマーでリレーを制御するのが一般的です。下のコードはボタンを押すたびにリレーを切り替えるので、小さな押しボタンで商用電源のランプをオン・オフできます。ボタンの配線とチャタリングについてはArduinoに押しボタンをつなぐ方法を参照してください。

C++ (Arduino IDE)
1const int RELAY_PIN = 7;
2const int BUTTON_PIN = 2;      // butonun diğer ucu GND'de / other leg to GND
3
4bool relayOn = false;
5bool lastButton = HIGH;
6
7void setup() {
8  pinMode(RELAY_PIN, OUTPUT);
9  pinMode(BUTTON_PIN, INPUT_PULLUP);
10  digitalWrite(RELAY_PIN, HIGH); // başta kapalı / start OFF (active LOW)
11}
12
13void loop() {
14  bool button = digitalRead(BUTTON_PIN);
15  if (lastButton == HIGH && button == LOW) {   // yeni basış / new press
16    relayOn = !relayOn;
17    digitalWrite(RELAY_PIN, relayOn ? LOW : HIGH);
18    delay(50);                                  // sıçrama önleme / debounce
19  }
20  lastButton = button;
21}

JD-VCCとフォトカプラ:完全な絶縁

フォトカプラ付きのモジュールでは、VCC、GND、INピンの横に、ジャンパー付きのJD-VCCというピンがあります。ジャンパーを付けたままだと、リレーのコイルもArduinoの5 Vから給電されます。ジャンパーを外し、別の5 VアダプターをJD-VCCとその専用のGNDにつなぐと、コイルの電流はすべてそのアダプターから供給され、Arduino側はフォトカプラのLEDを光らせるだけになります。モーターやポンプのようなノイズの多い負荷では、これでArduinoのフリーズやリセットが大きく減ります。

ESP32とRaspberry Pi Picoでリレーを使う

ESP32とPicoのピンは3.3 Vを出力します。ほとんどの5 Vリレーモジュールはこの信号でも動きますが、アクティブLOWのモジュールでは、3.3 VのHIGHでリレーが完全に解放されないことがあります。リレーがずっとオンのままなら、これが原因です。対策は、3.3 Vトリガーのモジュールを買う、JD-VCCで電源を分けられるフォトカプラ基板を使う、または小さなNPNトランジスタを追加することです。モジュール自体はこの場合も5 Vから給電します。MicroPythonでPicoからリレーを制御するのは、これだけで済みます。

MicroPython
1from machine import Pin
2import time
3
4relay = Pin(15, Pin.OUT, value=1)   # GP15, aktif LOW: 1 = kapalı / active LOW: 1 = off
5
6while True:
7    relay.value(0)    # röle çeker / relay on
8    time.sleep(3)
9    relay.value(1)    # röle bırakır / relay off
10    time.sleep(3)

商用電源を扱うときの安全ルール

商用電源は命にかかわります。配線は必ずプラグをコンセントから抜いた状態で行い、むき出しの線の先を残さず、回路は閉じた絶縁ケースに入れてください。自信がなければ、商用電源ではなく12 VのLEDテープやファンで練習しましょう。子どもは大人なしで商用電源側の作業を絶対にしてはいけません。
  • 電流定格を守る:リレーに印字された値(例:10A 250VAC)を決して超えないでください。ヒーター、エアコン、電気ケトルのような大電力の機器では、その上限より十分に低く抑えましょう。
  • ホット側(電圧側)の線を切り替える:ランプやコンセントを制御するときは、中性線ではなくホット側の線をリレーに通します。こうすると、オフのときに機器に電圧が残りません。
  • 適切なケーブルを使う:ブレッドボード用のジャンパーワイヤーは商用電源向けではありません。負荷側には適切な太さの絶縁ケーブルを使ってください。
  • 基板の裏を絶縁する:モジュールのはんだ面には商用電源の電圧がかかっています。金属面や素手に触れたままにしないでください。
  • ヒューズを入れる:負荷ラインに適切な定格のヒューズを入れておけば、ショートしたときの火災を防げます。

リレー、トランジスタ、ソリッドステートリレーのどれを選ぶ?

項目機械式リレートランジスタ / MOSFETソリッドステートリレー(SSR)
切り替えられるものACとDCDCのみ主にAC
速度遅い(ミリ秒単位)非常に速く、PWMも可能速い
音カチッと鳴る無音無音
寿命接点が徐々に摩耗する非常に長い非常に長い
向いている用途ランプ、コンセント、ポンプモーターの速度、LEDテープ頻繁に切り替えるAC負荷

まとめると、機器をときどきオン・オフするだけなら、機械式リレーがいちばん安く簡単です。モーターの速度やLEDテープの明るさを調整するならトランジスタかMOSFET、1秒に何度も切り替えるAC負荷ならソリッドステートリレーを選びましょう。合うトランジスタを選ぶにはトランジスタツールを見てみてください。

リレーのプロジェクトアイデア

  • スマート水やり:土壌水分センサーが乾いていると判断したら水ポンプを動かします。
  • 人感ライト:PIRセンサーが人を検知したらランプを点け、しばらくしたら消します。
  • 湿度で動く換気扇:湿度が上がったら浴室の換気扇を回します。測定についてはDHT11温湿度センサーを参照してください。
  • リモコン式コンセント:IR受信モジュールとテレビのリモコンでコンセントを切り替えます。
  • タイマー:水槽のライトを毎日同じ時刻にオン・オフします。
  • スマホから制御:ESP32のWi-Fiを使い、Webページからランプをオン・オフします。

よくあるミスと直し方

  • リレーが逆に動く:モジュールがアクティブLOWです。コードのHIGHとLOWを入れ替えてください。
  • リレーがカチカチ鳴り続ける:電源が弱すぎる可能性があります。特にリレーが複数あるときは外部の5 Vアダプターを使ってください。
  • モーターが回り始めるとArduinoがリセットする:ノイズと電圧降下が原因です。JD-VCCでコイルを別に給電し、モーターの両端にコンデンサを付けてください。
  • LEDは点くのに負荷が動かない:負荷の線がNCにつながっているか、端子のネジがゆるんでいる可能性があります。
  • ESP32でリレーがまったく解放されない:3.3 VのHIGHではアクティブLOWのモジュールをオフにできません。3.3 V対応のモジュールかトランジスタを使ってください。
  • リレー単体をピンに直接つないでいる:コイルの電流と逆電圧でピンが壊れます。必ずモジュールを使うか、トランジスタとダイオードを組み合わせてください。

リレーとセンサーを組み合わせると、本当に役立つ自動化を作れるようになります。どのセンサーが何をするのかはArduinoセンサーガイドで確認できます。BlueGraysアプリには、リレーで動かすランプ、水やり、照明のプロジェクトが回路図付きでステップごとに載っています。

よくある質問

リレーモジュールがカチカチ鳴り続けるのはなぜですか?

いちばん多い原因は電源の弱さです。リレーが動作すると電圧が下がり、Arduinoがリセットされてリレーが解放されます。リレーを複数使う場合やArduinoをUSBから給電している場合は、外部の5 Vアダプターを使ってください。また、リレーを切り替え続けるループがコードにないかも確認しましょう。

アクティブLOWのリレーとはどういう意味ですか?

INピンがLOW(0 V)のときにオンになり、HIGHのときにオフになるリレーモジュールのことです。安価なモジュールの多くはこの方式です。コードではオンにするときにdigitalWrite(pin, LOW)、オフにするときにHIGHと書きます。setup()で最初にHIGHにして、オフの状態から始めるのがよい習慣です。

リレーでDCモーターを制御できますか?

モーターのオン・オフならできますが、速度の調整や回転方向の切り替えは簡単ではありません。速度制御にはMOSFETかPWMモータードライバを、回転方向の切り替えにはL298NのようなHブリッジを使ってください。

JD-VCCジャンパーは何のためにありますか?

フォトカプラ付きのモジュールで、リレーのコイル用電源(JD-VCC)と制御用電源(VCC)を分けるためのものです。ジャンパーを外してJD-VCCに専用の5 Vを供給すると、Arduinoはリレー回路から完全に絶縁され、モーターなどの負荷からのノイズが届かなくなります。

5 Vと12 Vのリレー、どちらを買うべきですか?

コイル電圧は、モジュールに給電する電圧と一致している必要があります。Arduinoのプロジェクトでは、Arduinoの5 VやUSBアダプターで足りる5 Vコイルのモジュールがいちばん実用的です。12 Vコイルのリレーには12 Vの電源が必要ですが、これは負荷側の電圧とは関係ありません。

1台のArduinoでいくつのリレーを制御できますか?

リレー1個につきデジタルピンが1本必要で、Unoには使えるピンが最大20本あります。本当の制限は電流です。コイル1個が約70〜80 mAを消費するので、リレーが2個を超える場合はArduinoではなく外部の5 Vアダプターからモジュールに給電してください。さらに多くのチャンネルが必要なら、8チャンネルや16チャンネルのモジュールもあります。

全プロジェクトを見る
ボタンを押している間だけ220V電球を点灯
#19上級
プレミアム

ボタンを押している間だけ220V電球を点灯

ボタンを押している間は実際の220ボルトの電球が点灯し、離すとすぐに消灯します。Arduinoの小さな信号では電球を直接点灯できないため、電気で動くスイッチであるリレーを間に入れ、電球の回路を開閉します。ボードで家庭の照明を操作するための第一歩です。家庭用電源を扱う際は十分に注意し、不安がある場合は詳しい人に手伝ってもらってください。

4.4(30)
38
ボタンを押すたびに220V電球の点灯・消灯を切り替え
#20上級
プレミアム

ボタンを押すたびに220V電球の点灯・消灯を切り替え

小さなボタンで、家庭の電球を点灯・消灯してみませんか?ボタンを押すとArduinoがリレーを切り替えて電球を点灯させ、もう一度押すと消灯させます。リレーは、ボードの弱い信号で家庭用電源を安全に切り替える仲介役です。220ボルトを扱う際は、必ず大人に手伝ってもらってください。

4.5(33)
44
リモコンで220V電球を点灯・消灯
#21上級
プレミアム

リモコンで220V電球を点灯・消灯

ソファに座ったまま、テレビのリモコンで家庭の電球を点灯・消灯します。Arduinoがリモコンから届く目に見えない光の信号を読み取り、電源ボタンを押すとリレーを動かして電球を点灯させ、消音ボタンを押すと消灯させます。家庭用電源を扱うため、配線は大人と一緒に、必ずプラグを抜いた状態で行ってください。

4.4(22)
30
スマート水やりステーション
#83上級
プレミアム

スマート水やりステーション

旅行中も植物が枯れないよう、自動で水やりをするシステムです。土壌水分センサーで土の湿り具合を測定し、乾燥するとArduinoが給水ポンプを数秒間動かして、青いライトを点灯させます。水分が適切なときは緑のライトが点灯します。土がひどく乾燥すると、赤いライトが点滅し、ブザーが鳴って知らせます。

5.0(42)
57
ESP32スマート照明(PIR + LDR + リレー + OLED)
#141上級
プレミアム

ESP32スマート照明(PIR + LDR + リレー + OLED)

ESP32で廊下やトイレ、食品庫の照明をスマート化します!PIRモーションセンサー、LDR光センサー、リレーモジュールを使い、「暗い場所で動きを検知すると点灯する」定番の仕組みを作ります。周囲が明るければ動きを検知しても点灯しないため、日中の無駄な電力消費を抑えられます。照明は30秒間点灯し、動きが続くとタイマーがリセットされて点灯時間が延びます。SSD1306 OLEDには大きな文字で状態(ON / DAYTIME / WAITING)とカウントダウンを表示します。

4.3(6)
11
ESP32 PIR人感センサーによる自動照明
#121中級
プレミアム

ESP32 PIR人感センサーによる自動照明

このプロジェクトでは、HC-SR501 PIR人感センサーで部屋に入った人を検知し、LEDを自動で点灯させます。millis()で点灯時間を管理します。センサーの値がHIGHの間は最後に動きを検知した時刻を更新し、最後にHIGHを読み取ってから少なくとも10秒後にLEDを消灯します。現在のコードは各ループでdelay(50)により50 ms待機するため、完全にノンブロッキングではありません。階段や廊下、浴室、戸棚内の照明などに応用できます。

4.4(24)
38
モーションセンサーで作るドアベルとライト
#25中級
プレミアム

モーションセンサーで作るドアベルとライト

玄関に誰かが近づくと、呼び鈴を押す前にわかります。モーションセンサーが人を検知するとLEDが点灯し、ブザーが高い音から低い音へ3音のチャイムを鳴らします。メロディーが終わるとライトが消え、センサーは再び待機します。音と光の両方で知らせるシンプルな玄関の見張り役です。

4.7(54)
71