はじめに
今手元に、2003年度版の部誌がある。ふと見てある事実に気がつく。なんと電子工作に関するものがないではないか。そこで、私は使命感と絶望感とともに今、キーボードを叩いています。
さあ、設計しよう
「ライントレーサー」とは、呼んで字のごとく地面に書かれた黒いラインの通りに進んでいくという自立型ロボットです。さて、一口にそう言ってしまいましたが、どうやって黒いラインをロボットに判断させるんだ、無駄な前置き書かずに、とっと説明しろとおっしゃるかもしれません。まあそう慌てずに、順序だてて説明しましょう。
センサーの話
まずは、地面に書かれた(貼られた)黒いラインとそれ以外の部分を判別しなくてはなりません。そこで、登場するのは、ロボットの目ともいえるセンサーです。今回は、対象に赤外線を発光して、反射波を受け、反射光の強さに比例して、出力する反射型フォトインタラプタ1を使用します。なるほど、黒いラインとそれ以外(白)との反射波の強さの差を使うんだなと、聡明な皆さんは気づかれたでしょうが、その通りです。つまり、センサーが黒いライン上にあるときは、Low(電流が流れない)、それ以外(白)上にあるときは、High(電流が流れる)と言うわけです。しかし、ここからが問題です。このセンサーにどのように判定させるかが、このライントレーサーのかぎを握ります。2つのセンサーを使ってでもできる2のですが、それじゃおもしろくない(?)ので今回は6つのセンサーを使ってみることにしました。
では、ライントレーサーと黒いラインの位置関係の考えられる場合を図で説明したいと思います。説明の都合上、センサーを左上から順に1~6と番号を振ります。なお、進行方向は、上です。
いわゆる直線
このときセンサーは、すべて黒いライン上には在りません。つまり、センサー1~6はすべてHigh。
カーブ(曲がり始め)
このときセンサーは、センサー2のみ、黒いライン上にあります。つまり、センサー2はLow、センサー13~6はHigh。
カーブ(中盤)
このときセンサーは、センサー2、6が、黒いライン上にあります。つまり、セン
サー26はLow、センサー1、3~5は、High。
カーブ(曲がりすぎ)
このときセンサーは、センサー1、3、6が、黒いライン上にあります。つまりセンサー1、3、6はLow、センサー2、4、5はHigh。
とまあ大体こんなもんです。反対のカーブは、これの逆でいいのですが、実は、3.の場合のカーブの角度によっては、センサーの当たり方が違っていたりするのですが、このセンサーの黒いラインとの位置関係(絶対ありえないものを含む)は、2の6乗すなわち、64通り存在することになります。ちょっとセンサーの話から少し離れましょう。
回路の話
では、何の説明かと言うとロボットの目の説明をしたので続いては、ロボットの頭とも言える電子回路について説明したいと思います。とここでほんとは、ここに回路図3をバンと載せればいいのだけれど、回路図をでかく書きすぎて入らなそうなので、模式的な図で説明したいと思います。ここでのセンサー1~6は、先ほどの図の位置と同じです。
左図がその図です。四角で囲まれた部分にはそれぞれに応じた回路が来ます。その回路の説明は今回、省略させてもらいます。(どうしても聞きたい方は丸川まで。部誌を家で読んでいる方は分からず終いなのですが。)
この回路のかぎは、基盤1~3に入っているPIC16F84Aと呼ばれる部品です。この部品は、IC(集積回路)と呼ばれる部品の一種で、この中にプログラムを書き込むことができ、そのプログラムによってPICの端子(部品の足)につながっているセンサーや、モーターなどを自由に動かせるものです。プログラム言語がアセンブラ4なので、なかなか難しく、使いづらいです。
では、この回路の説明をしてみましょう。まず、センサーからおのおのからそれとつながっている基盤1~3にHighかLowの信号が送られます。その送られてきた信号を基盤1、3は、基盤2に送ります。そしてそれらの信号(センサー3、4は直接)を受けて基盤2のPICが評価を下し、モーターの右、左をとめたり、動かしたりします。ちなみに、直進するときは、左右両方を動かし、右に曲がるときは、左を動かし、右を止めます。左は、逆です。聡明な方は、基盤1、3のPICは必要がないのでは、とお思いになると思いますが、これは、私の大いなる誤解のせいなのであしからず。
そこで先ほどのつまり、センサーの話が必要になります。先ほど述べたように、センサーの黒いラインとの位置関係(絶対ありえないものを含む)は、2の6乗すなわち、64通り存在するとなっていました。じゃあ、この64通りのときどっちに曲がるべきなのかを全通り別々に、判別していけばいいのでは、と考える方もいらっしゃるでしょうが、これはかなり大変です。それじゃあ絶対ありえないものを抜けばいいのでは、少なくなるのでは、当初はそうしようかと考えていましたが、それを調べているときにふと気づいたのです。それは、先ほど(センサーの話)の1.のときは直進、2.3.のときは、右に、4.ときは左に曲がらなければなりません。そこで、黒いライン上にあるセンサーで、右側のセンサー(2、4、6)の内Highとなったセンサーの数(1.のときは3個)から左側のセンサー(1、3、5)の内Highとなったセンサーの数を引いてみます。すると、直進するときは、差が0。右に曲がるときは、負の数。左に曲がるときは、正の数になっています。これは、多分どんなときでもいえる(全通りは調べていませんが)と思われるのでこれを利用します。これによって、場合分けが3つで済むので、ずいぶん楽になりました。
こんな感じで動かして見たいと思います。8月18日現在完成していないので、もしかしたら、動いてない状態で部誌の中だけの存在となってしまうかもしれないし、少し違ったものができるかもしれませんが、あしからず。予定は未定ですから(笑)。
ここより先は、ひまな人だけ読んでください
2.あとがきと言うか愚痴 いや一部誌をかくのに、かなりの時間が経ってしまった。現在の時刻は、8月18日6時25分。書き始めたのは、8月17日10時。はぁー。書いてるときには、オリンピック野球の日本代表は、キューバに予選で勝ってるし、巨人の工藤は200勝達成してるし、(野球のことばっか)何が悲しくて6時のニュースで・・・。すいません愚痴ばかりで。それと、私は誤字脱字王なので、多少の誤字脱字には目をつむってください。
赤外線の発光素子と受光素子を一体化してモジュール化した素子。秋葉原の買い物中になんと製造中止になってもはや日本にいくつ存在するかわからないものを発見し、購入。ちなみにもったいなすぎて、このライントレーサーには、もっといっぱいあるやつを使っていたりする。 ↩︎
センサー1、2の部分だけを使う方法。ようするに、1が、黒いライン上にある(Low)のときに左に曲がり、2が、黒いライン上にある(Low)のときに右に曲がり、どちらも黒いライン上にない(High)ときに直進するってこと。まあここまでの話に、ついてこれたあなたには愚問か。 ↩︎
回路図・・・回路を記号で書いたもの。ちなみに、岡田仁史さんが作られた『BSch』の作った電子回路エディター。とにかく使いやすく、パーツを新規に作れる。フリーソフトと言うのもいい。岡田仁史さんのHPは、http://www.suigyodo.com/興味がある方はどうぞ。 ↩︎
アセンブラ・・・ハードウェアの中で使われている機械語をほんの少し人に分かるものに変えたもの。命令(人が分かる形のもの)が、35個しかないので、使いこなすのは大変。 ↩︎