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

Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知

Arduinoと赤外線(IR)または超音波モジュールを組み合わせれば、低コストで近接センサーが自作できます。人・ペット・小物の検知から、衝突防止・自動照明・セキュリティまで幅広く応用可能。本記事では、HC-SR04超音波センサーとIR近接モジュールの両方に対応した配線・コード・調整手順を解説します。

Arduino近接センサーとは

マイコンボードに距離測定モジュールを接続し、物体までの距離や接近を検知するシステムです。主な方式は2つ:

Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
Arduino Uno + ブレッドボード開発環境
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
近接センサーの概念

必要なハードウェア

Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
主要部品
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
作業工具一式

ピン接続(HC-SR04 超音波センサーの場合)

Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
HC-SR04ピン配置:VCC/Trig/Echo/GND
センサーArduino備考
VCC5V5V駆動
GNDGND共通グランド
TrigD9(例)トリガー出力
EchoD10(例)エコー入力(5V→3.3V分圧推奨)

3ピンIR近接モジュール(VCC/GND/OUT)の場合

※ モジュールにより配色異なるためデータシート確認必須。

製作手順

Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
配線・デバッグ作業
  1. ブレッドボードに配線: 上記ピン表通りに接続。LEDはD13(オンボード兼用)または別ピンにアノード、カソード→抵抗→GND。
  2. スケッチ書き込み: 後述のコードをArduino IDEで書き込み。
  3. センサー配置: センサー正面に遮蔽物なく、検知エリアを確保。
  4. キャリブレーション(重要):
    • 超音波:温度補正・最小/最大距離クリッピング設定
    • IR:モジュール背面のポテンショメータで検知距離調整(時計回りで感度UP/距離延長傾向)
  5. 動作確認: シリアルモニタ(9600bps)で距離値・検知状態を監視。物体を近づけ/離してLED点灯/消灯・数値変化を確認。
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
実装イメージ
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
処理フロー

動作原理

超音波(HC-SR04)

  1. Trigに10μs以上のHIGHパルス送信
  2. モジュール内部で8回の40kHzパルスバースト送出
  3. 物体で反射した超音波を受信 → EchoピンがHIGH期間=往復時間
  4. 距離 = (HIGH期間 × 音速340m/s) / 2 = HIGH期間(μs) / 58.2 (cm)

IR反射式

  1. 内部IR LEDがパルス発光
  2. 物体で反射した光をフォトトランジスタ/PSDで受光
  3. 受光量(距離に反比例)をコンパレータで閾値判定 → デジタルOUT、またはADCでアナログ出力

サンプルコード

HC-SR04 超音波距離測定

const int trigPin = 9;
const int echoPin = 10;
const int ledPin = 13;
const float threshold_cm = 30.0; // 検知閾値

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH, 30000); // タイムアウト30ms(約5m)
  float distance = duration / 58.2;

  bool detected = (distance > 0 && distance < threshold_cm);
  digitalWrite(ledPin, detected);

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print(" cm | ");
  Serial.println(detected ? "DETECTED" : "CLEAR");
  delay(100);
}

IR近接モジュール(デジタル出力)


const int irPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(irPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool detected = (digitalRead(irPin) == LOW); // アクティブLOWの場合多い
  digitalWrite(ledPin, detected);
  Serial.println(detected ? "Object NEAR" : "Object FAR");
  delay(100);
}

主な活用例

  1. 物体検知・カウント: コンベアライン、自動ドア、来客カウンター
  2. 衝突防止・AGV/ロボット: 前方障害物検知で停止/回避
  3. セキュリティ: 駐車場空き検知、侵入検知、自動照明
  4. スマートフォンのジェスチャー/近接: 通話時の画面消灯等(近接センサー応用)
  5. 液面/残量検知: タンク上部から超音波で液面距離測定
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
実装・設置作業
Arduino近接センサー自作ガイド:IR/超音波モジュールで物体検知
色検知応用例(カラーセンサー併用)

まとめ

Arduino近接センサーは、超音波(距離精度・範囲重視)かIR(低コスト・近距離)で使い分けが鉄則。配線・ライブラリ不要のシンプルコードで即動作確認でき、アイデア次第で多彩な応用が可能です。より高精度・長距離ならToF(Time-of-Flight)センサー(VL53L0X等)へのステップアップもおすすめ。ご質問・ご相談はお気軽に。

産業技術

  1. 状態基準保全(CBM)の効果を最大化する実践ガイド
  2. 湿度センサーの検証とキャリブレーションで精密測定を実現
  3. デジタル身長計の自作:Arduino Nanoとレーザー距離センサーで成長記録
  4. Arduinoで楽器演奏:音階生成のステップバイステップガイド
  5. MKR1000 + DHT22: 温湿度データをAzureへリアルタイム送信
  6. ArduinoでRFIDドアロックを作る - マスターRFID技術をステップバイステップで習得
  7. PIRモーションセンサー: 動作原理とArduino連携ガイド
  8. ArduinoとProcessingで作るリアルタイムデジタルコンパス
  9. 製造と出荷を効率化:コスト削減と効率向上の実証済み戦略
  10. 製造プラントのオフィス整理術:効率向上とストレス軽減の実証済みヒント
  11. Arduinoセンサー:種類、応用、実世界プロジェクト