2009年11月8日日曜日

Arduino。

DSC_2885
”Arduino 2009”という、まぁ、おもちゃに手を出してみました。
写真中央の、USBケーブルが刺さった小さな基盤のやつです。

”工学な人”を対象にした商品に見えますが、本来は電子部品等を使った芸術作品の製作を助ける為に作られたマイコンボードで、陽だまり荘の新1年生なんかは飛びつきそうでしょうか。
一応、芸術の国イタリア製なのですよね、アリア社長!

哲翁が購入したのは、・・・無線LAN制御お船の製作・・・しかないですね。
musenLANctlV2


マイコンて、とっつきにくかったけど、これなら何とかなりそうな気がして。
当初は、制御装置としてお船にUMPC(Windows上のプログラムなら何とかなるぜ!)とUSBの制御ボード(VELLEMAN K8055ボード)を載せるとか言ってたんですが、お値段高いUMPCを海の上に放り出す勇気がねぇずら。

Arduinoは、小さくて3200円と安い上に、それ自体でマイコン”マイクロコンピュータ”ですので、プログラムを記憶して実行することができます。

入出力ピンもデジタル入出力とアナログ入出力を数点備えています。
※アナログ出力は、デジタル出力をPWM(パルス)で制御します。
(PWM:デジタル出力は本来OFF=0VかON=5Vしかないですが、超高速でON⇔OFFすることで、見かけ上の電圧を調整できる。)
なかなか無いんですよ、アナログ出力備えたボードって。

プログラムはWindows上の開発ツール、ArduinoIDEで作成します。
このソフトはArduino HPで配布してます。
image 
そして、ArduinoにはEthernet通信やBluetooth通信などの拡張ボードがいくつかあるのも魅力で、・・・とりあえずEthernetボードも買いました。

 




現在試している内容は、

動作①
EthernetボードでWebサーバのようなプログラムを偽装する。
PSPからブラウザでアクセス(GET・POST等リクエスト全て)を受けると、制御用のボタンが表示されるホームページを返信する。
・・・これはネットの検索情報を参考に簡単にできました。

動作②
PSPブラウザ上でFORMタグで作られたボタンを押すと、”POST”リクエストでArduinoにアクセスします。
Arduinoは、受信データから”POST”という文字を検出(とりあえず)すると、デジタル出力(LED)の1つのON・OFF(点灯・消灯)を切替えます。
PSPには同じホームページを返信しておきます。
・・・これもOK。

動作③・・・ここで今挫折中
ArduinoがPSPブラウザに返信するページデータ内にAjaxの非同期通信コードを埋め込む。
PSPブラウザでボタンを押した時に、現在のページを表示したまま、Ajaxの裏処理でArduinoに”POST”リクエストを送るようにする。
Arduinoが受信した時のLED動作は同じで、PSPには受信OKだけ返す。

・・・つまり、Arduinoではなく、PSPに歯がたたねぇ状態です。
PSPブラウザってAjaxに対応していないらしい・・・orz。
(なぜPSPを使うかというと、操縦するコントローラがPSPって面白そうなので)

 



多分AppleのipodTouchのsafariや、SharpのNetWalkerのFireFox、そしてCFWにチェンジしたPSPでOPERAとかでやれば一発なんでしょうけど。
PSPをCFWにするのは抵抗がある。本命機能のゲームに支障とかありえん。
ipodTouchは・・・実はUMPCの癖にプログラム作るのに料金とかありえん。
NetWalker・・・早く電子辞書オプションを発表してくれぃ!そしたら買う。

工人舎のPMシリーズとか、発表タイミング悪すぎですよ。
何するにしてもWindowsで小さいほうが利がありますもん。
NetWalkerが勝てるのは、ちらりと匂わせていた追加機能・・・電子辞書カードが使える(ただし哲翁が欲しいのは基本辞書+”中国語辞書”も付けて)しかないと思うのですが、どうでしょう?
ビジネスマンのカバンの中には、ノートパソコンと電子辞書があることは多いはずです。ノートパソコンは多分A4/B5・windowsじゃないと仕事にならんのでNetWalkerでは太刀打ちできませんが、電子辞書の置き換えとしては良い商品だと思うのです。(カバンの中にもう一品はありえない。)
そんな”電子辞書機能”がいつまでたっても正式リリースされないので、旧ザウルス使いは慎重なのです。
なんかSHARPの製品ページでは”購入者のガイドブックのプレゼント期間を延長”とか書かれていて”購入者少ないのかなぁ”みたいな雰囲気ですし、盛り上がらんまま消える匂いがぷんぷんです。
面白そうな製品なんですがね。

PMは微妙な商品ですよね。
かつてリブレットとかSONY C1とかU1とか小さい製品を体験してきた日本人は分かっているはずなのです・・・パソコンは画面とキーボードが大きいほうが使い物になると・・・。
それなのに、さらに使えないAtomなUMPCがブレイクするあたり、小さいもの好きな日本人の病気が・・・。
その点、画面が広いくせに薄さで勝負のVAIO Xにちょっと興味があります。
11型液晶で655gですってよ。



話がそれました・・・つまりPSPでAjaxが使えない。
そんなわけで、ふてくされて寝ていたのですが、どうやらPSPのインターネットラジオ機能を使うと、”ページを表示したままサーバとデータをやり取りするプログラムを走らせることができる”という情報を入手しました。

PSPのネットラジオを起動すると、PSPブラウザが特殊状態で起動するらしい。
”チューニングボタンを表示したまま、接続するサーバを選択する”とかいう機能も難なくできてるでしょ?
どうやらPSPのMSデュオ内の設定ファイルを1つ弄くって、インターネットラジオ起動時の接続先をArduinoに変えてやれば、非同期通信スクリプトの制限が外れて実行してくれるらしいのだが。

 



そんなわけで再起したら、今度はArduinoにIDE(統合開発環境)からプログラムをアップロードできなくなってさ・・・orz。
IDEでエラーコードが出るわけですよ。

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

まぁ、シリアル通信で同期しようとしてトラぶってるみたいだが・・・。
USB・COMポートの設定も合ってるし、対象製品の設定も合ってるし、Windows7 x64もきちんと認識している。(さっきまで出来てたし)

IDEに”ArduinoサイトのUPLOADのトラブルシュートを見てね”と英語で出てきたので、英語と格闘です。
・IDEの通信対象のCOMポート番号は合ってますか?
・IDEの通信設定の対象製品はArduino 2009 328になってますか?
・WindowsはUSBで製品を認識して、COMポートデバイスができてるか?
・LEDや拡張ボードなど、全てを外してやってみたら?(USBはつなげよ)
・基盤の裏とかに金属片とか接触してない?
・製品は正常かな?デジタル出力13番にLEDつないで点滅する?
・通信設定ファイルを書き換えて、ボーレートを9600にしてみたら?
・それでも駄目なら、ブートローダ書き換え云々・・・

どうしよう・・・ブートローダ書き換えツールなんて持ってないし。
そんな感じで、何度も上の確認事項を試していたのですが、ふと・・・。
”なんで前回プログラム書き込んだのに、初期状態の13番LED点滅?”と。
そんなわけで、なんとなく・・・USBを接続しなおして、初期プログラムでLED13が点滅を開始する前に、IDEのUPLOADボタンを押してみた。
正常に書き込めた♪
アハ体験♪
・・・とため息。

そんな体験を日記に。

合掌。

0 件のコメント: