工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

必要な部品と材料

部品数量
Arduino UNO1
超音波距離センサー HC-SR041
リレーモジュール(1チャネル以上、アクティブLOW推奨)1
省電力電球(LED電球推奨)+ ソケット・プラグ付きコード1セット
5V DCアダプター(Arduino電源用)1
ジャンパーワイヤー、ブレッドボード、ドライバー適量

使用ソフトウェア

プロジェクト概要

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

部屋を出ると自動で消灯、戻ると点灯するスマート照明をArduinoで自作します。超音波センサーで人の通過を検知し、リレーでAC100V照明を制御。基本的なArduino知識があれば短時間で実装可能です。

⚠ 高電圧注意: AC100Vを扱うため、16歳未満や経験の浅い方は必ず有識者と作業してください。低電圧DC機器(LEDテープ等)で動作確認してからAC側に進むことを強く推奨します。

ハードウェア接続

超音波センサー HC-SR04

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

リレーモジュール

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

アクティブLOW/ HIGHの確認方法:VCC/GND接続後、INピンを5Vに繋いで反応なければアクティブLOW、GNDに繋いで動作すればアクティブLOW確定。

照明・リレー・コンセントの結線

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF
Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

電球の片側をコンセント直結、もう片側を途中で切断し、リレーのCOMとNO(ノーマルオープン)に接続。リレーOFFで遮断、ONで通電。絶縁はビニールテープまたは熱収縮チューブで確実に。

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

超音波センサーのノイズ対策と安定読み取り

HC-SR04は時折異常値(0や極端な値)を返します。これを放置すると照明がチカチカします。対策としてメディアンフィルタ(中央値フィルタ)を適用:複数回測定→ソート→中央値を採用。NewPingライブラリに標準搭載されています。

// 7回測定して中央値を取得(単位:μs)
unsigned int echoTime = sonar.ping_median(7);
// cmに変換
unsigned int distance = sonar.convert_cm(echoTime);
// 0(測定不能)なら最大距離として扱う
if (distance == 0) distance = MAX_DISTANCE;

通過検知ロジック

ドア幅の半分を閾値(critical_distance_cms)に設定。この距離内に物体が検知されたら「誰かが通過した」と判定し、物体が閾値外に出るまで待機、その後リレー状態をトグル(ON↔OFF)。静止している人には反応しません。

if (distance < critical_distance_cms) {
  while (distance < critical_distance_cms) {
    distance = readDistance();
    delay(5);
  }
  state = !state;
  digitalWrite(RELAY_PIN, state ? LOW : HIGH); // アクティブLOW前提
}

スケッチ全文

メイン:スマート照明制御

#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
#define RELAY_LINE1_PIN 8

#include "NewPing.h"
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

unsigned int critical_distance_cms = 50; // ドア幅/2 目安
bool state = 0;

void setup() {
  Serial.begin(9600);
  pinMode(RELAY_LINE1_PIN, OUTPUT);
  digitalWrite(RELAY_LINE1_PIN, HIGH); // 初期状態:消灯(アクティブLOW)
}

void loop() {
  delay(50);
  unsigned int distance = readDistance();
  Serial.print("Ultrasonic: "); Serial.print(distance); Serial.println("cm");

  if (distance < critical_distance_cms) {
    while (distance < critical_distance_cms) {
      distance = readDistance();
      delay(5);
    }
    state = !state;
    if (state) {
      Serial.println("Door Open!");
      digitalWrite(RELAY_LINE1_PIN, LOW); // 点灯
    } else {
      Serial.println("Door Closed!");
      digitalWrite(RELAY_LINE1_PIN, HIGH); // 消灯
    }
  }
}

unsigned int readDistance() {
  unsigned int distance = sonar.convert_cm(sonar.ping_median(7));
  if (distance == 0) distance = MAX_DISTANCE;
  return distance;
}

テスト用:超音波センサー読み取り確認

#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() { Serial.begin(115200); }
void loop() {
  delay(50);
  Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm");
}

リソース

回路図

Arduino UNOとリレーで作るスマート照明:超音波センサーで自動ON/OFF

製造プロセス

  1. TinyML言語検出器:Edge ImpulseとArduino Nano 33 BLE Senseで「はい」を多言語判別
  2. Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
  3. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  4. Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
  5. Arduinoで作る全自動植物水やりシステム - 湿度センサーとRTCで最適制御
  6. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  7. スマート自動靴紐シューズ:発電機能内蔵で実用性抜群
  8. Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
  9. 光と音で祝おう:Arduinoで作るDIYバースデープロジェクト
  10. Bolt IoTとArduino UNOでLED輝度をシームレス制御
  11. Arduino Nanoで作る音声反応デスクライト:音楽に合わせて光るイルミネーション