2015年3月31日火曜日

YosemiteとArduino IDE 1.6.2でStuduinoを使う(訂正あり)

(追記:2015-04-04 Arduino IDE 1.6.3対応と、アーテックのライブラリ更新について、次のエントリに書きました。以下は参考までにしていただき、新しいほうをご参照ください)



東大阪の学校向け教材メーカー、アーテックのスタディーノ(Studuino)という、Arduinoとモータドライバを一枚にした基板があり、一般向けに秋月共立が取り扱っていることもあり、結構お使いの方がいらっしゃるようで、ブログエントリをたくさん見かけました。

上でショップ名に商品のリンク貼ってるんですが、値段がそうとう違うのは、企業向けと学校向けでボリュームが違うから卸の価格も違うんだろうと。どっちがどっちかは想像にお任せする感じで。

スタディーノはクロック8MHzのATmega168、USB-シリアルにProlificのPL-2303TAを使っていて、モータドライバ(Toshiba TB6552FNG)と大量のピンヘッダやコネクタ分の価格を、CPUのスペックを落としたり安価なUSBデバイスを使うことで補っている雰囲気なのが特徴かと思います。(商品紹介ページ

ピンヘッダが大量にあるのは、通常のピンソケットとは別に、すべてのI/Oに電源ラインがセットになっていて、3ピンソケットのケーブルで入出力デバイスを接続できる設計だからです。カタログを教材販売店からいただいたのですが、以下のモジュールが専用品としてラインナップされていて、プラスチックブロックに入っており、他にキューブ型などいろいろなプラスチックブロックの組み立てでロボット風味の工作ができるように考慮されています。レゴっぽいといえばそうかもしれない、というところです。

ちなみに上からサーボモータまで全部盛りセットは「Robotist Advance」になるので学校関係の方でいろいろ試してみたい方(特に加速度センサが必要な方)におすすめしておきます。「計測と制御キット」のシリーズや「うきうきロボットプログラミング」のセットには加速度センサが入っているものはいまのところないようです。
  • タッチセンサ(押しボタン風味。ストローク5mmぐらい)
  • 圧電スピーカ
  • LED(赤、緑、青、白)
  • 赤外線フォトリフレクタ(Rhom RPR-220
  • フォトトランジスタ(Siemens SH309)
  • 音センサ(ECM+アンプIC、現物がないので未確認)
  • 加速度センサ(Freescale MMA8653FC
  • DCモータ(ギヤードモータ)
  • サーボモータ(いわゆる超小型サイズでトルク3kgらしい)
  • 温度センサ(Microchip MCP9700
  • 赤外線リモコン受信器
  • カラーセンサ(AMS-TOAS TCS3414CS)
  • 超音波距離センサ(HC-SR04)←Parallax Inc. "Ping))"の中華コピーの代表かと
  • ジャイロ・加速度センサー(Invensense MPU-6050
  • Bluetoothシリアル(Robotech RBT-001)―プラスチックブロックなし
  • 技適なしBluetooth 2.0+EDR←...

上記パーツはどれも基板に実装されていて、日圧のPHの4ピンソケットがついてます。実際に使うのは2〜4ピンなわけですが、スタディーノ側が3ピンソケットになったケーブルを使い、4ピンはI2C接続のみなので、3ピン2列のソケットでA4, A5, VCC, GNDに接続することになるわけです。専用ケーブルは一応I/Oラインはグレー、電源は±どちらも黒、になっていて逆刺ししないよう色で区別するようになっているので念のため(僕は最初間違えてから気づきました)。

DCモータ端子も外部電源端子もPHの2ピンです。モータと電源の関係では、モータ用電源とロジックの電源は小さなダイオード通して共通(ロジック側はレギュレータで3.3Vにしている)なので、モータドライバの発熱を心配するほどの使い方は考えられていないと思います。純正電池ケースが単3形(AA)電池3本用なので、アルカリ電池で4.5Vとか二次電池で3.6Vとか、そういう使い方の範囲にとどめて、たくさん電流流したい人はシールドの利用を考えるべきでしょう。また、サーボの電源もモータと共通です。

普通のArduinoと言われるUnoは、クロック16MHzのATmega328、USB-シリアルはATmega8U2というUSBつきの小さなAVRを使ってCDCクラスのデバイスを実装しているので、Mac OS XやLinuxではドライバのインストール不要で勝手にデバイスが生えますが、スタディーノはメーカー製チップを使っているのでメーカーのデバイスドライバが必要です。

前書きが長くなりましたが、そういうわけで、YosemiteとArduino IDE 1.6.2で使うためのメモを書いておこうと思いました。

まず最初にはまるのがデバイスドライバだと思います。Prolificは昔いろいろと苦労させられた方が多いと思いますが、なにかあったら、最新のデバイスドライバを探すことが第一だと思います。その際、末尾の型番がいろいろありますが、スタディーノで使っているのはTAなので、以下のリンクから、TA対応の最新版をダウンロードしてください。アーテックのダウンロードページにあるものは最新とは限らないです。(いま現在掲載されているものでもYosemiteでも動くらしいですが、僕のところではデバイスが生えませんでした。バージョン番号はかわっていませんが、plistの変更があったのかもしれません)
Prolific PL-2303のページ
初めてProlificのドライバを入れる方への注意ですが、Mac OS Xの場合kextなのでkextloadコマンド叩けばいいはずなのに、インストーラはマシンを再起動させます。なんとかならんものか。

アーテック側で用意されている、Scratch 1.4を魔改造(ほめてます)した開発環境にはArduinoのコンパイラとライブラリが入っているので、Scratchでプログラムする分にはこれ以上特に考えなくてもわりとサクサク動いて面白いのですが(ダウンロードページにScratchライセンスとGPLv2ライセンスでソースコード全部が置いてあるので読むと楽しいです)、Arduino IDEを使うには、作業が必要です。

アーテックのページには、Arduino IDE 1.0.5を使う方法が書いてありますが、こちらはAdafruit版やらいろいろ入っているせいかどうも動きがおかしく、これを書いているいま最新の1.6.2で使えるようにしました。

まず、標準のArduino IDEはこのボードを知らないのでboards.txtに追記が必要ですが、1.x(0以外)以後は構成がかわったようで、ユーザのホームディレクトリ側を書き換えればよいようです(「ツール」→「ボード」→「Boards Manager...」というメニューがありますが、使うのは1.6.3以後を待て、のようです)。以下のところにありました。
~/Library/Arduino15/packages/arduino/hardware/avr/1.6.2/boards.txt
で、この末尾にでも、以下の内容を追記します。
proo.name=Studuino (3.3V, 8 MHz) w/ ATmega168
proo.upload.tool=avrdude
proo.upload.protocol=arduino
proo.upload.maximum_size=15872
proo.upload.speed=115200
proo.bootloader.tool=avrdude
proo.bootloader.low_fuses=0xc6
proo.bootloader.high_fuses=0xdd
proo.bootloader.extended_fuses=0x02
proo.bootloader.path=optiboot
proo.bootloader.file=optiboot_pro_8MHz.hex
proo.bootloader.unlock_bits=0x3F
proo.bootloader.lock_bits=0x0F
proo.build.mcu=atmega168
proo.build.f_cpu=8000000L
proo.build.core=arduino:arduino
proo.build.variant=arduino:standard
proo.build.board=AVR_PROO
 アーテックの用意しているboards.txtに加えて、proo.upload.tool=avrdudeを書かないと、「書き込むツールがわからん」と言って転送エラーで止まります。proo.build.board=AVR_PROOについては大阪電気通信大学の兼宗先生からご教示いただきましたが、たしかに他のボードに倣って追記しておいたほうがよさそうです。

そのあと、アーテックのページにある「Studuinoライブラリセット」のzipを展開して、プロジェクトディレクトリ下に作ったlibrariesなり、/Applications/Arduino.app/Contents/Java/libraries 以下なりお好みのところに移動します。これで完了。

サンプルとしてBlinkが用意されているので、「ファイル」→「スケッチの例」→「Studuino」→「Blink」を開いて、コンパイル、書き込みができることを確認してください。このサンプルはA4で点滅するので、A4端子にLEDを接続する必要があることに注意、です。下手にArduinoの経験があるとD13が点滅するんだろうと思ってしまいますが、スタディーノの流儀にしたがい、APIドキュメントにしたがって書かれたスケッチです(そのわりにboard.timer(1000);でなくdelay(1000);なのはなぜだろう、とか思わない大人になりたいです)。

というわけで、ひとまずセットアップについて書いてみました。