センサーを使いこなそう!超音波・赤外線・光センサーで周囲を認識する仕組み

「ロボットが壁にぶつかる手前でピタッと止まったり、床の黒い線をたどって走ったりする仕組みってどうなっているの?」

「マイコンとモーターだけだと、ただ真っ直ぐ走るだけの人形になっちゃう……どうすればロボットを『賢く』できる?」

ロボット開発において、モーターが「筋肉」なら、センサーは人間でいう「五感(目・耳・皮膚など)」です。

センサーがないロボットは、目隠しをして部屋の中を歩き回るようなもので、すぐに障害物に激突してしまいます。逆に、適切なセンサーを組み合わせてあげることで、ロボットは周囲の環境を自分で察知し、まるで生き物のように自律して動き出すようになります。

この記事では、ロボット開発の初心者でもすぐに扱えて大活躍する代表的な3つのセンサー「超音波センサー」「赤外線センサー」「光センサー」の仕組みと、マイコン(Arduino等)での使い方を徹底解説します!

1. ロボットになぜ「センサー」が必要なのか?

人間は、目で障害物を見て、耳で音を聞き、皮膚で温度や障害物を感じ取って避けています。ロボットも同じです。

【人間の自律行動】
  目や耳で感じる(入力) ──► 脳で考える ──► 筋肉を動かして避ける(出力)

【ロボットの自律行動】
  センサーで感じる(入力) ──► マイコンで判断 ──► モーターで動く(出力)

センサーから送られてくる電気信号(データの値)をマイコンが読み取り、「もし前方に壁があったらバックする」「もし暗くなったらLEDを光らせる」という条件分岐(If文)をプログラムすることで、ロボットに「賢い行動」をさせることができます。

2. 超音波センサー:コウモリのように「壁までの距離」を測る目

ロボットが障害物を避けるための「目」として最もよく使われるのが、超音波センサー(代表例:HC-SR04)です。

【超音波センサーの仕組み(コウモリと同じ!)】
  1. センサーの送信部から「ピーッ」と人間の耳に聞こえない超音波を発射する
  2. 前方の壁に当たって「跳ね返ってきた音(エコー)」を受信部でキャッチする
  3. 「音が跳ね返ってくるまでの時間」を測定し、マイコンが距離(cm)に換算する!
     (音が空気中を伝わるスピードは一定なので、時間が長いほど遠いとわかる)

① 特徴とメリット

  • 価格が超安価: 1個200円〜400円程度で手に入ります。

  • 広い範囲の障害物を検知: 数センチから数メートル先までの障害物との正確な距離をリアルタイムで測ることができます。

② Arduinoでのプログラム例(距離を測る)

超音波センサー(HC-SR04)を使うには、主に4本のピン(VCC, Trig, Echo, GND)を接続します。

C++

const int trigPin = 9;  // 超音波を発射するピン
const int echoPin = 10; // 超音波を受け取るピン

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

void loop() {
  // 1. Trigピンから10マイクロ秒の間、超音波を発射する
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // 2. EchoピンがHIGHになっている時間(往復の時間)を計測する
  long duration = pulseIn(echoPin, HIGH);

  // 3. 時間を「距離(cm)」に計算する(音速から算出)
  int distance = duration * 0.034 / 2;

  Serial.print("距離: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);
}

この「distance(距離)」の値を使って、「もし距離が15cm未満になったら、モーターをバックさせる」というプログラムを組めば、自動お掃除ロボットのような障害物回避マシンが完成します!

3. 赤外線センサー:床の黒い線や障害物の有無を見分ける

人間の目には見えない「赤外線」を照射し、その反射具合を読み取ることで様々な情報をキャッチするのが赤外線センサー(フォトリフレクタ・ラインセンサー・測距モジュール)です。

① 用途A:ライントレースロボット(ラインセンサー)

床に引かれた「黒いテープ」の上を外れずに走るロボット(ライントレースカー)には、赤外線の反射を利用したセンサーが使われます。

  • 仕組み:

    • 白い床 ──► 赤外線が強く反射して返ってくる(センサーの値が高い)

    • 黒いテープ ──► 黒い色は光を吸収するため、赤外線があまり反射しない(センサーの値が低い)

  • 活用法: 左右2つのセンサーで床の反射を読み取り、「右のセンサーが黒に反応したら、左へ曲がる」という制御を繰り返すことで、自動で線をなぞって走ることができます。

② 用途B:障害物・段差の検知(赤外線近接センサー)

ロボットが机の上から落下するのを防ぐ「落下防止センサー」や、目の前の障害物の有無をサクッと検知するセンサーとしても活躍します(SHARPの測距モジュールなど)。

4. 光センサー(フォトレジスタ・Cdsセル):周囲の明るさを感じる

光の強さに応じて電気抵抗が変化する半導体素子(フォトレジスタ、別名Cdsセルなど)を使ったセンサーです。

【光センサーの仕組み】
  明るい場所(昼・ライトが当たった) ──► 抵抗が小さくなり、電気が流れやすくなる!
  暗い場所(夜・影に入った)         ──► 抵抗が大きくなり、電気が流れにくくなる!

活用アイデア

  • 自動で点灯するロボットのヘッドライト: 「部屋が暗くなったら自動でLEDヘッドライトがピカッと光るロボット」

  • 光を追いかける「ひまわりロボット」: 左右2つの光センサーの明るさの差を比べ、明るい方へ向かってタイヤを回転させる「フォトボア(光追従ロボット)」

Arduinoの「アナログ入力ピン(A0〜A5)」に繋ぐだけで、電圧の変化として簡単に明るさを数値化(0〜1023)して読み取ることができます。

5. 発展:複数のセンサーを組み合わせて「賢いロボット」を作ろう!

単体のセンサーだけでも面白い動きが作れますが、複数のセンサーを組み合わせることで、ロボットの賢さは何倍にも跳ね上がります。

🌟 総合自律走行ロボットの例

  • 前方に「超音波センサー」: 遠くの壁や障害物を早く発見して減速する。

  • 下向きに「赤外線センサー(2個)」: 床の黒い線に沿って走りつつ、机の端(崖)に近づいたら緊急停止する。

  • 側面に「接触スイッチ(バンパー)」: 万が一障害物にぶつかってしまったときの最終安全装置として働く。

このように、それぞれのセンサーの得意分野を組み合わせることで、予期せぬトラブルにも対応できる頑丈でスマートなロボットシステムが構築できます。

6. まとめ:センサーを味方につけてロボットに命を吹き込もう!

今回のまとめです。

  1. センサーはロボットの「五感(目・耳)」。周囲の環境をデータとして取り込むために必須!

  2. 「超音波センサー」を使えば、コウモリのように障害物までの正確な距離(cm)が測れる!

  3. 「赤外線センサー」を使えば、床の黒い線(ライントレース)や段差を検知できる!

  4. 「光センサー」を使えば、周囲の明るさを測って暗くなると動く・光るロボットが作れる!

マイコンのプログラミングに「もし(if)〜なら」という条件分岐を加えることで、ロボットはただの機械から「まるで意志を持っているかのような自律型マシン」に変身します。

ぜひ、お気に入りのセンサーをロボットに搭載して、あなたの部屋や机の上を自由に探検させてみましょう!