Make: Tokyo Meeting 02に行った際に見かけた、Gainer miniと言うハードウェアを購入。
これは、よく知られるGainerよりも、少し小さいバージョンで、
アールティ, ロボット スクール/ロボット ショップで販売されている。
Gainerがオープンソースと言うこともあって、いろいろな会社が作って発売してるのかな?
その辺りはよくわからない。
他にも、Gingerとか言うGainer互換のハードウェアもあったが、緑色だったので興味がわかなかった。
今まではGainer欲しいと思っても中々手が出なかったが、MTM02のイベントの雰囲気と、
Gainer mini本体だけでなく、ブレッドボード他4種類の実験に必要な部品一式が揃ってる、
特別スターターキットでお値段8000円!とお安かったので買った。
商品はバラバラなものが無地の紙袋に入ってると言う、その場で考えました級の代物だったが。
ハンダごてすら持ってない俺でも、完全に組み立て可能な上に、
必要な部品もあるこのセットなら何とかできそうだと言うのが気に入った。
ちなみに、付いてきた4つの実験用部品セットは、最近再販され始めた「+GANIER」の内容準拠らしい。
さらにこの新しい「+GAINER」だが、俺が買った旧版には無い、AS3の解説があった。
俺はそれが一番見たかったのに、ズルイ!
なお、製品名はGainer miniとなっているが、俺は標準サイズを見たことが無いので、
どの程度小さいのか言い表せない。ただ、+GAINERの写真を見る限りだと、
スイッチが小さい事や、隙間が少ないことが分かる。
Gainer miniとPCを接続
と言うことで、早速触ってみた。
まず、PCとGainer miniを接続し、最初のデモを動かす所からだ。
Gainer miniのダウンロードページから、ドライバとFlash用のソフトウェアライブラリをダウンロードする。
ダウンロード出来たら解凍し、空白や全角文字が無いフォルダに放り込んでおく。
今回は、「C:\Gainer」以下に入れておこう。
次にGainer miniとPCをUSBで接続する。
普通に新しいハードウェアのドライバインストールウィザードが始まるので、
普通に先ほどのドライバを指定し、インストールしよう。
インストールが完了したら、Gainer miniの青いLEDが不気味に光りだした。
Gainer miniの鼓動
デモを試す(1) gsp.exeの起動
Flash版の、最初のデモを起動してみたいと思う。
だがその前に、Gainerの入出力をFlashに伝える、ゲートウェイとなるプログラム「gsp」を動かす必要がある。
まず、先ほど解凍したFlash用のデモ「gainer_mini_lib_flash_v0
」内のフォルダ
「C:\Gainer\gainer_mini_lib_flash_v0\serial_proxy\win
」を開き、setting.txt
を確認する。
このファイルの内容は
- 2000
となっていると思う。
ここには、gspの待ち受けポート番号と、Gainer miniが繋がっているCOMポートの番号を書く必要がある。
Gainer miniが繋がっているCOMポートの番号は、デバイスマネージャから確認する。
例えば以下の図だと、COM8にGainer miniが繋がっている事が分かる。
C:\Gainer\gainer_mini_lib_flash_v0\serial_proxy\readme.txt
の例に従い、setting.txt
を編集する。
- 2000
- //./COM8
これでよし。出来たらsetting.txt
を保存して終了し、gsp.exe
を起動する。
起動画面は、こんな風になっている。
デモを試す(2) demo.swfを起動して、設定する
gsp.exe
が起動したら、次は実際のデモを試す。
「C:\Gainer\gainer_mini_lib_flash_v0\actionscript3\demo.swf
」を、ブラウザかデバッグ用のPlayerで起動する。
暫く放置しておくと、以下のメッセージが出るかと思うが、ひとまず「続行」を押して無視する。
- Error #2044: ハンドルされていない securityError : text=Error #2048: セキュリティサンドボックス侵害 : file:///C|/Gainer/gainer%5Fmini%5Flib%5Fflash%5Fv0/actionscript3/demo.swf は localhost:2000 からデータを読み込めません。
- at gainer::SerialPort()[/Users/maimuzo/Sources/examples_from_inet/gainer/gainer/libraries/flash/actionscript3/src/gainer/SerialPort.as:21]
- at gainer::Gainer()[/Users/maimuzo/Sources/examples_from_inet/gainer/gainer/libraries/flash/actionscript3/src/gainer/Gainer.as:64]
- at demo/init()[/Users/maimuzo/Sources/examples_from_inet/gainer/gainer/libraries/flash/actionscript3/src/demo.as:21]
- at demo/___demo_Application1_applicationComplete()[/Users/maimuzo/Sources/examples_from_inet/gainer/gainer/libraries/flash/actionscript3/src/demo.mxml:2]
- at flash.events::EventDispatcher/dispatchEventFunction()
- at flash.events::EventDispatcher/dispatchEvent()
- at mx.core::UIComponent/dispatchEvent()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9051]
- at mx.managers::SystemManager/preloader_preloaderDoneHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2251]
- at flash.events::EventDispatcher/dispatchEventFunction()
- at flash.events::EventDispatcher/dispatchEvent()
- at mx.preloaders::Preloader/displayClassCompleteHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\Preloader.as:434]
- at flash.events::EventDispatcher/dispatchEventFunction()
- at flash.events::EventDispatcher/dispatchEvent()
- at mx.preloaders::DownloadProgressBar/timerHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\DownloadProgressBar.as:1451]
- at mx.preloaders::DownloadProgressBar/initCompleteHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\DownloadProgressBar.as:1503]
- at flash.events::EventDispatcher/dispatchEventFunction()
- at flash.events::EventDispatcher/dispatchEvent()
- at mx.preloaders::Preloader/dispatchAppEndEvent()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\Preloader.as:291]
- at mx.preloaders::Preloader/appCreationCompleteHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\Preloader.as:442]
- at flash.events::EventDispatcher/dispatchEventFunction()
- at flash.events::EventDispatcher/dispatchEvent()
- at mx.core::UIComponent/dispatchEvent()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9051]
- at mx.core::UIComponent/set initialized()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:1167]
- at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:698]
- at Function/http://adobe.com/AS3/2006/builtin::apply()
- at mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460]
- at mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403]
(凄いデバッグモードぶりだな・・・。Eドライブで開発してたのか)
これは、ローカルのswfファイルがgsp.exe
からデータを取得しようとしたために発生したエラーで、
解決するにはFlash Playerの設定を変更する必要がある。
右クリックでメニューを開き「設定」をクリックすると、こんな画面が出る。
ここで、「高度な設定」を押すと、ブラウザが立ち上がり、
http://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager.html
にアクセスする。ここでFlash Playerの設定を行える。ページをスクロールし、
[グローバルセキュリティ設定] パネルにアクセスする。画面はこんな感じになる。
ここで信頼するファイルとフォルダを設定できるので、右の「編集」をクリックし、
「追加」を選択、「ファイルを参照」ボタンを押して、出てきたダイアログで
C:\Gainer\gainer_mini_lib_flash_v0\actionscript3\demo.swf
を指定してやり、「確認」ボタンを押す。
これで完了だ。このページには用が無いので、閉じる。
終了したら一旦demo.swf
は閉じて、再度立ち上げる。
今回は、先ほどと画面に幾つかの違いが出てくると思う。
これで、LED ONボタンを押してみよう。エントリ冒頭の写真のように、
LEDがビカーッと光りだしたら成功だ。
眩しくて鬱陶しいので、LED OFFボタンを押そう。
次回
とりあえず、Gainer miniが動き、デモがちゃんと操作できたので、
次は一番興味のある「マトリクスLED」に挑戦したいと思う。
ただし、その前にMake: Tokyo Meeting 02のレポートを書こう。
ちなみに、Flash Playerのセキュリティ設定だが、このブログの指示通り安直に設定を変えるのはよくない。
きちんと内容を読んで、理解した上で変更を行うべきであるということを、今宣言しておこう。