ArduinoのプッシュボタンでリレーとAC電球を切り替える
このチュートリアルでは、押しボタンとリレーを使ってAC電球またはLEDライトを制御する方法を学びます。押しボタンはライトをオン・オフに切り替え、ボタンを離してもその状態を保持します。この構成は実用的であるだけでなく、リレーや交流(AC)負荷の扱いを学ぶための良い入門になります。

進めていく中で、必要な部品、配線の手順、そしてこのプロジェクトを可能にするArduinoのコードについて説明します。視覚的なガイドや詳しい解説は、関連するビデオ(ビデオ内の00:00)を必ずご覧ください。

ハードウェアの解説
このプロジェクトではリレーモジュール、Arduinoボード、プッシュボタンを使用します。リレーモジュールは低電圧のArduino信号で制御されながら、電球などの高電圧交流(AC)負荷を制御できるスイッチとして機能します。リレーモジュールには負荷を接続するための主要な端子が3つあり、共通(COM)、常開(NO)、常閉(NC)です。
プッシュボタンはリレーの状態を切り替えるためのユーザーインターフェースとして機能します。Arduinoのデジタルピンの一つに接続されています。ボタンが押されるとArduinoに信号が送られ、それに応じてリレーを作動させたり停止させたりします。この単純なやり取りにより、ライトを簡単に制御できます。
リレーのデータシートの詳細
| 製造元 | ソングル |
|---|---|
| 部品番号 | SRD-05VDC-SL-C |
| コイル電圧 | 直流5V |
| スイッチング電圧 | 交流250V/直流30V |
| スイッチング電流 | 最大 10 A |
| 接触抵抗 | 100 mΩ以下 |
| 絶縁抵抗 | 1000 MΩ以上 |
| 動作温度 | -40~+70 °C |
| パッケージ | 標準リレーモジュール |
- リレーが切り替える負荷の定格に合っていることを確認してください。
- リレーモジュールを5 VDCで通電したままにしてください。
- AC接続には適切な絶縁を使用してください。
- 交流電源で作業する際は注意してください。変更を加える前に回路の電源が切断されていることを必ず確認してください。
- プッシュボタンをArduinoの指定された入力ピンに接続してください。
- 外部抵抗を必要としないように、プッシュボタン用ピンにはINPUT_PULLUPモードを使用してください。
- 交流負荷を接続する前に、低電圧でリレーの動作を確認してください。
- 短絡を避けるために接続を確認してください。
配線手順

リレーモジュールの配線を行うには、まずリレーのVCCピンをArduinoの5Vピンに、リレーのGNDピンをArduinoのGNDピンに接続します。リレーのINピンはArduinoのデジタルピン10に接続してください。このピンがリレーを作動させる信号を送ります。
プッシュボタンの一方の端子をArduinoのデジタルピン2に接続します。もう一方の端子はGNDに接続してください。この接続はArduinoの内部プルアップ抵抗を使用するため、コード内でピンをINPUT_PULLUPに設定してください。ボタンが押されるとピンはLOWになり、Arduinoに信号が送られます。
AC負荷には、リレーのCOM端子に一方の配線を、NO端子にもう一方の配線を接続してください。この配線により、リレーが作動したときにAC負荷が通電します。ACの接続は常に確実に行われ、絶縁されていることを確認してください。
コード例と解説
以下のコードは必要なピンを初期化し、リレーを初期状態でオフに設定します。ボタンが押されるとリレーの状態が切り替わり、それに応じてライトの状態が更新されます。
int pbuttonPin = 2; // connect output to push button
int relayPin = 10; // Connected to relay (LED)
void setup() {
Serial.begin(9600);
pinMode(pbuttonPin, INPUT_PULLUP);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // keep the load OFF at the beginning
}
コード内では、変数pbuttonPinプッシュボタンに使用されるピン2に設定されています。そのrelayPinピン10に設定されており、リレーを制御します。そのdigitalWriteこの関数は、リレーがOFF状態で起動することを保証するために使用されます。
void loop() {
val = digitalRead(pbuttonPin); // read the push button value
if(val == HIGH && lightON == LOW) {
pushed = 1 - pushed; // toggle the push status
delay(100);
}
if(pushed == HIGH) {
digitalWrite(relayPin, LOW); // turn the relay ON
} else {
digitalWrite(relayPin, HIGH); // turn the relay OFF
}
}
このコードの部分はプッシュボタンの状態を継続的にチェックします。ボタンが押されると、それはトグルしますpushed変数。値によってはpushedリレーがONまたはOFFに切り替わることで、実質的に照明が制御されます。このループは継続的に実行され、照明の状態がリアルタイムで更新されることを保証します。
コードの詳細については、記事の下に表示されているコードをご参照ください。
デモンストレーション/期待できること
プッシュボタンを押すとリレーが作動し、接続されたAC電球が点灯します。もう一度押すと電球は消灯します。シリアルモニタにはライトがONかOFFかを示すステータスメッセージが表示されます。問題が発生した場合は配線が正しいか確認し、予期せぬ動作を引き起こす可能性のあるフローティング入力がないか確認してください(ビデオの10:00で)。
動画のタイムスタンプ
- 00:00- はじめに
- 01:30- ハードウェアの概要
- 03:15- 配線手順
- 午前05:45- コードの解説
- 08:00- デモンストレーション
リソースと参考文献
ファイル📁
ファイルは利用できません。