ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

arduinoコミュの質問:2つの物体間の距離を測定する方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
2つの物体間の距離に応じてLEDの点滅スピードを変えるようなものが作りたいのですが、どういったセンサーまたは方法を使えばいいでしょうか?
物体間の距離は、机の上で実現できる距離のものと、学校の教室くらいの大きさの部屋で実現できるものの2つを考えています。
赤外線や超音波などの距離センサは、他のものにも反応してしまう、GPSの送受信では精度不足といったことで悩んでいます。
こういった目的にあったセンサーまたは方法はあるのでしょうか?

コメント(11)

>2つの物体間の距離
物体のサイズ、形状、動く速度、距離情報の更新頻度、両方の装置にセンサーを付けていいか、物体から物体まで視界がクリアか、物体から部屋の四隅まで視界がクリアか、を教えてください。

両方の装置にセンサーを付けていいなら、感知する超音波や赤外線の周波数を決めて、ペアリングできそうです。

あと、部屋の四隅に赤外線照射装置を付けて、物体が赤外線の方向などを感知することにより自機位置を計算する、ということもできそうです。
電波強度による距離測定もできますね。
ご回答ありがとうございます。とても参考になります。
物体のサイズ、形は特に決めていませんが、持ち運びできるものとして15センチ四方くらいの立方体を想像しています。向きは関係なく感知することが理想ですが、工作の複雑さによっては限定されても構いません。
速度は日常的に手でコップなどを持って動かす速度から歩く速度を想像してください。急激な速さについていく必要はありません。
両方の物体にセンサーをつけることは可能です。
障害物があっても感知できれば尚良いですが、これも工作が複雑または高価になるようなら、障害物なしという条件でも可能です。
持ち運びをしたいので、部屋に何かを取り付けるよりもそれ自体で完結している方が望ましいです。

超音波、赤外線や電波強度の送受信に必要な機器でArduinoとの通信のしやすいものというとどんなものがあるでしょうか?超音波センサのPING)))は使用したことがあるのですが、特定周波数だけ検出となると何か方法があるんでしょうか?
そしたら、FMラジオの周波数帯を使う、送信機と受信機の電子工作キットがたくさんあります。機器1に、ラジオ放送していない周波数で一定音量のピー音などを放送する機能を持ったFM送信機を備え、機器2にFMラジオ受信機を備えてピー音の強度を測り、音量によって距離を推定します。誤差を少なくするために、さらに搬送波の考えを持ち出すといいと思います(「ピー ツー ピー ツー」を放送して、受信機はピー音とツー音の差を数値化する)。

動作開始のときには、放送していない・雑音の少ないFM周波数帯を選ぶ必要があって、送信機と受信機を同じ周波数に合わせる機能が必要です。また、音量と距離の関係は雑音状態によって変わると思うので、キャリビュレーション機能もあったほうがいいんじゃないかと思います(送信機と受信機を1mに置いたとき・10mに置いたときのピー音音量を覚えて、その日の距離計算の目安として使う)。
FMの場合、搬送波の強度が減衰しても原理的に復調後の信号はほとんど変化しないんじゃないでしょうか。FMラジオの周波数帯を使ってAM変調という事であればまだわかりますが…。

ただ、いずれにせよ電波強度を使う場合、屋外や電波暗室を使わない限り、部屋の環境、周波数によっては反射波との干渉が生じ、強度から距離を求めるのは困難になるかもしれません(距離に関係なく場所によって強い場所と弱い場所ができてしまう)。

単純に、赤外線と超音波の併用が簡単なのではないかな…なんて思います(赤外線と超音波の時間差を使う)。もちろん超音波は他の物体や壁に反射しますが、直接届く波がある限り、最短に届いたものがその距離になるはずですよね。
そうですね、下手に復調すると減衰が補正されてしまいますね。
机の上ぐらいなら、ジャイロと加速度センサを使って積分で移動位置を求めるのはどうですか。
初期位置を入力する必要はありますが。

問題は、積分誤差がどれくらい出るかですね。

机上に升目を書いておいて、それを読みながら移動するというのは、NGでしょうか。

升目技が使えるとすれば、ジャイロと磁気センサで、あらかじめ地磁気強度を測定しておいて、強度テーブルを作り、そこから、位置を再計算するというのは、どうかな。

いっそのこと、加速度の積分も併用して・・・・。(^^;
思いつきですいません。
ご回答ありがとうございます。

電波強度の方法を教えていただいて、検索していたところ、英語ですがXbeeを使っている事例を見つけました。
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1249397048
本のMaking Things Talkでも紹介されているようです。ただ、やはり正確な距離は測定できず他の要素での誤差はいなめないとのこと。距離は正確にわかる必要はないのですが、比較的高価な機器を揃えなければいけないので気軽にテストができないのが悩みどころです。

赤外線と超音波の併用というと二つのセンサを向き合わせて使うことになるのでしょうか?併用して時間差を使うというのがわからないのですが、具体的にどういった方法になるんでしょうか?

ジャイロと加速度センサを使う方法も興味深いんですが、融通はあまり効かなそうですね。
「距離に応じてLEDの点滅を変える」ってことは要求分解能は4ビットから5ビットくらいでいいのではないでしょうか。
そうであれば、電波の強度を測る方法が一番簡単と思います。
AMラジオ帯域で1KHzバーストで発信、AMラジオの音声出力を1KHzでフィルタして平滑、などはいかがでしょうか。


>併用して時間差を使うというのがわからないのですが、具体的にどういった方法になるんでしょうか?

超音波で距離を計測するということは、超音波を発信してから、それを受信するまでの時間を計測するという事ですよね。
つまり物体Aから物体Bまでの距離を計るとすると、Aが超音波を発信してからそれをBが受信するまでの時間を計ればいいわけですよね。しかしそのためには、Aがいつ発信したか、というタイミングをBが知る必要があります。そこで超音波よりもずっと高速な赤外線でそのタイミングを知らせる、という事です。
原理的には、Aから赤外線と超音波に同時に信号を発信します(実際には同時である必要はありませんが)。するとBには、まず赤外線の信号が届き、次に超音波の信号が届きます。この時間差がA-B間の距離になります。
デジタルペン等でも使われている、結構精度も出せる方式です。

もちろん、A-B間で何か信号線を接続する事が許されるなら、わざわざ赤外線を使わず、その信号線を使えばいいでしょう。

手持ちの部品で試しに…と思い立ち…超音波の送受信モジュールが無いので「音波」でできるかなと…圧電サウンダとマイクで、Arduino2台でやってみましたが、マイクで音を拾った後のアナログ系が結構面倒で(っていうかアナログ苦手なんで)挫折。でも赤外線の通信はとても簡単でした。

>二つのセンサを向き合わせて使うことになるのでしょうか?

このあたりは工夫次第かと思います。もちろん向き合わせれば効率は良いかもしれません。でも、例えば送受信器を複数使う等で指向性を無くす事は不可能ではないと思います。
なんか、挫折のままだと悔しいのでアナログ系をもっとしっかり組んで再チャレンジしてみました。

写真の右側の基板が発信側。今回の件とは全く別の目的のために作成したArduinoをベースとした基板ですが、たまたまこの基板に圧電サウンダを搭載していたのでこれを使いました。ブレッドボード上に赤外線LEDを3個直列に並べてます。LEDは40kHzで点滅させ、圧電サウンダは4kHzの音を出すようにします。ともにtone関数を使いました。

左のDuemilanoveが受信側。ブレッドボードに赤外線の受信モジュールと、そしてマイクからの信号を増幅するアンプを組んでます。それぞれの出力をArduinoの入力端子に入れてるだけです。

圧電サウンダからの音がそれほど大きくないので距離は限られましたが(写真のように机の上で並べる程度)、ふたつの基板の距離に応じて、赤外線からの受信とマイクからの受信の時間差が変化することが確認できました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

arduino 更新情報

arduinoのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング