TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
-
Upload
flashair -
Category
Technology
-
view
1.993 -
download
3
Transcript of TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
2015-04-11
TOSHIBA x GUGEN FlashAir Hackathon
FlashAirでなに作る?
土居意弘@株式会社フィックスターズ
下記の画像素材を使わせていただきました!感謝!!・BUFFALO製品写真ダウンロードサービス・日経パソコンオンライン「テンプレート」コーナー・Wikipedia
Phil Hollenback - http://www.flickr.com/photos/phrenologist/164593940/
・ICON HOIHOI・http://www.toshiba.co.jp/p-media/flashair/
自己紹介
土居 意弘ど い むね ひろ
得意技:
開発者サイト FlashAir Developersの運営
FlashAirアプリの開発
FlashAirの変な使い方の開拓
映画アルマゲドンのテーマを熱唱すること
株式会社フィックスターズストレージ事業部
ディレクター
TOSHIBA x GUGEN FlashAir Hackathon
2
今日の話
TOSHIBA x GUGEN FlashAir Hackathon
3
FlashAirとは 実は超ミニマイコン
開発者情報公開中 ひろがるコミュニティ
Peripheral
HTTPClient
SD / iSDIO
SPI Wireless LAN
HTTP
HTTPServer
SDHost
Wireless LAN
HTTP機器による
PIO
FlashAirとは
TOSHIBA x GUGEN FlashAir Hackathon
4
メモリ 無線LAN ウェブサーバ
もっとも基本的な使い方は・・
TOSHIBA x GUGEN FlashAir Hackathon
5
写真を撮ったら、シェア
カメラに入れたFlashAirから、スマホにデータを送る
仕組みはこう
TOSHIBA x GUGEN FlashAir Hackathon
6
1. ホスト機器がファイルを書込み
2. クライアント機器からデータを読込み
SD I/F HTTP
over WLAN
他にもこんな風に使えます
TOSHIBA x GUGEN FlashAir Hackathon
7
音楽をシェア
資料をシェア
動画をシェア
TOSHIBA x GUGEN FlashAir Hackathon
8
しかし、これはFlashAirができることのほんの一部です
実は超ミニマイコン!!
TOSHIBA x GUGEN FlashAir Hackathon
9
メモリ 無線LAN ウェブサーバ
+
GPIO
Luaインタプリタ
こんなことができます
無線– APモードで起動– STAモードで起動– AP+STA同時起動– 無線切断– SSIDのスキャン
HTTP– HTTPリクエストの発行
スクリプト– Luaスクリプト実行
PIO– SD端子のPIO制御
Webサーバー– ファイルのダウンロード– ファイルのアップロード– 標準HTMLのカスタマイズ– CGIによる情報取得
SD– 内蔵フラッシュメモリのファイル読み書き
その他– 作業用SRAMの読み書き
TOSHIBA x GUGEN FlashAir Hackathon
10
アプリ作成方法は3種類
制御する機器によってできることが違います
(1) HTTPによる制御
(2) iSDIOによる制御
(3) Luaスクリプトによる制御
同時に使うことも可能
11
TOSHIBA x GUGEN FlashAir Hackathon
Peripheral
HTTPClient
SD / iSDIO
SPI Wireless LAN
HTTP
HTTPServer
SDHost
Wireless LAN
HTTP機器による
PIO
プロトコル
接続
(1) HTTPによる制御
TOSHIBA x GUGEN FlashAir Hackathon
12
Peripheral
HTTPClient
SD / iSDIO
SPI Wireless LAN
HTTP
HTTPServer
SDHost
Wireless LAN
HTTP機器による
PIO
プロトコル 接続
スマホアプリなど
HTTPによる制御でできること
無線– APモードで起動– STAモードで起動– AP+STA同時起動– 無線切断– SSIDのスキャン
HTTP– HTTPリクエストの発行
スクリプト– Luaスクリプト実行
PIO– SD端子のPIO制御
Webサーバー– ファイルのダウンロード– ファイルのアップロード– 標準HTMLのカスタマイズ– CGIによる情報取得
SD– 内蔵フラッシュメモリのファイル読み書き
その他– 作業用SRAMの読み書き
TOSHIBA x GUGEN FlashAir Hackathon
13
コンテンツ閲覧アプリ
TOSHIBA x GUGEN FlashAir Hackathon
14
HTTP通信でデータ取得リスト情報もCGIで
Webサイトを作ってしまう
TOSHIBA x GUGEN FlashAir Hackathon
15
写真を配信(オレオレFlickr)
動画ストリーミング(オレオレYouTube)
HTTP Live Streaming形式でFlashAirに置く
Webサーバー設置の最小構成
TOSHIBA x GUGEN FlashAir Hackathon
16
AC adapter/
battery
USB card adapter
センサーデータの記録と監視に
TOSHIBA x GUGEN FlashAir Hackathon
17
センサーマイコン FlashAir スマホ
照度センサー (CdS)
センサーデータの記録と監視に
TOSHIBA x GUGEN FlashAir Hackathon
18
マイコン側// 値を読む
val = analogRead(0);
// ファイルに書き込む
myFile = SD.open("test.txt",FILE_WRITE);
if (myFile) {myFile.println(val);myFile.close();
}
// ファイルを読み出す
$.ajax({type: 'GET',url: ‘test.txt’,datatype: 'text',success: function(data,
dataType) {// グラフ書く
drawCharts(data);// 2秒ごとに繰り返す
setTimer(poll, 2000);});
スマホ側
Arduino + 照度センサセンサが計測した照度データ(テキスト)をFlashAirに格納。JavaScriptを使って、タブレット側のブラウザでグラフ化して表示
さらに応用例
iRobot CreateiRobot Create(教育用のルンバ型ロボ)の動作情報をFlashAirに格納。タブレットで表示し、デバッグに活用。※京都大学 高瀬准教授・細合様ご協力
TOSHIBA x GUGEN FlashAir Hackathon
19
CGIで端子のH/L出力を制御
Pin SD
1 CD/DAT3
2 CMD
3 VSS1
4 VDD
5 CLK
6 VSS2
7 DAT0
8 DAT1
9 DAT2
ビット割当CMD : 0x01D0 : 0x02D1 : 0x04D2 : 0x08D3 : 0x10
SDインターフェイス端子を、汎用I/O信号端子として利用できます!(FW2.00.03~)
SDカード端子
マニア垂涎!!TOSHIBA x GUGEN FlashAir Hackathon
20
応用例1:遠隔 Lチカ
TOSHIBA x GUGEN FlashAir Hackathon
21
電源LED FlashAir
※ Lチカ=LEDチカチカの略。電子工作のHello World
点灯、消灯の方法
TOSHIBA x GUGEN FlashAir Hackathon
22
http://flashair/command.cgi?op=190&CTRL=0x02&DATA=0x02 H 点灯
http://flashair/command.cgi?op=190&CTRL=0x02&DATA=0x00 L 消灯
ブラウザで次のURLにアクセス
応用例2:遠隔クレーンゲーム
TOSHIBA x GUGEN FlashAir Hackathon
23
しくみ
TOSHIBA x GUGEN FlashAir Hackathon
24
某アンパン顔のキャラクタの子供用クレーンゲームを改造
専用アプリで無線LAN経由でCGI発行
FlashAirが各ボタンの信号をON/OFFする
(2) iSDIOによる制御
TOSHIBA x GUGEN FlashAir Hackathon
25
Peripheral
HTTPClient
SD / iSDIO
SPI Wireless LAN
HTTP
HTTPServer
SDHost
Wireless LAN
HTTP機器による
PIO
プロトコル 接続
Arduinoなど
iSDIOによる制御でできること
無線– APモードで起動– STAモードで起動– AP+STA同時起動– 無線切断– SSIDのスキャン
HTTP– HTTPリクエストの発行
スクリプト– Luaスクリプト実行
PIO– SD端子のPIO制御
Webサーバー– ファイルのダウンロード– ファイルのアップロード– 標準HTMLのカスタマイズ– CGIによる情報取得
SD– 内蔵フラッシュメモリのファイル読み書き
その他– 作業用SRAMの読み書き
TOSHIBA x GUGEN FlashAir Hackathon
26
ArduinoからSSIDスキャン
TOSHIBA x GUGEN FlashAir Hackathon
27
void iSDIO_scan(uint32_t sequenceId) {memset(buffer, 0, 512);uint8_t* p = buffer;p = put_command_header(p, 1, 0);p = put_command_info_header(p, 0x01, sequenceId, 0);put_command_header(buffer, 1, (p - buffer));printHex(buffer, (p - buffer));card.writeExtDataPort(1, 1, 0x000, buffer);
}
void iSDIO_showScanResult() {card.readExtDataPort(1, 1, 0x200, buffer);uint8_t* p = buffer + 24 + 4;uint8_t num = get_u8(p);Serial.print(F(“# of SSIDs: "));Serial.println(num);p += 3;for (uint8_t i = 0; i < num; i++){printString(p, 32);p += 44;
}}
※擬似コードです
スキャン命令の発行
スキャン結果の取得
応用例:電車模型
TOSHIBA x GUGEN FlashAir Hackathon
28
• 操作に加えて、在線情報フィードバック• 共有メモリを使って大容量の制御情報のやりとりを実現
(3) Luaスクリプトによる制御
TOSHIBA x GUGEN FlashAir Hackathon
29
Peripheral
HTTPClient
SD / iSDIO
SPI Wireless LAN
HTTP
HTTPServer
SDHost
Wireless LAN
HTTP機器による
PIO
プロトコル 接続
Luaスクリプト
Luaスクリプトによる制御でできること
無線– APモードで起動– STAモードで起動– AP+STA同時起動– 無線切断– SSIDのスキャン
HTTP– HTTPリクエストの発行
スクリプト– Luaスクリプト実行
PIO– SD端子のPIO制御
Webサーバー– ファイルのダウンロード– ファイルのアップロード– 標準HTMLのカスタマイズ– CGIによる情報取得
SD– 内蔵フラッシュメモリのファイル読み書き
その他– 作業用SRAMの読み書き
TOSHIBA x GUGEN FlashAir Hackathon
30
Luaとは??
TOSHIBA x GUGEN FlashAir Hackathon
31
Luaは、パワフルで、高速で、軽量で、埋め込み可能な、スクリプト言語です。
Luaは、シンプルな手続き型構文をと強力なデータ記述構造を、連想配列と拡張可能なセマンティクスを用いて組み合わせています。 Luaは動的型付けであり、レジスタベースの仮想マシン向けのバイトコードを解釈することによって実行されます。また、インクリメンタルガベッジコレクションによる自動メモリ管理を備えており、設定、スクリプティング、ラピッドプロトタイピングに最適です。
- lua.org (翻訳:土居)
(1) 少ないコンピュータ資源でも動く(2) Cプログラムと容易に連携できる
ゲーム、AI、ルータ、などに採用されている
FlashAirのLua
使えるライブラリ
– Lua基本ライブラリ
– LuaFileSystem
– CJSON
– FlashAir独自機能
使えないライブラリ
–コルーチン操作
– OS機能
–数学機能
–デバッグライブラリ
32
TOSHIBA x GUGEN FlashAir Hackathon
LuaからHTTPリクエスト
TOSHIBA x GUGEN FlashAir Hackathon
33
result = fa.HTTPGetFile("https://flashair-developers.com/images/assets/flashairLogo_officeial_small.png", "logo.png")
if result ~= nil thenprint("Success! File downloaded.\n")--process the file
elseprint("Failure! File failed to download...\n")
end
リクエスト実行
結果はファイルに保存されます
応用例:天気を教えてくれるロボット
TOSHIBA x GUGEN FlashAir Hackathon
34
• Luaで、天気予報を取得し、音声データを切り替え
https://www.youtube.com/watch?v=vnTzDswDw5Q
iSDIOとLuaスクリプトの比較
iSDIOによる制御
長所– FlashAirの全ての機能を利用可能
– 外部マイコンとの組み合わせで、多様なシステム設計ができる
– SDホスト機器からのファイル読み書きと整合性がとりやすい
短所– 制御用マイコンが別に必要
– コーディング量が多い
Luaスクリプトによる制御
長所
– FlashAir以外にマイコン不要
– コーディング量が少ない
短所
– あまり大仕事はできない
• メモリが少ない
• 実行も速くはない
– 利用できる機能はiSDIOのサブセット
– SDホスト機器からのファイル読み書きに注意が必要
TOSHIBA x GUGEN FlashAir Hackathon
35
共通する注意事項(1)
ファイルアクセスの不整合– SDカード上のファイルシステムを管理(FAT管理)するのは、ホストの責任です• PCから書くときはPCがFATを更新
• FlashAirが書くときはFlashAirがFATを更新
– デジカメやWindows/MacOSのようなリッチなOSは、FATをキャッシュしています• FlashAir(Lua or CGI)から書き込みをすると、PCは変更を知るすべがありません
– そのため、PC/デジカメとFlashAirからのファイル書き込みを混在させると危険です• 最悪の場合はファイルシステムが壊れます
– SDホストがいる環境ではFlashAirから書かないようにしましょう
36
TOSHIBA x GUGEN FlashAir Hackathon
共通する注意事項(2)
時計がない–バッテリーバックアップがないため、時刻を自力で記憶できません
–代替策:HTTPで取得するのが一番手軽
メモリが少ない–あんまりメモリはありません。ビッグなことはさせないように気を付けましょう
機能網羅的ではない–ハッシュ:MD5のみ(SHA1やSHA256は非対応)
–通信プロトコル:HTTP、HTTPS、FTP
37
TOSHIBA x GUGEN FlashAir Hackathon
TOSHIBA x GUGEN FlashAir Hackathon
38
面白そう!!どこに行けば情報が得られるの?
API情報公開中
TOSHIBA x GUGEN FlashAir Hackathon
39
flashair-developers.com
開発者情報サイトあります
TOSHIBA x GUGEN FlashAir Hackathon
40
APIリファレンス チュートリアル
ステーションモード、アップロード
上級者向け情報 デベロッパーフォーラム
開発者情報サイトあります
TOSHIBA x GUGEN FlashAir Hackathon
41
flashair-developers.com
ハイフン必要 複数形
ひろがるコミュニティ
FlashAir Developersを通じて、コミュニティによる応用が
広がっています!
42
TOSHIBA x GUGEN FlashAir Hackathon
コミュニティによるアプリ
TOSHIBA x GUGEN FlashAir Hackathon
43
X
あ
A
17
15
7
7
7 2
25
1
2015-04-10現在
コンテストから生まれた作品
TOSHIBA x GUGEN FlashAir Hackathon
44
うちわ over WiFi(豊田将平氏)
リアルタイム入退室ログ今北ちゃん
(ウェブペイ曾川景介氏)
基板ぞくぞく登場
TOSHIBA x GUGEN FlashAir Hackathon
45
FlashAir GPIOを便利に使う基板(じむ)
『Airio』FlashAir GPIOでLチカする基板
(余熱@れすぽん)
同人誌できました
TOSHIBA x GUGEN FlashAir Hackathon
46
展示作品の作り方
メーカー開発者の裏話
・・など
FAQその1
対応カードはどこで買えますか?全国の家電量販店で買えます!
対応させるFWはどこで入手できますか?市販品そのままでOKです!
API利用料とかあるんじゃないですか?カード買うだけです!
作ったモノで稼いでもいい・・?大歓迎!
やっぱりいろいろ制限あるんですよね?悪いこと以外はなんでもやっちゃって!
47
TOSHIBA x GUGEN FlashAir Hackathon
FAQその2
W-02でLuaは動きますか?動きません
W-02はFWアップデートできますか? Luaは動くようになりません
マニュアルが英語 or 中国語でした並行輸入品です国内でサポートはうけられませんが、中身は同じなので遊ぶにはいいかも
48
TOSHIBA x GUGEN FlashAir Hackathon
FAQその3
外国でも使えますか?使えます!世界80ヶ国の無線認証取得済み!
FlashAirを使った製品は作れますか?作れます!OEMカードもあります
49
TOSHIBA x GUGEN FlashAir Hackathon
最後に・・・
FlashAirよりも高性能なボードはたくさんあります– らずぱいとか、えじそんとか、えんべっどとか
でも、FlashAirにはこんないいところがあります– OSインストール不要
– TCP/IPを代理実行してくれる
– SDスロットがあれば昔の機器も無線対応に
何事も適材適所ですね
50
TOSHIBA x GUGEN FlashAir Hackathon
TOSHIBA x GUGEN FlashAir Hackathon
Enjoy !!
51
ご清聴ありがとうございました
TOSHIBA x GUGEN FlashAir Hackathon
52
Q?