子供向けの工作(4)


超音波センサーで距離を測る
人感扇風機を作る

 子供向けの工作材料



 子供向けの工作材料として以下の工作を作ってみました。
超音波センサーで距離を測り、それを利用して人感扇風機を作る講座内容を作ってみました。
 実際に地区センターで小学校高学年以上向けに講座を開きました。
以下が、その工作結果です。



  超音波について学習


1.音について
 音は、空気を伝わって人の耳の鼓膜(こまく)を振動(しんどう)させるので、 それにより人が音として感じることができます。音には、低い音、高い音があります。
 音の高低は、音の周波数(しゅうはすう)によって変わります。
(1)周波数
 音は波のように空気中を伝わっていきます。



 波形は同じ形の繰り返しになっています。この繰り返し1つを"1周期(しゅうき)"と呼 びます。



 この図の場合、1秒間に2つの波(2周期の波)を含みますので、周波数は 2 ヘルツ(Hz)となります。
つまり1秒当たりの周期数が周波数であり、周波数の単位は、Hz で表します。

2.超音波について
 音の周波数が、だんだん大きくなると、私たちが感じる音の高さがだんだん高くなって、 キーンというような感じになります。
 ところが、周波数がおよそ1万5000ヘルツくらいになるとたいていの人には、 音として感じられなくなります。
 人間の耳に聴こえない高い周波数の音が一般に 超音波と呼ばれ、はっきりした決まり事が あるわけではありませんが、だいたい 20 kHz 以上の音を超音波とすることが多いようです。

3.超音波の身近な例
 超音波は、動物にとっては普通に聞き取ることの出来る音です。

 たとえば犬笛(右図)は犬や猫の訓練に用いられ、16-22 kHz の音を出すことができます。
犬笛は人の息を超音波に変える最も簡単な超音波発生装置です。



 また、イルカが超音波を用いて仲間とコミュニケーションをとることは有名です。
一方、イルカは夜間や濁った海中でも障害物を避け、魚を見つけて捕らえることができます。

4.超音波を使った例
(1)音響測深機(おんきょうそくしんき)
 航海や漁業のためにも海の深さを、正しく知ることは大切なことです。 そのため超音波を利用した、音響測深機がつくられました。
 船の底から下のほうへむけて、ごく短い時間だけ超音波をおくりだしたとします。するとこの 超音波は、海の底まで進み、そこで反射されて、また船にもどってきます。
これは、ちょうど山にむかって声を出したとき山びこが聞こえてくるのと同じわけです。



 そこで、たとえばこの超音波が船を出てから 0.2秒 たってもどってきたとすると、 超音波が海の底に達するまでの時間は、0.1秒です。

 超音波の速さが、毎秒1500メートルとすれば、0.1秒間に走った距離は150メートルですから、 これがそこの海の深さになるわけです。



(2)魚群探知機
 超音波を、海の底へむけて送り出すと、その超音波は海の底から反射されてもどってきますが、 もし、途中に魚の群れがいるとそこからも反射してもどってきます。もちろん、魚の群れで反射した 超音波のほうが、速くもどってきます。
 このことを応用した器械が、魚群探知機です。この器械は、多くの漁船にさかんに使われています。

(3)超音波診断装置  みなさんは、X線(レントゲン線)で体の中を診察することができることを知っていますね。
これと同じように、超音波を体の中へ送り込んでその反射で、脳や呼吸器や消化器などの状態を 診察することもできるようになりました。

その他いろいろなところで超音波は使われています。


  超音波センサーを使って距離を測ろう


1.超音波センサーHC-SR04 を使って距離を測ります。



 左側の筒状のものが、超音波を発する装置で、右側の筒状のものが、 超音波を受信する装置です。



2.超音波センサーHC-SR04 をマイコン・アルディーノに接続し、超音波を発して 戻ってくるまでの時間から障害物の距離を測ります


3.配線図
 図のように超音波センサーとアルディーノをブレッドボードに配線します。


4.アルディーノを起動し、アルドゥブロックを表示します。
(1)ブレッドボード上のアルディーノをUSBコードでパソコンと接続します。

(2)パソコン画面上のArduinoアイコンをダブルクリックしてArduinoを起動します。


(3)Arduinoの画面上の「ツール」をクリックすると下図のように画面が表示されます。


(4)「Ardublock」をクリックして、アルドゥブロックを表示します。

5.アルディーノのプログラムをアルドゥブロックで作ります。
(1)「ずっと~実行」ブロックが表示されています。


(2)「通信」ボタンから「シリアルに出力」ブロックを引き出し、「ずっと~実行」に接続します。
「シリアルに出力」ブロックは、値を画面に表示するためのブロックです。


(3)「変数/定数」ボタンから「メッセージ」ブロックを引き出し、「シリアルに出力」の メッセージに接続します。


(4)「メッセージ」をマウスでクリックして、distance = と入力します。
 英語のdistanceは、日本語では距離です。


(5)「変数/定数」ボタンから、「真」ブロックを引き出し、「シリアルに出力」ブロックの 「最後に改行」に接続します。


(6)「通信」ボタンから、「真偽値を文字列に」ブロックを引き出し、「distance =」に接続します。


(7)「Generric Hardware」ボタンから、「超音波」ブロックを引き出し、「真偽値を文字列に」接続します。

超音波センサーの「trigger(トリガー) pin(ピン)」は、超音波を発生させるピンです。
超音波センサーの「echo(エコー) pin(ピン)」は、超音波を受けるピンピンです。

(8)マイコンの「D2」ピンに超音波センサーの「trigger pin」(超音波を出すピン)をつなぎます。
同じようにマイコンの「D3」ピンに超音波センサーの「echo pin」 (超音波を受けるピン)をつなぎます。
 したがって、「超音波」ブロックで「trigger pin」の「D11」をマウスでクリックして、 「D2」に変更します。
 同じく「echo pin」の「D12」を「D3」に変更します。


(9)「制御」ボタンから、「delay MILLIS ミリ秒」ブロックを引き出し、「シリアルに出力」ブロックの 下に接続します。


(10)「変数(へんすう)/定数(ていすう)」ボタンから、「定数」ブロックを引き出し、 「delay MILLIS ミリ秒」ブロックに接続します。


これでプログラムは完成です。

6.プログラムを実行して障害物までの距離を測ります。
(1)写真のように、超音波センサーの前に障害物を置きます。


(2)「Arduinoにアップロード」ボタンをクリックして、プログラムを実行します。
プログラムが起動し、正常であればArduino が動き、すでに距離を測定しています。

(3)測定している距離を見るために、画面上の「シリアルモニター」ボタンをクリックします。
 モニターが表示されて、distance= 11 のように1秒(1000ミリ秒)おきに測定した値が表示されます。
単位はcm で、この例ではセンサーから障害物までの距離は11cm となります。


 画面いっぱいに表示されたら、「出力クリア」ボタンをクリックすると新しく表示されます。
障害物を少し動かしてみてください。シリアルモニターの測定距離が変わります。

これで超音波センサーを使えば、距離を測定できることが分かります。




  超音波センサーを使って障害物があるとき、LEDを点灯しよう。


次のようにLEDを点灯するプログラムを作ります。
*センサーから100cm 以内に障害物があるとき、緑色のLEDを点灯します。

1.配線図


2.次のようなアルドゥブロックのプログラムになります。シリアルモニターは使いません。
(1)変数/定数ボタンから「set integer variable」を引き出して「ずっと~実行」に接続します。
これは、「値」に入る数値を変数に入れます。

(2)「set integer variable」の変数「Integer」を「 d 」に変更します。


(3)値の所に、「Generric Hardware」ボタンから、「超音波」を引き出して接続します。


(4)「超音波」で「trigger pin」の「D11」をマウスでクリックして、「D2」に変更します。
 同じく「echo pin」の「D12」を「D3」に変更します。


(5)「制御」ボタンから、「もし/でなければ」を引き出し、「set integer variable」の 下に接続します。


(6)テストの所に、「テスト」ボタンから、「 ≦ 」を引き出して接続します。

(7)変数/定数ボタンから、「整数の変数名」を引き出し、「 ≦ 」の左に入れて、整数の変数名を消して
「 d 」を入力します。


(8)変数/定数ボタンから、定数「 1 」を引き出し、「 ≦ 」の右側に入れて、1を100 に変えます。

 これは、超音波センサーからの値を入れてある「d」が100以下の時は、「なら」を、 実行し、「d」が100以下でないときは、「でなければ」を実行します。

(9)「ピン」ボタンから「デジタルピンに値を設定」を引き出し「なら」の所に接続します。
 #のピン番号を「D5」にし、その下の値を「HIGH」にします。


これで、LEDが点灯します。

(10)「ピン」ボタンから「デジタルピンに値を設定」を引き出し「でなければ」の所にに接続します。
 #のピン番号を「D5」にし、その下の値を「LOW」にします。


これで、LEDが消灯します。

(11)「制御」ボタンから、「delay MILLIS ミリ秒」を引き出し、「もし/でなければ」の下に接続します。


これでプログラムは、完成です。

3.「Arduinoにアップロード」をクリックして、プログラムを実行します。

4.障害物を置いたり、取ったりして、LEDのミドリが点灯するか確認してください。

5.参考として回路図






  人感扇風機を作成


超音波センサーから1m以内に障害物があれば(人がおれば)扇風機を動かします。
プログラムは、上述の場合と同じです。

1.次の図が完成図です。


2.電源のスイッチをONにしてください。


3.センサーから1m以内に障害物があると扇風機が動きます。

4.扇風機のスイッチは、真ん中の「LOW」 のままにしておいてください。
 「HIGH」にすると風力が強くなりますが、電池があっというまになくなりますので、 切断してあります。

 扇風機は、ダイソーで販売(300円)されているもので、説明に、2時間以上連続して 使わないようにしてくださいと書かれています。注意してください。

5.電池2個を使っていますが、長時間使えません。
 百円ショップダイソーで、スマートフォン用の USB充電ACアダプターが200円~300円 で売っていますので、写真のように使ってください。



6.電池を交換する場合には、+、-を間違えないように入れてください。ケースの内側に +、- が書いてあります。

7.USB充電ACアダプターを使うときは、扇風機のスイッチを「HIGH」にしてもだいじょうぶです。

8.超音波人感扇風機の回路図です。


さわやかな風を楽しんでください。