トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

超音波センサーを使おう


超音波センサーを使おう


 超音波センサーとは


超音波センサーとは超音波の反射を利用して対象物までの距離を測る測距センサーです。
ヴイストンロボットショップでは超音波距離センサモジュール HC-SR04をお求めいただけます。測定可能距離は2cm-450cmです。ArduinoやFreaduinoと接続して使うことができます。


超音波距離センサモジュール HC-SR04


 超音波センサーをロボットに載せてみよう


超音波距離センサモジュール HC-SR04をロボットに載せます。頭部前面板HC-SR04を両面テープ等で貼り付けます。配線頭部前面板頭部上面板の間を通します。
(注)下の写真のHC-SR04と、現在ロボットショップで販売しているものは色と形が若干異なりますが、機能は同じです。


HC-SR04の各ピンをFreaduino UNOにケーブルで接続します。接続ピンは以下の通りです。接続にはメス―メスのジャンパー線が4本必要です。

  1. (HC-SR04)VCC-5V(Freaduino):赤いピンヘッダならどこでも構いません
  2. (HC-SR04)TRI-A0(Freaduino):A0とプリントされた、黄色いピンヘッダ
  3. (HC-SR04)ECH-A1(Freaduino):A1とプリントされた、黄色いピンヘッダ
  4. (HC-SR04)GND-GND(Freaduino):黒いピンヘッダならどこでも構いません


次に、超音波センサーのデモプログラムdemo_sonic01.ino(7325)をダウンロードして、ロボットにインストールしてください。配線とプログラムのインストールが正しく行われていれば、超音波センサーの前に手をかざすとロボットが歩き出します。トリムは再度調整しておいてください。64行目のtmp_trim[SERV_NUM]={0,0,0,0}; を修正します。
このデモプログラムを書き込むときは、サーボモータのケーブルを外しておいてください。プログラムを書き込む際に電圧降下を起こさないようにするためです。


以下は超音波センサーのデモプログラムの抜粋です。超音波センサーで距離25cm以内になにかあれば、進むという処理になっています。

デモコードのif文の中のplayMotion(move_forward, 6);をplayMotion(move_back, 6);に変更すると、手をかざしたときに後退します。反応距離(下の例ではif(dist<25))を変更すると、手をかざして反応する距離が変化します。色々試してください。

//===================================================================================================
//Main
//===================================================================================================
void setup(){
  initServo();
  
  //debug
  Serial.begin(9600);
  
  pinMode(TRI,OUTPUT);
  pinMode(ECH,INPUT);
}

void loop(){
  int dist = getDistance();
  
  if(dist<25){
    playMotion(move_forward, 6);
  }else{
    playMotion(home_position, 1);
  }
  delay(100);
}

なお、超音波センサーから読み取った値をシリアルモニタで確認することができます。距離を実際に確認したい場合は、ボーレート9600でシリアルモニタを立ち上げてください。以下のように、超音波が帰ってくるまでの時間と、対象物までの距離が表示されます。


 LEDをインジケーターとして使ってみよう


ロボットにセンサー等を搭載した場合、センサーが反応しているか確認するためにLEDをインジケーターとして搭載することがあります。ここではOctopus LEDライトブリック(青)をインジケーターとして使ってみます。

下の写真のように、Octopus LEDライトブリック(青)頭部上面板の見やすい位置に両面テープ等で固定してください。


Octopus LEDライトブリック(青)Freaduino UNOをOctopus LEDライトブリック(青)に付属するケーブルで接続します。接続関係は以下の通りです。

  1. (Octopus LEDライトブリック(青))S-A2(Freaduino):A2とプリントされた、黄色いピンヘッダ
  2. (Octopus LEDライトブリック(青))V-5V(Freaduino):赤いピンヘッダ
  3. (Octopus LEDライトブリック(青))G-GND(Freaduino):黒いピンヘッダ

次に、超音波センサーとLEDインジケーターのデモプログラムdemo_sonic02.ino(743)をダウンロードして、ロボットにインストールしてください。配線とプログラムのインストールが正しく行われていれば、超音波センサーの前に手をかざすとロボットが歩き出し、かつ、LEDが光ります。トリムは再度調整しておいてください。58行目のtmp_trim[SERV_NUM]={0,0,0,0}; を修正します。
このデモプログラムを書き込むときは、サーボモータのケーブルを外しておいてください。プログラムを書き込む際に電圧降下を起こさないようにするためです。



以下はデモプログラムの抜粋です。digitalWrite関数でLEDの出力を制御しています。非常に単純ですが、目に見えないセンサーや無線通信等が機能しているかを確認したい場合に重宝します。

  1. digitalWrite(LED,HIGH); LEDを点灯する
  2. digitalWrite(LED,LOW); LEDを消す

//===================================================================================================
//Main
//===================================================================================================
void setup(){
  initServo();
  
  //debug
  Serial.begin(9600);
  
  pinMode(TRI,OUTPUT);
  pinMode(ECH,INPUT);
  pinMode(LED,OUTPUT);
}

void loop(){

  int dist = getDistance();
  
  if(dist<25){
    digitalWrite(LED,HIGH);
    playMotion(move_forward, 6);
  }else{
    digitalWrite(LED,LOW);
    playMotion(home_position, 1);
  }
  delay(100);
}

<<前のページ  目次  次のページ>>