暑くてたまらんです。
Ethernetに接続できるように頑張っていたら、mbedがHTTPサーバになるという噂を聞きました。(mbedの紹介: http://maruuusa.blogspot.jp/2012/06/mbed.html)
52mm*26mmしかない恐ろしく小さいサーバです。こわい。
さらに、クエリ(?)のようなものを組んでmbedをHTTP越しに遠隔制御することもできるようです。こわい。
というわけで早速サーバとして立ち上げてみました。 ルータでローカルネットワークを組み、PCとmbetをつなぎます。PCでmbed内に保存したHTMLファイルを閲覧できれば成功、とします。
mbed開発はWeb上に大量の情報がありますが、 ライブラリを用いるときなぜかリンクがうまく行かなかったり、なぜかメソッド引数が違う形になっていたりすることが多いので
ImportのProgramsから必要ライブラリがインポートされていそうなプロジェクトをインポートしたほうがスムーズに進みます。
今回は「http://mbed.org/users/donatien/programs/HTTPServerHelloWorld/60fqd」を用いました。
Import画面のImportAsでProgramにチェックを入れるのを忘れないでください。 これをしないと大変なことになります。
このプロジェクトでサーバの立ち上げに必要なライブラリのインポートどころか、プログラムのベースになる部分まで全て書かれています。便利です。
あとはこれを必要な形に書き換えていくだけです。
ローカルネットワークへの接続やリスニングの開始などは既にやってくれているので、
今回プログラム中で必要な設定は以下の項目で済みます。
・HTMLファイルを保存するためのローカルファイルシステムの設定
・設定したローカルファイルシステムへハンドルの割り当て
実際に設定したソースコードがこれです。
デバッグプリントをLCDに表示させてるあたりが少し異なりますが無視でOKです。
HTTPClientHelloWorld.cpp
#include "mbed.h" #include "EthernetNetIf.h" #include "HTTPServer.h" #include "TextLCD.h" //LCD用 EthernetNetIf eth; HTTPServer svr; DigitalOut led1(LED1); TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); //LCDの設定 LocalFileSystem fs("webfs"); //ファイルシステムの設定 int main() { lcd.cls(); lcd.printf("Setting up...\n"); EthernetErr ethErr = eth.setup(); if(ethErr) { lcd.cls(); lcd.printf("Error %d in setup.\n", ethErr); return -1; } lcd.cls(); lcd.printf("Setup OK\n"); FSHandler::mount("/webfs", "/"); //ここで /webfs をWebパスのルートに割り当てる // svr.addHandler("/hello"); //これはとりあえず不要 svr.addHandler ("/"); //デフォルトのハンドラ svr.bind(80); //80ポートでサーバスタート lcd.cls(); lcd.printf("Listening...\n"); Timer tm; tm.start(); //Listen indefinitely while(true) { Net::poll(); if(tm.read()>.5) { led1=!led1; //Show that we are alive tm.start(); } } return 0; }
これでサーバとして動くことができます。
たったこれだけです。楽勝です。
ところで、mbedにはどうやってLANケーブルをつなぐのでしょうか。
これもまた簡単なんですね。
33~36ピンにRDの±、TDの±があります。LANケーブル用ソケット(パルストランス付)を買ってきて、それぞれをそれぞれのピンにつなぐだけです(雑)。
仕様書を見れば絶対書いてあるのですぐわかると思います。
僕はソケットがブレッドボードに合わなかったので少し手を加えて使いました。
さて
次に、表示するためのHTMLファイルを作ります。面倒なので適当にちょちょーっと書いてしまいます。
index.html
<html> <head> <title>TEST!</title> </head> <body> <h5>Hello, World!</h5> </body> </html>
ひどくショボいページなのは気にしない。
最後に、ルータの設定。内のデバイスがmbedにアクセスできるように80ポートを開放します。これはルータごとに設定方法が異なるので各自頑張ってください。
これでHTTPサーバが完成しました!!
mbedのIPにブラウザからHTTPでアクセスしてみましょー!
http://mbedのIPアドレス/
こんな感じで地味なページが出たら成功です!
なんの面白みもないです!
次回はHTTPでmbedを制御する方法を紹介します。
RPCと言うんでしょうか。名前はよく知らないです。
0 件のコメント:
コメントを投稿