こんばんは、ななしのです。
KimKosakaさんの赤外線近接センサーをヒントに赤外線物体感知センサーを思いついたので実験してみました。http://www.yk.rim.or.jp/~nanashi/ews/ps/
原理は、左右の赤外線LEDから異なる赤外線メッセージを交互に送信して、物体で反射してきたメッセージをRCXで受信することによって左右の物体を感知します。
> 原理は、左右の赤外線LEDから異なる赤外線メッセージを交互に送信して、物体で反射してきたメッセージをRCXで受信することによって左右の物体を感知します。
メッセージの反射をRCX本体で捕らえるというアイデアに脱帽です。
私もPICで作って見よう。これは良い! Kim Kosakahttp://www.geocities.co.jp/Technopolis/5195/ir_eye/index.html
> メッセージの反射をRCX本体で捕らえるというアイデアに脱帽です。
このアイデアを思いついたときは自分でも「ナ〜イス」って思いました。(^^;
けどそれも近接センサーがなかったら思いつきませんでした。
しかし、この反射してきたメッセージをRCXで受ける方式の欠点は物体が正面にあった場合と左右にしか無い場合の切りわけが簡単にできないところです。
> 私もPICで作って見よう。
PIC版期待してます!
> > メッセージの反射をRCX本体で捕らえるというアイデアに脱帽です。
> このアイデアを思いついたときは自分でも「ナ〜イス」って思いました(^^;
> けどそれも近接センサーがなかったら思いつきませんでした。
Message ballも、Ir-eyeも既に出ていたのにその組み合わせには、
意表をつかれました。入力ポートを使わないのがクールですね。
> しかし、この反射してきたメッセージをRCXで受ける方式の欠点は
> 物体が正面にあった場合と左右にしか無い場合の切りわけが
> 簡単にできないところです。
障害物が左右両側にある場合と、正面とを区別できないのはir-eye同様ですし、
RCX codeでは左右いずれかと、正面にあるのをデコードするのは、
厄介ですが、NQCならそんなに難しくないんじゃないですか?
int ans, stat, oldstat;
task watcher()
{
while (true) {
ClearMessage();
ClearTimer(0);
until(Message() != 0 || Timer(0) != 0);
if (Message() == 190) {
stat = 1;
}
else if (Message() == 191) {
stat = 2;
}
else {
stat = 0;
}
ans = stat | oldstat;
oldstat = stat;
}
}
task main()
{
oldstat = 0;
start watcher;
while(true) {
if (ans == 0) {
/* 障害物なし */
}
if (ans == 3) {
/* 正面 */
}
if (ans == 1) {
/* 右 */
}
if (ans == 2) {
/* 左 */
}
}
}
> 入力ポートを使わないのがクールですね。
inputポートに接続するセンサーは、電気的に考慮しなければいけないことが多いので、inputポートを使わないセンサーはできないか考えてました。
> NQCならそんなに難しくないんじゃないですか?
簡単じゃないってのは言い過ぎでした。ボクもNQCならできると思いました。しかし、NQCはRCX codeにくらべるとやっぱり敷居が高いと思うので、RCX codeで正面が認識できないのはやっぱり欠点かなと思ったしだいです。
# 電子工作じたいが敷居が高いって突っ込みがありそうですが...(^^;
左右に物体があって正面が開いている場合にも,正面に物体が存在すると判断(?)するのは,左右のLEDの交互点滅方式の特徴(あえて言うなら避けられない欠陥)ですね。
ir-eyeでは正面検出用のLEDを設けて見たりしましたが,ir-eyeを載せた自走車で色々遊んだ結果,正面物体検出用のLEDは不要と判断しました。
感度(LEDの発光パワー)を落として検出距離を短くし,左右両方に物体を同時検出したらロボットの向きを少し右(or左)に振って正面の隙間を探るようにRCX-CODEでプログラムすれば,この問題を回避することができます。http://www.geocities.co.jp/Technopolis/5195/ir_eye/index.html
プログラムや使い方の工夫で回避方法は色々ありそうですね。
Jin です。
自分のところも AVRのライターの方、作動確認が出来たので、同じ物が作れそうです。
電源も3VだけでOKなので楽そうですね。
回路を見ていて面白いなーと思ったのは、想像で書いているんですが R3の10Kの抵抗と
C2の 0.001U のコンデンサーが、RESETのピンに行くところです。
多分、想像で書いているのですが、電源が入って(そういえば、スイッチが無いですねこの回路)
電源が安定するまでちょっと時間がかかって、その間、C2のコンデンサーのお陰で
少しだけ、 RESETがかかるのが遅れ,電源が安定したころに、コンデンサーも一杯になり
リセットがかかるようになっているような気がしました。
(想像ですので外れていたら指摘してください〜)
殆ど同じ回路で、IRのLEDを放射状6個くらいつけて、同じメッセージを出すようにするだけで
メッセージボール完成ですね!!。
いや〜、作ってみたいです。
> 回路を見ていて面白いなーと思ったのは、想像で書いているんですがR3の10Kの抵抗とC2の0.001U のコンデンサーが、RESETのピンに行くところです。
想像の通りです。しかしデータシートを見るとVCCと/RESETが同時に立ち上げっても内部のリセット回路でリセットされるようにデータシートに書いてあるので、もしかしたらコンデンサは冗長なのかもしれません。(念のため入れてます)
> (そういえば、スイッチが無いですねこの回路)
言われてみればスイッチ無いですね(忘れてた)。ブレッドボードを使っての実験レベルだったのでそこまで考えてませんでした。(^^;
いまは、電池ボックスをスナップからつけたりハズしたりして電源のON/OFFしてます。
> メッセージボール完成ですね!!。
> いや〜、作ってみたいです。
メッセージボール期待してます!
> KimKosakaさんの赤外線近接センサーをヒントに赤外線物体感知センサーを
>思いついたので実験してみました。http://www.yk.rim.or.jp/~nanashi/ews/ps/
お〜、面白い。 メッセージの反射を受けるというのは面白いです。
今の手持ちの部品でも直ぐ作れそうだから、作ってみたいです〜。
(あ〜、時間が無い〜ので、5月になってからかな〜。)
PIC でも直ぐ作れそうですよね。 それに、サッカーをするためのボールも
作れそうですね〜。
> 今の手持ちの部品でも直ぐ作れそうだから、作ってみたいです〜。
部品も、9個ほどと少ないので部品集めも簡単だと思います。
それにPICに変更するのもそんなに大変じゃないでしょう。
> それに、サッカーをするためのボールも作れそうですね〜。
そうですね〜やってることはほとんどメッセージボールとかわらないので、すぐ作れると思います。まあ、部品をボールの中に入れるという工作的な難しさはあると思いますが...(^^;