2008年7月4日金曜日

pong server

utano

第5章では1つのサーバーを介して
ピンポンゲームがプレイできるものを作ります。

今回の役割分担:

tmg:client1(3軸センサでシーソーインタラクションでピンポンする人)
stk:client2(感圧センサ×2で足踏みインタラクションでピンポンする人)
utn:server(サーバーのプログラムソースコード)

pong serverソースコード(Processing)

①サーバ用のPCを1台用意して、
 そのPCで上のソースコードをRunする。下のような画面が出ます。



②ピンポンしたい人(Client)は
 telnetでポート番号8080でサーバのIPアドレスへ接続。

☆サーバ(PC)のIPアドレスを調べるには
[ネットワーク接続]などからネットの接続状態を選べば出てくる。
 私は[ワイヤレス ネットワーク接続]を選んで[サポート]タブを出しました。
 
 
③するとこんな風になります。
 コマンドプロンプト側で"hi"と言ってくれます。
 Processing側では新しいClientが来た、と言い
 ピンポンフィールドにラケットが現れます。
 その入ってきたClientのIPもラケットの上に書いてあります。


④ちなみにコマンドプロンプト側でrを打つとラケットが右に、
 lを打つとラケットが左に移動します。xでサーバとの接続を中断します。

なので、キーボードだけで十分ピンポンが戦えます。
センサを使ってインタラクションでピンポンをするために
XPortでArduinoの値を送るところは次回。

2008年6月29日日曜日

yahooweather teruteru②

てるてるマイコンコードを色々いじってみる。

てるてるコードその1

てるてるコードその2

voltmeterが動かなくなったのですが

文字列の後にこの数値ひろえー命令をあれは出していて
サイトが時々更新されて
その文字列が無くなってしまう時があるようです。

文字列が復活したのでひとまず動きそうだ!
と思ってもう一度動作確認中なのですが
…またウェブから値がやってこない病が…

2008年6月28日土曜日

yahooweather teruteru

utano

てるてるリベンジ中。

yahoo news(英語)のお天気サイトから
お天気情報をひっぱって、
更に曇りなら1、晴れなら2、雨なら3にするというPHPを書きました。

これのソースコードを見ると、
本のp.131みたく <weather:1>とか出ます。

で、マイコン側のプログラムはほとんどそのままに、
このPHPを読んで<>内の数字を記憶して
その数字をintにして、
if文で1のときは曇りなので曇りLED光らせてねっていう
void teruteru()をつくりました。コンパイルは成功。
yahooweatherてるてるマイコンコード

でも光りませんでした。

たまにvoltmeterでもそうなのですが
ウェブを要求した後その内容を読み込んでくれない時が発生します。

うーむぅ。

しょうさまたすけて。

2008年6月27日金曜日

voltmeter完成

voltmeterが動きました!
このプロジェクトはアメリカの大気の汚染予報を教えてくれる、
AIRNowというサイトからNYの大気汚染度の現在情報を拾って
電流計メーター(アナログ)に出力させるというものです。
よく写真を見ると針が右にすこし振れています。



結局あの後いじったのは:
☆ルーターのIPを設定
(chapter3のp.84参照、ルータのIPアドレス調べ方)
☆ウェブから情報をはぎとるPHPのパーミッション変更
(Octalを707に、きょんちゃんアドバイス)

どれが果たして功を奏したのかw

全体像はこんな感じ:


あ、FT232Rのシリアル変換はさしっぱだっただけで無関係です。
LEDがナウシカのオームの目みたい…


2番目が光ってるのでHTTPrequest()してます。
情報を読み取るウェブ(PHP)を要求しているのです。
Arduinoの画面ではこんな感じ:

マイコンとXPortとウェブの三角関係②

本に沿って回路つくってコードを書くと、
ご丁寧に今どういう通信状態なのかをLEDで判断する事が出来ます。

でも大体サーバに接続しようとしてる所で
ピコピコ止まりだったので、
もう少し通信状態を可視化しようと思いました。

まずAcknowrichとshokai様から頂いたSocketClientで実験

XPort接続中。IPアドレスは192.168.0.150 ポート番号は50001に設定済。



ではSocketClientからXPortさんにアクセスしてみましょう



するとシリアル側(Acknowrich)ではI192.168.0.110と出る。



IはIncomeのIなので、情報が伝わった事はわかるけど
なんでIPアドレスが変わるんじゃ?
本でXPort設定のところでルーターのIPを指定する所あるけど
そこと関係があるんでしょうか??

まぁ一旦おいといて
シリアル側から、欲しいウェブがあるサーバに行ってねってお願いしてみる



…ただのテキスト扱いっぽいんですけど
GETとかHOSTも入れてみたけど同じ。

SocketClientを終了すると



ちゃんとDisconnectのDが現れる。

つながっているようでつながっていないような…
何が問題なんじゃー。

マイコンとXPortとウェブの三角関係①

utano

夜12時にDNPを訪れる!

てるてる坊主を作るにしても
とりあえず本にあるArduinoに書き込む、
ウェブを取り込むコードを理解しなければだめでしょう

ということで回路や本やら5時間くらいにらめっこして
ようやく本が書いてるコードが意図する所がつかめました。

マイコンで取ってきて欲しいウェブがあるサーバを呼ぶ
私の場合SFCなのでコマンドプロンプトでping web.sfc.keio.ac.jpを唱えて
SFCサーバのIPアドレスをゲットする。
そしてXPortに通じる呪文にする C133.27.4.40

接続が行われたらすかさずウェブを呼び出す
GET /~t05541ss/ほにゃほにゃ.php HTTP/1.0\n
HOST: web.sfc.keio.ac.jp

で、そのウェブのテキストをがーって読んで
その中から数字をゲットしてくる
その数字を更に数値にする(テキストのままだから)
あらかじめマイコンが読みやすい様に
そのウェブはPHPですっきりまとめてあります
HTMLタグ全部どけて、この文章の後に来る数字を表示してねって感じで。

で、その数値によってArduinoのoutputである電流計の触れ幅が変わる

っちゅうわけです。構造は分かるけど
XPort経由でウェブを問い合わせるのがなんかだめ。

ちゃんと動いているのか動作チェックする。

マイコンとXPortとウェブの三角関係②につづく。

TMGlogue


tmgです。肌荒れがひどいDEATH。最早荒野。

シーソー作ってます。廃材とガムテの芯。



回路さすがにちょっと難しくなってきたなぁ…!
本には電源arduinoの5Vから取れと書いてありますが、5Vだと電源足りひんよーと云われてしまうので、9Vからまわしています。とりあえず走ってるからいいか。うん。

ステッパー党の方は下のコードのreadSensorのあたりをいじくるようですね。
これからP163の下のほうの、Server領域に入ってみまーす。