
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
WebSocketServer.h@0:f7596ed7ab5c, 2015-03-13 (annotated)
- Committer:
- flatbird
- Date:
- Fri Mar 13 00:22:57 2015 +0000
- Revision:
- 0:f7596ed7ab5c
- Child:
- 1:84af7a219830
initial.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
flatbird | 0:f7596ed7ab5c | 1 | #ifndef _WEB_SOCKET_SERVER_H_ |
flatbird | 0:f7596ed7ab5c | 2 | #define _WEB_SOCKET_SERVER_H_ |
flatbird | 0:f7596ed7ab5c | 3 | |
flatbird | 0:f7596ed7ab5c | 4 | #include "TCPSocketServer.h" |
flatbird | 0:f7596ed7ab5c | 5 | |
flatbird | 0:f7596ed7ab5c | 6 | class WebSocketHandler |
flatbird | 0:f7596ed7ab5c | 7 | { |
flatbird | 0:f7596ed7ab5c | 8 | public: |
flatbird | 0:f7596ed7ab5c | 9 | virtual void onOpen() = 0; |
flatbird | 0:f7596ed7ab5c | 10 | virtual void onClose() = 0; |
flatbird | 0:f7596ed7ab5c | 11 | virtual void onMessage() = 0; |
flatbird | 0:f7596ed7ab5c | 12 | virtual void onError() = 0; |
flatbird | 0:f7596ed7ab5c | 13 | }; |
flatbird | 0:f7596ed7ab5c | 14 | |
flatbird | 0:f7596ed7ab5c | 15 | class WebSocketServer |
flatbird | 0:f7596ed7ab5c | 16 | { |
flatbird | 0:f7596ed7ab5c | 17 | public: |
flatbird | 0:f7596ed7ab5c | 18 | WebSocketServer(); |
flatbird | 0:f7596ed7ab5c | 19 | virtual ~WebSocketServer(); |
flatbird | 0:f7596ed7ab5c | 20 | |
flatbird | 0:f7596ed7ab5c | 21 | bool init(int port); |
flatbird | 0:f7596ed7ab5c | 22 | void run(); |
flatbird | 0:f7596ed7ab5c | 23 | bool setHandler(const char* path, WebSocketHandler* handler); |
flatbird | 0:f7596ed7ab5c | 24 | |
flatbird | 0:f7596ed7ab5c | 25 | private: |
flatbird | 0:f7596ed7ab5c | 26 | TCPSocketServer mTcpSocketServer; |
flatbird | 0:f7596ed7ab5c | 27 | }; |
flatbird | 0:f7596ed7ab5c | 28 | |
flatbird | 0:f7596ed7ab5c | 29 | #endif |