茨城ノード大会での技術交流会で、いくつか質問がありましたが・・・多かったのがセンサーを増やす方法についてです。
茨城ノード大会の参加チームは、ほとんどが LEGO EV3 のロボットで、4つの入力ポートで頑張っていました。
ポートが4つ ≒ 4つのセンサーしか使えない
これが常識ですが・・・現状では、日本一、世界一を目指すにはこれを打破しなければならないと思います。
一番簡単なのが・・・EV3を2個搭載することです。これで8個のセンサーが使えます。でも、2つの EV3 の通信など、プログラムがめっちゃ複雑になります。そして、ロボット自体が大きく重くなります。(ですので・・・お勧めしません。)
M&Yがロボカップに参入した頃は、LEGO RCX の全盛期でしたが、やっぱり3つの入力ポートに「いかに沢山のセンサーを接続するか」が成績に大きく影響していたと思います。
まず、自作とかを考えないのであれば・・・売っている製品でセンサーポートを増やしましょう。
私の知っているのは、これです。
http://www.mindsensors.com/ev3-and-nxt/52-port-splitter-for-nxt-digital-sensors
mindsensors.com のポートスプリッターです。どのセンサーでも拡張(接続)できる訳ではありませんが・・・それでも、簡単にセンサー数を増やせるのはありがたいですよね。世界大会参加チームのロボットは、結構これを使っていたと思います。
(ちなみに、M&Yはでもこれを購入して実験したことがあります。)
※実際に購入する場合は、良く調べてから買ってくださいね。私の情報はちょっと古いです。
次は、センサーコントローラとして Arduino などと接続して(部品屋で売っているような)普通のセンサーを使えるようにする方法です。M&Yは NXT と Arduino を接続していますが・・・おそらくEV3 でも同じようにできるのではないかと・・・
接続方法はいくつもあると思いますが、代表的なのは I2C接続と RS485接続だと思います。
I2C接続が、(ハード的には)一番簡単簡単で、LEGOの黒いケーブルの中の6本の線の
赤:GND
緑:Power
黄:SCL
青:SDA
これらを Arduino の対応するピンに、それぞれ接続します。
あとは、プログラム次第で、いくつものセンサーを接続することができます。(できるハズです。)
(プログラムのサンプルはググって下さい!)
M&Yは2011年はI2C接続でしたが、2012年以降は RS485 接続に変えました。
ハードは詳しくないので、良く分からないのですが・・・RS485の方が通信が速いのと、I2C接続のセンサーを使いたいから、通信用にI2Cポートを割り振れなかったから・・・
配線はこんな感じです。
M&Yのロボットは、(レスキューメイズのロボットですが)Arduinoに 4つの超音波センサーと2つの非接触型赤外線温度センサーを接続しています。
レスキューラインもそのうちにカメラが必要になるのではないかと考えています。(レスキューメイズは既に必要ですよね)ルールが複雑になると、チーム側も追従しなければならないので、大変です。(はぁ~)
中1のKです。
教えてほしいことがあります。
NXTとArduinoの接続にRS485を使っているとのことですが、言語はNXCですか?
ぼくもNXTでRS485を使いたいのですが、
上手くできず困っています。
M&YのRescue-B(今でいうレスキューメイズ)のロボットはNXCを使っていました。NXTとArduinoをRS485通信で接続したいということのようですが、何がどのようにできないのでしょうか?
そもそもNXTとArduinoがつながらず、NXCでは
出来ないかと思っていました。しかし、NXCで
繋げているとのことですので、僕も続けて頑張ってみようと思います。情報ありがとうございました。
希望が持てました。
2011年に書いたけど投稿(公開)していなかったRS485に関する記事がありましたので、順次公開していきます。何かの参考になれば良いのですが・・・