Arduino 入門
Lesson 66
【障害物回避センサ】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
本記事はLesson 66 【障害物回避センサ】です。
※障害物回避センサ:obstacle avoidance sensor
Lesson 65【Line Tracking Sensor】を学習しましたが、まあ名前が違うだけで原理は同じ。
「障害物回避センサ」のご紹介。
Lesson 65では、黒い線を認識するしないというのを学習しましたが原理は赤外線の送信、受信。
本Lessonの「障害物回避センサ」も同じで、赤外線の受信、送信です。
別のレッスンの赤外線を使用している電子部品と原理はさほど違いません。
「障害物回避センサ」は赤外線受信機と赤外線送信機とタイマーIC:NE555を備えたセンサモジュールとなります。
車輪付きのロボットなどに使われていて、障害物を検出する距離は数cm~数十cm程度。
特徴は、タイマーIC:NE555を搭載していること。
※NE555がオリジナル、各メーカーからCMOS版も含めてセカンドソース品が販売されている
タイマーIC:NE555を使用することでLEDから38KHzの赤外線を照射することができるようになっており、受光部にはIRフィルターとバンドパスフィルターが組み込まれ、38KHzのパルス波のみを受光する仕組みとなっています。
上記により、精度の高い障害物検知が可能となっています。
以下が同等品。
※prime対応品(出荷元:Amazon)
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「障害物回避センサ:obstacle avoidance sensor」は「タイマーIC:NE555」が実装されたモジュール。
「タイマーIC:NE555」は検索すると色々と遊びネタが出てくるので遊びに使うのにも重宝するIC。
単品買って、原理を理解するために遊んでみるのも面白いです!
※回路に興味がある場合ですが・・・
Lesson 66 目標
本Lessonの目標は以下です。
2.障害物回避センサの仕組みを理解する(理解しなくてもOKです)
3.障害物回避センサを動かすスケッチを描く
4.障害物回避センサを動かして遊ぶ
いつものように、遊ぶことが重要です。
「障害物回避センサ:obstacle avoidance sensor」ですが、Arduinoでの制御は単純です。
LED、buzzerなどと組み合わせてみる。
実際に、車輪付きのロボット、車を作ってみる。
色々、応用できると思います。
準備
ではLessonの準備に取り掛かりましょう。
電子部品は「障害物回避センサ:obstacle avoidance sensor」とLEDと抵抗。
「障害物回避センサ:obstacle avoidance sensor」だけだとつまらない。
障害物を検知したら赤色LED点灯、障害物がなければ青色LED点灯ぐらいの回路は組んで遊びます。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
- M-F M-M F-F セット Jumper wire(UNOと部品をつなぐための配線)
- VKLSVAN 3個 IR赤外線障害物回避センサーモジュール スマートカーロボット
- LED(好きな色をお使いください)
- 抵抗 330Ω
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「障害物回避センサ:obstacle avoidance sensor」について説明していきます。
障害物回避センサ 実物写真
下の写真が「障害物回避センサ:obstacle avoidance sensor」の実物写真です。
本Lessonで使用するものは、タイマーIC:NE555が実装されたモジュール。
左から、GND、VCC、OUT、ENの4つのピンで構成されています。
ポテンショメータは38KHzを調整するために使います。
障害物回避センサ 回路図
「障害物回避センサ:obstacle avoidance sensor」の回路図を示します。
配線をおいかけて回路図を起こします。
回路に興味がないかたは必ず飛ばし読みしてください。
まあ、すっ飛ばしてください!
テスタで配線おいかけていますので、間違えている場合もあります!
回路図作成中
障害物回避センサ 仕様
遊び、学習で使う分には気にする特性はとくにありません。
■仕様抜粋(一例:ものによります・・・)
項目 | 仕様 |
---|---|
動作電圧 | 3.3V ~ 5V |
動作電流 | ≧20mA |
検出距離 | 2cm〜40cm |
動作温度 | -10℃ ~ 50℃ |
出力レベル | TTL Level |
モジュールサイズ | 約 44mm × 11mm |
データシートを探したい場合は、各部品に関してはNE555、IR333、HS0038DBなどで検索するとさがしやすいかも。
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
それでも、とりあえず動作は確認できます・・・。
改めて仕様書を読み直しENを使ったスケッチを組んでみたいと思います。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「障害物回避センサ:obstacle avoidance sensor」を動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
Arduinoの使用ピンは以下。
- デジタル入力:7
- デジタル出力:2、3
- 5V、GND
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品は「障害物回避センサ」とLED、抵抗となります。
部品はわずかであるため接続は簡単です。
「障害物回避センサ」と接続するジャンパーワイヤーはM-Fを使用してます。
ブレッドボードを使うかどうかはお好みで。
使用するポートは
- デジタル入力:7
- デジタル出力:2、3
- 5V、GND
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
本Lessonのスケッチは単純。
というか回路を見てお気づきかもしれませんがENを使用していないので回路構成はLesson 65と同じだったりします・・・。
そのためLesson 65のスケッチでOKなんですね・・・。
ということでスケッチは同じ!
デジタル入力ピンで「障害物回避センサ」の出力電圧を読み取るのみ。
あとは、読み取った出力に応じて赤色、青色のどちらかのLEDを光らせることになります。
ここでは、ライントレースを想定して下記としました。
- 障害物があるときは赤色のLEDがON
- 障害物がないときは青色のLEDがON
//Lesson 66 障害物回避センサ //障害物回避センサ:obstacle avoidance sensorで障害物を検出 //https://omoroya.com/ const int ledPin1 = 2; // 赤色LED用 const int ledPin2 = 3; // 青色LED用 const int detectPin = 7; // obstacle avoidance interface(OUTPUT) int val; // センサ検出結果格納変数 void setup() { pinMode(ledPin1, OUTPUT); // 赤色LED用ピン設定 pinMode(ledPin2, OUTPUT); // 青色LED用ピン設定 pinMode(detectPin, INPUT); // センサ検出用ピン設定 } void loop() { val = digitalRead(detectPin); // センサ値読み取り //センサ値がLOWなら赤色LED ON(障害物あり) if(val == LOW) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); } //センサ値がHIGHなら青色LED ON(障害物なし) else { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); } }
動作確認
では、さっそく動作を確認していきます。
「障害物回避センサ」のセンサ部分に遮蔽物を置いてみてください。
- 障害物あり:赤色のLED ON
- 障害物なし:青色のLED ON
■色とセンサとLEDの状態
障害物 | センサ出力 | LEDの状態 |
---|---|---|
あり | Low | |
なし | High |
まとめ
本Lessonは、以下を目標としました。
2.障害物回避センサの仕組みを理解する(理解しなくてもOKです)
3.障害物回避センサを動かすスケッチを描く
4.障害物回避センサを動かして遊ぶ
「障害物回避センサ:obstacle avoidance sensor」は障害物を検出できるセンサ。
色々と遊ぶことができるセンサです。
応用編では、動くものに搭載して遊ぶのもよいかも・・・。
同じくいつになるかは?ですが・・・。
Lesson 66 【障害物回避センサ】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 67は検討中です。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
いつも分かりやすい記事をありがとうございます。プログラムなんですけど20行目はdetectorPinではなくdetectPinではないでしょうか?勘違いだったら申し訳ないです。
ななとさん、コメントありがとうございます。
ご指摘の通りです。
スケッチを修正しておきました。
また、何か間違い等ありましたらコメントいただけると助かります!