今週末はいよいよFirefox OS WoTハッカソンです。
mbedはこれまでいろいろ使っていて慣れているのですが、mbedからスマホへのリアルタイム通信は経験がありません。少しは勉強しておかなければとWebsocketについて試してみました。
Websocketのサーバはmbedでも提供されているのですが、今回はNode.jsを自分のVPSにインストールしてWebSocketサーバーをたちあげました。
mbedのデベロッパーサイトにWebsocketのサンプルプログラムがあるので楽勝と考えていたのですが、私の環境だと、このサンプルプログラムではNode.jsと通信できたり、できなかったりで非常に不安定でした。コンパイル後のメモリをみてみるとRAMが120%ぐらいになっていて、mbed-rtosを使うとメモリが厳しいのかもしれません。いろいろ探していたらSuga koubouさんのテストプログラムだとNode.jsのサーバに安定して接続できることが確認できました。
これで以下のような環境ができました。
![websocket_mbed_fx0.png](https://kanpapa.com/wp-content/uploads/today/images/websocket_mbed_fx0.png)
mbedアプリケーションボードに実装されている加速度センサーと温度センサーの情報を読み出し、WebSocketでNode.jsのサーバーからブロードキャストして、Fx0に通知し、Fx0のHTML5アプリケーションで表示するものを作りました。
![](https://kanpapa.com/today/wp-content/uploads/sites/2/1702/46/mbed_application_board.jpg)
WebSocketとかCANVASとかは初めてでしたが、あちこちのプログラム例を参考にしてなんとか形にできました。
![](https://kanpapa.com/today/wp-content/uploads/sites/2/1702/46/websocket_fx0_app-576x1024.png)
この仕組みをハッカソンで使うかどうかはわかりませんが、良い経験ができたと思います。
コメント