Arduinoコードとビデオ: Arduinoスマートカー用4チャンネル赤外線障害物センサー
このチュートリアルでは、4チャンネルの赤外線障害物回避センサーモジュールを使ってスマートカーを作る方法を紹介します。このモジュールは4つの赤外線センサーで構成されており、さまざまな方向の障害物を検出してロボット車両がそれに応じて反応できるようにします。各センサーは近接に関するフィードバックを提供し、検出された障害物に基づいて応答をプログラムできるようにします。

このプロジェクトを進めるにあたり、ハードウェアの構成部品、配線手順、そしてセンサーを効果的に動作させるために必要なコードを説明します。追加の解説はビデオ(00:00)をご覧ください。
ハードウェア解説
このプロジェクトの主要構成要素は、LM339クアッド差動コンパレータを搭載した4チャンネル赤外線障害物回避モジュールです。このICは2〜36ボルトで動作可能ですが、本プロジェクトではArduinoとの互換性のため5ボルトを使用します。モジュール内の各センサには反転入力と非反転入力があり、障害物から反射された赤外線を比較してそれに応じた信号を出力します。
モジュールは、障害物が検出されていないときに出力を高位に保つプルアップ抵抗を備えるよう設計されています。物体が検出されると出力は低位になり、Arduinoに対して明確な信号を送ります。さらに、障害物検出時に点灯するLEDを搭載しており、動作中のユーザーへのフィードバックが向上します。
データシートの詳細
| 製造元 | 不明 |
|---|---|
| 部品番号 | 4チャンネル赤外線障害物回避 |
| ロジック/IO電圧 | 5ボルト |
| 供給電圧 | 2~36V |
| 出力電流(チャンネルあたり) | 10 mA(典型値) |
| ピーク電流(チャネルあたり) | 20 mA(最大) |
| PWM周波数に関するガイダンス | 該当なし |
| 入力ロジック閾値 | 低 < 0.8 V、高 > 2.0 V |
| 電圧降下 / Rオン時のDS/ 彩度 | 0.2 V(典型値) |
| 熱限界 | 動作温度:-40〜125 °C |
| パッケージ | モジュール |
| 注記/バリエーション | 感度を調整できるセンサーが4個付属しています |
- フローティング入力を避けるため、すべてのコンポーネントで共通の接地を使用してください。
- 検出範囲を最適にするため、感度用ポテンショメータを調整してください。
- センサーを損傷しないよう、適切な電源電圧を確保してください。
- センサーの誤読を防ぐため、配線接続を確認してください。
- センサーの電源を安定化させるために、デカップリングコンデンサを使用してください。
- 各センサーをメインシステムに統合する前に個別にテストしてください。
配線手順
4チャンネルの赤外線障害物回避モジュールをArduinoに配線するには、まず電源とグラウンドを接続します。センサーモジュールのVCCピンをArduinoの5V出力に接続してください。次にモジュールのGNDピンをArduinoのグラウンド(GND)に接続します。これでセンサーが動作するために必要な電力が供給されます。
次に、センサーの出力ピンをArduinoのデジタル入力ピンに接続します。例えば、前左センサー(ラベルで示されている)の出力を接続しますN1) をデジタルピン2に、右前のセンサー (N2) ピン3に、左後部のセンサー (N3) をピン4に接続し、右後方センサー (N4) をピン5に接続します。さらに、ブレーキ出力をピン8に、前方障害物インジケーターをピン9に、後方障害物インジケーターをピン10に接続できます。信頼性のある動作のため、すべての接続が確実に接続されていることを確認してください。
コード例とウォークスルー
Arduinoのコードは、プログラム全体で参照しやすくするために、各センサーピンの定数を定義することから始まります。例えば、FRONT_LEFTピン2として定義されており、どのセンサーがどのピンに対応しているかが明確になっています。
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
〜の中でsetup()関数内で、各センサーピンは使用して入力として設定されますpinMode(). この設定により、Arduinoは動作中にセンサーの状態を読み取ることができます。
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);
pinMode(FRONT_RIGHT, INPUT);
pinMode(REAR_LEFT, INPUT);
pinMode(REAR_RIGHT, INPUT);
}
メインループでは、各センサーの状態が次の方法で読み取られますdigitalRead(). 障害物が検出された場合(LOW信号で示される)、該当する障害物用LEDが点灯し、シリアルモニタにメッセージが表示されます。
void loop() {
int FR = digitalRead(FRONT_RIGHT);
int FL = digitalRead(FRONT_LEFT);
if( FR == LOW || FL == LOW) {
digitalWrite(FRONT_OB,HIGH);
Serial.println("Front obstacle");
} else {
digitalWrite(FRONT_OB,LOW);
}
}
このコード構成は拡張や修正が容易で、特定のアプリケーションのニーズに合わせて応答を調整できるようになっています。完全なコードについては、以下の読み込みセクションを参照してください。
デモンストレーション/期待できること
配線とコードのアップロードが完了すると、モジュールのLEDはいずれかのセンサーが障害物を検出するたびに点灯するはずです。シリアルモニタにも前方または後方の障害物の存在を示すメッセージが表示されます。センサーが正しく配置されていれば、スマートカーはプログラムどおり停止したり進行方向を変えたりして反応します(ビデオの02:30で)。
よくある落とし穴として配線の誤りがあり、これにより入力がフローティングしたり誤った読み取りが発生したりします。センサーが適切に校正されていること、ポテンショメータが目的の感度に調整されていることを確認してください。各センサーを個別にテストすることで、完全な統合の前に問題を特定しやすくなります。
動画のタイムスタンプ
- 00:00- プロジェクトの紹介
- 01:30- ハードウェアの説明
- 午前02:30- コードのウォークスルー
- 03:45- 配線手順
- 04:50- ライブデモ
必要かもしれないもの
-
アマゾンAmazonで4チャンネルの赤外線センサーを購入するamzn.to
リソースと参考文献
まだリソースはありません。
ファイル📁
ファイルは利用できません。