ちょっと書き込みが遅れてしまいましたが、Make: Tokyo Meeting 06 (MTM06)に行ってきました。場所はいつもの大岡山の東工大です。

前回も新図書館の建築中でしたが、まだ工事中でした。今回は広報誌 Tech Techのキャラクタの工太郎くんがお出迎え。
体育館中央では原寸大のはやぶさがお出迎え。この前の宙博にはこれを展示したほうが良かったのではないかと。

早速mbedコーナにいってご挨拶。当日の午前中だけで組み上げたm3piを一時的に置かせていただきました。少しでもmbedに興味を持っていただければと。

あとは、会場をみてまわりましたが、今江科学さんのジャイロカーの発展形のジャイロモノレールが良かったです。あと、連立方程式が解ける機械、ペーパークラフトでつくった巨大な戦艦大和とか。目新しいものも多かったし、人も多かったです。
私は結局WiiChuckアダプタだけ購入しました。3pi robotにちと投資してしまったので倹約ぎみです。
mbedコーナの出展者のみなさん。いろいろありがとうございました。
エレキジャックのサポートページに載っているPepperの新ファームウェアを使ってみることにしました。
まずはAVRマイコン(ATTiny85-20PU)にファームウェアを書き込む準備をしなければなりません。ATMEL純正のプログラマであるAVRISP mkIIを秋月で買ってきて、これをAVRマイコンに接続します。今回は適当にブレッドボードで接続しました。

書き込みソフトは純正のAVR StudioをMacBook ProのParallels DesktopにインストールしているWindows XPにインストールしました。新ファームウェアのHEXファイルはmorecatさんのページからダウンロードして、それをまず書き込み。次にfuse書き込みを行いました。これに失敗すると二度とチップが使えなくなるとのことで、緊張しましたが無事書き込めたようです。
新しいファームウェアが書き込まれたチップを赤いPepperのATTiny85-20PUと交換し、MacBook Proに接続したところ無事動作確認できました。バージョン確認も「?1.0.0.0,pepper,20100221*」と返ってきたので問題無さそうです。
次にせっかくの新ファームを活用するために、7セグメントLEDを接続してみました。
普通だとブレッドボードで接続するのですが、今後も使いそうなのでエレキジャックのプレゼント基板の余りを活用して組んでみることにしました。
作成中の基板はこんな感じ。基板スペースが小さいのでチップ抵抗を使いました。

配線が終了しました。あまり美しくないですが勘弁してください。

表からみるとこんな感じです。

早速Pepperに接続して、MacのProcessingでテストプログラムを実行しました。

配線ミスもなく、無事に数字が表示されました。
今回はMacからコントロールしましたが、今度は玄柴に接続してrubyから制御してみたいと思います。
KURO-SHEEVA(玄柴)にGainer互換のPepperを接続してみました。
参考にしたのはエレキジャックのサポートページです。
「Gainer互換Pepperでフィジカル・コンピューティング」フォローアップ記事(6)
すでにKernelは2.6.32.3に更新済で、cdc_acmドライバは組み込まれているので、PepperをKURO-SHEEVAのUSBに接続すれば認識できるはずです。
まずは、シリアル通信での動作確認を行うためにuucpパッケージをインストールします。
$ sudo apt-get install uucp
続いてuucpが使用するグループに登録します。
$ sudo usermod -G dialout ユーザ名
$ sudo usermod -G uucp ユーザ名
$ groups ユーザ名
ochanet uucp dialout
$
ここで、PepperをKURO-SHEEVAに接続してみます。syslogを確認します。
$ sudo tail /var/log/messages
Mar 20 08:13:40 debian kernel: usb 1-1: new low speed USB device using orion-ehci and address 2
Mar 20 08:13:40 debian kernel: usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x1 is Bulk; changing to Interrupt
Mar 20 08:13:40 debian kernel: usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x81 is Bulk; changing to Interrupt
Mar 20 08:13:40 debian kernel: usb 1-1: configuration #1 chosen from 1 choice
Mar 20 08:13:40 debian kernel: cdc_acm 1-1:1.0: ttyACM0: USB ACM device
Mar 20 08:13:40 debian kernel: usbcore: registered new interface driver cdc_acm
Mar 20 08:13:40 debian kernel: cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
認識されているようです。
デバイス名はttyACM0とのことなので、パーミッションを確認します。
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Mar 20 08:13 /dev/ttyACM0
$
dialoutグループに登録しているので、アクセスできるはずです。
$ cu -l /dev/ttyACM0
Connected.
接続しました。ここで ?* と入力すると、
$ cu -l /dev/ttyACM0
Connected.
?1.0.0.0,pepper,20090621*
こんな感じでバージョン情報が表示されます。cuから抜ける場合は ~. です。
これで接続確認までは完了しました。
次にPepperを制御するためにRubyをセットアップします。
$ sudo apt-get install ruby
$ sudo apt-get install rubygems1.8
gainerのパッケージがあるのでしょうか?
$ gem search gainer --remote
*** REMOTE GEMS ***
$
無いみたいです。
エレキジャックのページにおいてあるパッケージを持ってきます。
$ wget http://www.eleki-jack.com/FC/2009/12/30/gainer-0.0.2.gem
$ ls -l
total 7
-rw-r--r-- 1 ocha ochanet 7168 Dec 30 09:21 gainer-0.0.2.gem
$ sudo gem install gainer-0.0.2.gem
Successfully installed gainer-0.0.2
1 gem installed
シリアルポートを制御するパッケージも持ってきます。
$ sudo gem install ruby-serialport
Building native extensions. This could take a while...
ERROR: Error installing ruby-serialport:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb install ruby-serialport
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:1
Gem files will remain installed in /var/lib/gems/1.8/gems/ruby-serialport-0.7.0 for inspection.
Results logged to /var/lib/gems/1.8/gems/ruby-serialport-0.7.0/ext/gem_make.out
mkmfが無いとおこられてしまいました。
makeをインストールします。
$ sudo apt-get install make
$
もういちどシリアルポートをインストール
$ sudo gem install ruby-serialport
sudo: unable to resolve host debian
Building native extensions. This could take a while...
Successfully installed ruby-serialport-0.7.0
1 gem installed
Installing ri documentation for ruby-serialport-0.7.0...
Installing RDoc documentation for ruby-serialport-0.7.0...
$
今度は大丈夫です。確認してみます。
$ gem list
*** LOCAL GEMS ***
gainer (0.0.2)
ruby-serialport (0.7.0)
$
早速テストプログラムを流してみます。
$ cat blink.rb
require 'rubygems'
require 'gainer'
gainer = Gainer::Serial.new("/dev/ttyACM0")
flag = true
while true
gainer.analog_output[0] = (flag == true ? 0xff : 0);
flag = ! flag
sleep(0.2)
end
$ ruby blink.rb
Pepperに接続しているLEDが点滅を始めました!
これで開発環境が整いました。

スイッチサイエンスさんに注文していた赤いPepperキットが届きましたので、早速組み立てました。パーツはこんな感じです。

組み立ては10分もかからなかったかな。組み立て後はこんな感じです。

これから入出力ポートにLEDをつないでテストしてみますが、ブレッドボードはどこ行ったかなぁ。
エレキジャックの基板プレゼントにまた当選してしまいました。忘れたころに届いたのでびっくり。
ただこの基板自体はそんなに難しいパターンではなく、ユニバーサル基板でも十分組める回路なのですが、右下に小さくあるPepperというフィジカルコンピューテイングのプラットホームの基板については興味があるので、パーツをそろえて作ってみたいと思います。
Pepperの記事はエレキジャックのページにあるのでそちらをご覧ください。
