Arduinoライントレースロボット制作のつづきです。
今回は、超音波センサーを取り付けて障害物を検知できるようにしたいと思います。
- Arduino NANO(互換品)
- 超音波センサー(HC-SR04)
- XHコネクタ
超音波センサー
超音波について簡単に整理します。
- 音は空気中を波となって伝わりますので、「音波」とも言われています。
- 周波数(振動数)は1秒間に何回振動したかを表し、単位は Hz(ヘルツ)と言います。通常、人間が聞こえる音の周波数は、20Hz~20000Hz(20KHz)くらいまでです。
- 周波数(振動数)が 20000Hz(20KHz)以上の音波が「超音波」と呼ばれ、人間には聞こえませんが、犬やネズミなど聞きとることができる動物がいます(広義の意味では、人が聞くこと以外の目的で利用される音を意味し、人間に聞こえるかどうかは問わず、超音波はさまざまな分野で利用されています)。
- コウモリやイルカは超音波を発することもでき、コウモリは超音波を使って、暗い所でも障害物を避けて自由に飛び回ったり、小さな虫を捕えたりできます。イルカは超音波を使って仲間とコミュニケーションしたり、餌を捕ったりします。
超音波センサーは超音波を使って対象物までの距離や有無を検出するセンサーです。レーザーやLEDなどの光を使わないため、周囲の明るさや対象物の材質や色などの影響を受けないことが特徴です。反射型は発信と受信の機能を持っており、対象物へ超音波を発信し、その反射波を受信して発信から受信までの時間で距離や有無を検出します。
ロボットへの取付
ロボットへの取付
ロボットへ取り付けるために3Dプリンタでブラケットを自作しました。
Arduinoとの接続
arduinoとの接続は、以下のようにしました。
- Arduino 5Vピン ・・・ HC-SR04 VCC
- Arduino GNDピン ・・・ HC-SR04 GND
- Arduino 7ピン ・・・ HC-SR04 trig
- Arduino 8ピン ・・・ HC-SR04 echo
プログラム
距離(cm)を表示するプログラムを作ってみます。
センサーtrigピンにつないだArduinoの出力ピン(ここでは7ピン)を10マイクロ秒「HIGH」にしセンサーから超音波を出します。超音波が出されるとECHOにつないだArduinoの入力ピン(ここでは8ピン)が「HIGH」となります。超音波が測定物に当たり反射して戻ってきたところを検出すると「LOW」になります。
距離は小学校の算数で習った「距離=時間×速さ」で計算できます。したがって、対象物までの距離は、(「HIGH」の時間x 340 )÷ 2 で求められます(HIGHの時間は往復の時間ですので2で割ることになります)。
#include
#define Echo 8
#define Trig 7
long Duration = 0;
long Distance = 0;
void setup() {
Serial.begin(9600);
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
void loop() {
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
Duration = pulseIn(Echo, HIGH);
Distance = Duration/2*340*100/1000000;
delay(25);
Serial.print("Distance:");
Serial.print(Distance);
Serial.println(" cm");
}