
Simple WebSocket server to control a tank.
Dependencies: SNICInterface_mod WebSocketServer mbed-rtos mbed PowerControl C12832
au Firefox OS WoTハッカソン on ホワイトデーで使用した、タンクを動かすプログラムです。 ゲームパッドでタンクを操縦します。
ゲームパッドは PC に接続し、ブラウザ上の Web アプリから Gamepad API で入力を取得します。 取得した入力データは WebSocket で mbed 上の WebSocket サーバに送信します。
WebSocket サーバのコードはライブラリ化したので、他のプログラムでもインポートして使えます。
使用した機材
- LPC1768
- Murata TypeYD
- LPC1768 用アプリケーションボード
- TAMIYA トラック&ホイールセット
- TAMIYA ダブルキヤボックス(左右独立4速タイプ)
- TAMIYA ユニバーサルプレート
- TOSHIBA TA7291P x 2
- その他、モバイルバッテリー、電池ボックス等
左右のモータードライバにそれぞれ LPC1768 の p12, p13 と p14, p15 のピンを割り当てていますが、必要に応じてコードを変更してください。
コントローラー側(Webアプリ)
https://github.com/chikoski/wotxwot-control
Firefox ブラウザで動作確認しています(他のブラウザでは動かないかも)。 ゲームパッドの左右のスティックの前後の操作が左右それぞれのモータの前転・後転に対応しています。
動いているところの動画
https://www.facebook.com/video.php?v=456620974491805
ハッカソンでは ARM 賞をいただきました!
(参考) au Firefox OS WoTハッカソン on ホワイトデー
http://au-fx.kddi.com/event/20150314/wot_hackathon0314.html
Diff: WebSocketServer.h
- Revision:
- 7:6cfe0638b957
- Parent:
- 5:ce3f1dd90068
- Child:
- 8:6635ca3b5a5c
--- a/WebSocketServer.h Fri Mar 13 11:55:55 2015 +0000 +++ b/WebSocketServer.h Sat Mar 14 00:14:40 2015 +0900 @@ -8,7 +8,8 @@ public: virtual void onOpen() = 0; virtual void onClose() = 0; - virtual void onMessage() = 0; + virtual void onMessage(char* text) = 0; + virtual void onMessage(char* data, size_t size) = 0; virtual void onError() = 0; }; @@ -23,11 +24,14 @@ bool setHandler(const char* path, WebSocketHandler* handler); private: - bool handleHTTP(char* buf, int size, TCPSocketConnection& connection); + bool handleHTTP(char* buf, int size); bool handleWebSocket(char* buf, int size); - bool sendUpgradeResponse(char* key, TCPSocketConnection& connection); + bool sendUpgradeResponse(char* key); TCPSocketServer mTCPSocketServer; + TCPSocketConnection mConnection; + WebSocketHandler* mHandler; // support only one handler now + bool mPrevFin; }; #endif \ No newline at end of file