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

Committer:
flatbird
Date:
Sat Mar 14 00:14:40 2015 +0900
Revision:
7:6cfe0638b957
Parent:
5:ce3f1dd90068
Child:
8:6635ca3b5a5c
add websocket data frame handling.

Who changed what in which revision?

UserRevisionLine numberNew 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 7:6cfe0638b957 11 virtual void onMessage(char* text) = 0;
flatbird 7:6cfe0638b957 12 virtual void onMessage(char* data, size_t size) = 0;
flatbird 0:f7596ed7ab5c 13 virtual void onError() = 0;
flatbird 0:f7596ed7ab5c 14 };
flatbird 0:f7596ed7ab5c 15
flatbird 0:f7596ed7ab5c 16 class WebSocketServer
flatbird 0:f7596ed7ab5c 17 {
flatbird 0:f7596ed7ab5c 18 public:
flatbird 0:f7596ed7ab5c 19 WebSocketServer();
flatbird 0:f7596ed7ab5c 20 virtual ~WebSocketServer();
flatbird 0:f7596ed7ab5c 21
flatbird 0:f7596ed7ab5c 22 bool init(int port);
flatbird 0:f7596ed7ab5c 23 void run();
flatbird 0:f7596ed7ab5c 24 bool setHandler(const char* path, WebSocketHandler* handler);
flatbird 0:f7596ed7ab5c 25
flatbird 0:f7596ed7ab5c 26 private:
flatbird 7:6cfe0638b957 27 bool handleHTTP(char* buf, int size);
flatbird 1:84af7a219830 28 bool handleWebSocket(char* buf, int size);
flatbird 7:6cfe0638b957 29 bool sendUpgradeResponse(char* key);
flatbird 5:ce3f1dd90068 30
flatbird 1:84af7a219830 31 TCPSocketServer mTCPSocketServer;
flatbird 7:6cfe0638b957 32 TCPSocketConnection mConnection;
flatbird 7:6cfe0638b957 33 WebSocketHandler* mHandler; // support only one handler now
flatbird 7:6cfe0638b957 34 bool mPrevFin;
flatbird 0:f7596ed7ab5c 35 };
flatbird 0:f7596ed7ab5c 36
flatbird 0:f7596ed7ab5c 37 #endif