今回は、ロボットへ判断させるための入力信号を取り込んでみます。SHARP製の赤外線距離センサモジュール(GP2Y0A21YK0)を使用してArduinoに取り込みある距離に来たらLEDを光らせます。
さあ、行ってみまShow!
<目次>
- キットを使ったセンサー入力
・こんな感じのもの
・光らせてみます。
・アレレ? 光らない!
・こういう構造なんですね。 - センサーとArduinoでLチカ
・接続図
・Arduinoのスケッチ
・キットと同じようにLチカ - まとめ
1.キットを使ったセンサー入力
・こんな感じのもの
SHARP製の赤外線距離センサモジュール(GP2Y0A21YK0)を使用した、リレー付きのキットです。
・SHARP製の赤外線距離センサモジュール(GP2Y0A21YK0)使用。
・リレー付きで、接点出しが出来る。(NC,NO)
・ボリューム付きで検知する距離を可変できる。
<キットの回路説明 :マイコンキットドットコムのHPより>
このキットで使用しているシャープ製の測距センサーは検出距離に反比例した電圧を出力するセンサーです。赤外線を出し、その反射光から距離を検出します。マイコンICがその電圧を測定し、ボリュームで設定された電圧(検出距離に対応)と比較します。その結果から設定距離の10%以内に近づくとアラームを知らせる黄色LEDが点灯し、次に設定距離に達すると赤色LEDが点灯し、同時にリレーが駆動されます。
※キットでは、マイコンICが電圧を測定しますが、センサー単体になると、マイコンはありませんので、測定せず、アナログ値が出るだけです。ねんのため。
<注意点>
リード線の色が一般的でないので、注意して下さい。
あと、キットとしての入力電源(12V)が必要です。
センサーモジュール単体では、0.3~7Vが供給電圧になります。
・光らせてみます。
扇子を近づけるとある位置で、黄色のLEDが点灯後、赤色のLEDも点灯します。
(離れると、また消灯します)
分かりにくいですが、ボリュームを回すと、LEDが点灯する距離を調整できます。マイコンキットドットコムさんの動画を参考にしました。
・アレレ? 光らない!
ところが、今度は近づけても、近づけても点灯しません。センサーが赤外線式なので、赤外線が通り抜けてしまう物体は、反応しないのです。
・こういう構造なんですね。
赤外線を出しているのは、画像の奥側になります。ですから、扇子を奥側で近づけると反応しますが、手前では反応しなくなります。
2.センサーとArduinoでLチカ
さて、次は、センサー単体を使って、Arduinoの接続して入力し、キットと同じようにある位置まで近づいたら、LEDを点灯させます。(得意のLチカです)
・センサーモジュール単体では、0.3~7Vが供給電圧になります。
・赤外線を用いて、三角測量の要領で距離を測定します。
センサーの原理などの詳しく説明されています → 赤外線測距モジュールで物体の距離を測ってみます(1/2)
・電圧と距離の関係は直線ではない。(距離測定というより、物体の有無検知として使用予定)測距範囲10-80cm。
・シリアルモニタで値を見ると、200~600の値がでていました。遠いと数値が小さく、近いと値が大きくなりました。
・500という値になった時に、LEDを点灯させます。
・AruduinoのA0ピンから出て来る値を読み取ります。
・LEDを点灯させるための出力端子は、以前のLチカでやった2番ピンの出力を取り出します。(ソフト(スケッチ)も流用できるので、効率的です)
改めて、赤外線距離センサモジュール(GP2Y0A21YK0)のデータシートのリンク先を貼っておきます。
gp2y0a21yk_e.pdf (global.sharp)
また、いそぷろのブログさんもメッチャ分かりやすいです。参考にさせて頂きました。
・接続図
さて、実際に、光らせていきましょう!
まず、Aruduino、センサー、LEDの接続図です。こんな感じで繋ぎますが、すごくシンプルです。
・Arduinoのスケッチ
参考に、Aruduinoのスケッチ(サンプル)を記載します。
int val; //センサーの入力をいれる変数
const int LED_PIN1 = 2; //LED(2番)ピンをPIN1に割り当て
void setup() {
Serial.begin(9600); //シリアル通信の準備
pinMode( LED_PIN1, OUTPUT ); //LED(2番)ピン出力
}
void loop() {
val = analogRead(A0); //A0ピンの入力を読み、valにいれる
Serial.println(val); //シリアルモニタへ表示させます
if (val >500) {
digitalWrite(LED_PIN1, HIGH); //valの値が500より大きい時、LED点灯
} else {
digitalWrite(LED_PIN1, LOW); //valの値が500以下の時は、LEDを消灯させます
}
delay(600); //シリアルモニタの値が流れて見にくいので0.6秒(600ms)待ちます
}
・キットと同じようにLチカ
同じように 「Lチカ」 出来ました!
3.まとめ
・基本はセンサーの使い方は、センサーへ電源(及びGND)を接続して、出力(Vout)を取り出すだけです。(あとは、どう使うか)
・センサーの原理も理解しておいた方がいいでしょう。あとで、課題が出て来た時に、分かっていると対応しやすいです。
・センサーの種類も他に、超音波式などがあります。(反射してくる時間を測る)
センサーの入力を取り込んで、値によって違うことが出来るところまで確認出来ました。ロボットでは、ある距離まで近づいたら、ぶつからないよう、回避した動きをさせようと思います。現在は、ロボットの剛性をあげる構造変更しています。(もう少し頑丈になるように改造しています)お楽しみに~! つづく。