レビュー
» 2015年01月02日 21時00分 UPDATE

新春電子工作!:“Edison”でロボットアームをグリングリン動かす(前編) (1/5)

“ロボットを動かす喜び”は、ニッポンモノづくりの原動力。その感動をEdisonとロボットアームで“お手軽”に体験。前編は“疑似”ロボットアームを組み立てる。

[小林哲雄,ITmedia]

年の初めのためしとてEdisonで電子工作することに

 2014年12月のMaker Faire Tokyo 2014で「Maker Faire Tokyo 2014スペシャルのEdison」を入手した。となれば、工作せずにはいられない。幸せなことにMaker Faire Tokyo 2014スペシャルのEdisonには、Edison for Arduinoに拡張パーツが色々と付いている。そこで、今回はEdison for Arduinoに拡張回路を作って、さらにソフトウェアを動かしてみる。

kn_edsndiy01_01.jpg Maker Faire Tokyo 2014で入手したEdison for Arduinoには、ワークショップで使わなかったArduino拡張機能が付いていた

 編集部からは「ロボットアームがグリングリン動くとイイよね!」という「要望」があったが、本格的なロボットアームって結構高い。ものすごく乱暴だが、ロボットキットの安いもので10万円超える。アームだけでもその4分の1はする。ただ、もうちょっと安いものをと思って探してみると、イーケイジャパンの「MR-999」が見つかった。価格は税込みで5940円だ。

 MR-999は普通のモーターを5個使ってアームを動かすタイプなので、あまり細かい作業はできそうもないが、とにかく安いので、「年末年始の休みに子どもといっしょの組み立てたい」「冬休みの自由研究で試しに作ってみたい」という目的には適している。秋葉原の「ツクモRobot王国」では、販売だけでなく組み立て済みを展示しているので、購入前にどんな感じで動くのかも確認できる。

kn_edsndiy01_02.jpg ツクモパソコン本店の2階にあるツクモRobot王国では、2階に行く階段の途中に2台のMR-999を展示している

 展示している2台のMR-999をチェックすること30分。MR-999を動かすために必要な条件を以下のように推察してみた。

  • モーターの正逆回転コントロールで、動きを反転
  • 単一電池4本使用
  • モーターはあまり大きくない……ってことは多分モーター電圧は3ボルト
  • ってことは電池を+3ボルトと−3ボルトに分けてあって、それをスイッチでコントロール
  • 本体とリモコンは8ピンのコネクタでつながっているから、モーター端子5本と+−の電源とグランドだろう


 展示機材を見ただけだったが、実物を購入して確認してみたところほぼ推察通り。8ピンの信号種類だけ、リモコンにはGNDが出ていなかった。

 このリモコンと同じことをEdisonでできればMR-999をEdisonから動かすことができる。PCでMR-999をグリングリン動かすというのは専用のUSB接続オプションがあるので、ワザワザ作るとしたら「無線操縦」という機能を加えたい。幸いなことにEdisonには無線LANがあるので、ロボットアームにEdisonとモーター駆動回路を取りつけて、無線で動かすのは不可能じゃないだろう。

Edison側の仕様を考える

 7種類の信号線を制御してそれを無線LAN経由でMR-999に伝えるには、Edisonでどうすればよいだろうか。ArduinoならGPIOが多いし、GPIOコントロール用として

Edisonには「MRAA」という関数を用意している。だから、プログラム的な障害はない。

 だが、しかし。

 C言語とかArduinoの経験はあるけど、Webサーバを立てて、Edisonからリモコンで動かすなんて無理そうだなぁ………、と思っていたところ、Arduino IDEに「Simple Web Server Wi-Fi」というサンプルプログラムを発見した

kn_edsndiy01_03.jpg これ!これを求めていたのぉ!と狂喜した私

 ただし、このままサンプルコードを実行するとEdisonのWeb serverが応答してしまい、Simple Web Server Wi-Fiが動かない。この解決策にはいくつかあるが、今回は標準Webサーバを避けて、ほかのポート番号を使うことでサンプルコードが動いた。

kn_edsndiy01_04.jpg 解決方法は英語のコミュニティで回答があった。日本語のコミュニティもあるが、原稿執筆段階で誰も書いていない………

 このサンプルコードは、WebサーバをArduinoで実現し、「H」と「L」のリンクを接続先のWebブラウザでクリックすることでLEDを点灯(ON)にしたり消灯(OFF)にしたりする。ただ、ソースを見ると恐ろしくシンプルなので、「Java Scriptでボタンを設置して処理」ということはできそうもない。

 モーター5つを操作するために10個のGPIOが使えるだろうか? Arduinoの場合、シールドのコントロールにGPIOを使うことが多く、それゆえの制限がある。しかし、Edison for Arduinoの場合は、GPIOがフルに使えるはずだ。その“はずだ”を確認するためのプログラムを用意することにした。

       1|2|3|4|5 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.