Wi-FiとWebSocketでスマートフォンから入出力
.
Wi-FiとWebSocketでスマートフォンから入出力
mbedとWi-Fiモジュールで、HTTPサーバー&WebSocketサーバー機能を動作させ、スマートフォンのブラウザからmbedのI/Oをコントロールする。
HTML5のため、スマートフォンアプリの開発は不要。
Wi-Fiモジュールがアクセスポイントとなるため、無線ルーター不要でスマートフォンから直接接続できる。
iPhone, iPad, iPod, Android, PCのブラウザでもOK。
用意するもの
- mbed NXP LPC1768
- GainSpan Wi-Fi モジュール
- あらかじめ Limited AP 対応のファームウェアに書き換えておく
- ATB115200 コマンドで115200bpsに設定しておく
- Gata XBee 基板 (あればmbedとWi-Fiモジュールの接続に便利)
ハードウェア
schematic
---------+ +----- |VOUT---------------VCC| |GND----------------GND| |p14----------UART0_TXD| |p13----------UART0_RXD| |P0_22--------UART0_CTS| GS1011MIC |p12----------UART0_RTS| |p20---[1k]-------RESET| mbed | +----- | LPC1768 | VOUT | | |p15---------------[VR] | | | | |p30---[330]---|>|---+ | | ---------+ GND
※P0_22 (RTS) は p11 (GPIO)でも代用できるかもしれない。
P0_22 を使うときはこんなふうに引っ張り出す。
p30へLED、p15へボリュームを付けた。
プログラム
Import programGSwifi_ap_ws_rpc
See: http://mbed.org/users/okini3939/notebook/wifi_rpc/
mbed側のプログラムは、RPCでハードウェアをコントロールできるようにしている。
GSwifiInterfaceライブラリの「GSwifi_conf.h」を変更します。
GSwifi_conf.h
//#define CFG_ENABLE_RTOS #define CFG_ENABLE_HTTPD #define CFG_ENABLE_WEBSOCKET
Wi-Fiモジュールとの接続ピン、ボーレートの設定は冒頭のこの行を変更する。
main.cpp
GSwifi gs(p13, p14, p12, p11, p20, NC, 115200); // mbed LPC1768 and GainSpan(115200bps)
Limited AP を使わない場合
Wi-Fiモジュールを Limited AP 対応のファームウェアに更新していない場合は、 普通にアクセスポイントへ接続するようにすれば、このプログラムを試すことができます。
// gs.setAddress("192.168.1.1", "255.255.255.0", "192.168.1.1", "192.168.1.1", "www.mbed"); gs.setSsid(SEC, SSID, PASS); // if (gs.limitedap()) { if (gs.join()) {
この場合、下記にあるブラウザでアクセスする場合の www.mbed は使えないため、 Wi-FiモジュールがDHCPサーバから割り当てを受けたIPアドレスでアクセスしてください。
HTML
次のzipファイルを展開して出てくるHTMLファイルを mbed のUSBストレージ(LocalFileSystem)へ放り込んでおく。
- mbed_rpc_html.zip (test.htm , program.js)
WebSocketでWi-Fiモジュールへ接続し、RPCコマンドを送信している。
使い方
ハードウェアを配線する。
mbedへプログラムを書き込むみ、リセットしてプログラムを起動する。
スマートフォンからアクセスポイント「 MBED 」へWi-Fi接続する。(パスワードは「1234567890」)
.
Safari・Chrome等のブラウザ(AndroidのブラウザはWebSocketに対応していないので不可)で「http://www.mbed/test.htm 」へアクセスする。 (www.mbed は架空のアドレスだが、Wi-Fiモジュール内のDNSサーバにより自動的に解決される)
DigitalOut
初期化ボタンで p30 がデジタル出力として設定され、その後 High / Low ボタンで出力が変化する。
LED等を接続しておけば光るのを確認できる。
AnalogIn
初期化ボタンで p15 がアナログ入力として設定され、その後 入力 ボタンでアナログ値が表示される。
ボリュームやセンサー等を接続しておけば値の変化が確認できる。
Lチカ
Lチカボタンを押すとLED4がチカチカする。
JavaScriptのタイマー機能でポートをON/OFFするRPCコマンドを送信している。
4 comments on Wi-FiとWebSocketでスマートフォンから入出力:
Please log in to post comments.
こんにちは、はじめまして。 最近mbedを使い始めて色々参考にさせていただいています。 ありがとうございます。
勝手なお願いで恐縮ですが、HTMLファイル(gs_rpc_html.zip)をダウンロードできないようですので、アップしていただけないでしょうか。