Arduinoのリレーモジュールとは?配線、コード、安全のポイント
Arduinoのリレーモジュールとは、ボードの信号でランプやポンプ、ファンを動かすスイッチです。NO・NC・COM、アクティブLOWの配線、JD-VCC、ボタンで切り替えるスケッチを解説します。
リレーは、小さな電気信号ではるかに大きな負荷をオン・オフする電気で動くスイッチです。Arduinoのピンが出せるのは5 Vと数十ミリアンペアだけで、LEDには十分でも、ランプ、ファン、水ポンプ、230 Vの商用電源で動く機器には足りません。リレーモジュールはその差を埋めます。Arduinoが小さな信号を送ると、リレーが内部の接点を閉じ、大きな電流が負荷に流れます。スマートホーム、自動水やり、タイマーのプロジェクトの中心となる部品です。

リレーはどう動く?
リレーの中にはコイル(電磁石)、動く金属のアーム、いくつかの接点があります。コイルに電流が流れると磁界がアームを引き寄せて接点が閉じます。聞こえる「カチッ」という音はこの動きです。電流が止まるとバネがアームを押し戻し、接点が開きます。
大事なのは、コイル側(制御回路)と接点側(負荷回路)の間に電気的なつながりがないことです。両者は磁気だけでつながっています。そのため、5 VのArduino回路を商用電源のラインから切り離しておけます。
リレーモジュールには何が載っている?
リレー単体をArduinoのピンに直接つなぐことはできません。コイルはピンが出せる以上の電流を必要とし、オフになるときに発生する電圧のスパイクでピンが壊れることがあります。モジュール基板には、これらの問題を解決する部品が載っています。
- 駆動用トランジスタ:ピンからの小さな信号で、コイルが必要とする70〜80 mAをスイッチングします。
- フライバックダイオード:コイルがオフになるときに発生する逆電圧を吸収し、トランジスタとArduinoを守ります。
- フォトカプラ(一部のモデル):制御信号を光として伝え、Arduinoとリレー回路を完全に分離します。
- 状態表示LED:リレーがオンのときに点灯します。コードが動いているかの確認にとても便利です。
- ネジ端子:はんだ付けなしで負荷の配線をしっかり固定できます。
NO、NC、COMの意味は?
リレーの負荷側には3つの端子があります。どれを使うかで、リレーに通電していないときに機器がオンかオフかが決まります。
| 端子 | 意味 | COMとつながるのはいつ? |
|---|---|---|
| COM | 共通端子。負荷の線の1本をここにつなぐ | 常にNOかNCのどちらかとつながっている |
| NO | ノーマルオープン(常時開) | リレーに通電しているときだけ |
| 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の端子につなぎます。リレーは、ふつうの壁スイッチの代わりになるだけです。
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}ボタンでリレーを制御する:オン・オフスイッチ
実際のプロジェクトでは、ボタン、センサー、タイマーでリレーを制御するのが一般的です。下のコードはボタンを押すたびにリレーを切り替えるので、小さな押しボタンで商用電源のランプをオン・オフできます。ボタンの配線とチャタリングについてはArduinoに押しボタンをつなぐ方法を参照してください。
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からリレーを制御するのは、これだけで済みます。
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)商用電源を扱うときの安全ルール
- 電流定格を守る:リレーに印字された値(例:10A 250VAC)を決して超えないでください。ヒーター、エアコン、電気ケトルのような大電力の機器では、その上限より十分に低く抑えましょう。
- ホット側(電圧側)の線を切り替える:ランプやコンセントを制御するときは、中性線ではなくホット側の線をリレーに通します。こうすると、オフのときに機器に電圧が残りません。
- 適切なケーブルを使う:ブレッドボード用のジャンパーワイヤーは商用電源向けではありません。負荷側には適切な太さの絶縁ケーブルを使ってください。
- 基板の裏を絶縁する:モジュールのはんだ面には商用電源の電圧がかかっています。金属面や素手に触れたままにしないでください。
- ヒューズを入れる:負荷ラインに適切な定格のヒューズを入れておけば、ショートしたときの火災を防げます。
リレー、トランジスタ、ソリッドステートリレーのどれを選ぶ?
| 項目 | 機械式リレー | トランジスタ / MOSFET | ソリッドステートリレー(SSR) |
|---|---|---|---|
| 切り替えられるもの | ACとDC | DCのみ | 主に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電球を点灯
ボタンを押している間は実際の220ボルトの電球が点灯し、離すとすぐに消灯します。Arduinoの小さな信号では電球を直接点灯できないため、電気で動くスイッチであるリレーを間に入れ、電球の回路を開閉します。ボードで家庭の照明を操作するための第一歩です。家庭用電源を扱う際は十分に注意し、不安がある場合は詳しい人に手伝ってもらってください。

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

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

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

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

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

モーションセンサーで作るドアベルとライト
玄関に誰かが近づくと、呼び鈴を押す前にわかります。モーションセンサーが人を検知するとLEDが点灯し、ブザーが高い音から低い音へ3音のチャイムを鳴らします。メロディーが終わるとライトが消え、センサーは再び待機します。音と光の両方で知らせるシンプルな玄関の見張り役です。
ほかの記事
BlueGraysアプリ
この回路をスマホでステップごとに作る
回路図、コード、部品リストを1つの画面で確認できます。Arduino、ESP32、Picoのプロジェクトを200件以上用意しています。

