FlashAirのハンズオンイベントに行ってきた。
→ FlashAir Developers Summit ハンズオン@大阪 2018年度 – connpass
場所は、大阪の日本橋の電気街にあるシリコンハウス(共立電子)のビルの3F、ものづくり工作室だ。
内容は、(1)座学 , (2)Airio-Baseを使ってみよう , (3)iSDIOチュートリアル , (4)FlashAir IoT Hubが予定されていた。
まず、座学。
FlashAirで機器が簡単にIoT化できる方法が見つかる、という話。
発表資料のスライドとかは公開されてないっぽい。
そのあと、ハンズオンが開始された。
使用する機材が上記の座学の前に配布された。
FlashAir W-04と、Airio-Baseというマイコンボードと、小型ブレッドボードと、いくつかの電子部品だ。
電子部品は、温度センサーユニットKP-ADT7410という小型のブレークアウトボードとI2Cバスのプルアップ用の抵抗だ。
さらに16segのLEDのArduino互換のシールドが配られた。
16segのLEDは、横に向けて強引に2桁の数字の表示をするのに使う。
—
まず最初にやったのは、Airio-Base単体でLEDの点灯ソフトをmbedの開発環境を使って動かすことだ。
Airio-BaseはmbedのEA LPC11U35 QuickStart Boardの互換となっている。
mbedの公式サイトにアクセスし、用意されていたアカウントでログインし、開発環境の設定でターゲットボードを上記のLPC11U35に設定する。
このサンプルコードをIDEにimportして、コンパイルし、生成されたバイナリ(binファイル)をAirio-Baseに書き込む。
書き込み手順はAirio-Baseの基板上のプッシュボタンの3つのうちISPというシルク印刷のある方を押しながら、基板をUSBケーブルでPCに接続し、mbedのbinファイル書き込みモードに入る。そして、PCからはUSBストレージに見えるので中にあるfirmware.binを消してから、新しいbinファイルを書き込む。
書き込んだ後はリセットのプッシュボタンを押せば書き込んだLED制御のプログラムが動くはずなのだが、リセットボタンがなぜか効かなかったので電源を入れ直したらLEDの点灯ソフトが動いた。
よくあるLチカのLEDが一定時間で点滅するプログラムではなくて、プッシュボタンを押したらLEDが点灯し、離すと消灯するというものだ。その動作の説明が先にされていなかったので、ソースコードを読まなかった人でLEDが光らなくて動いていないと勘違いしている人が多かった。
自分はWindows10のPCだったので、大きなトラブルはなく実行できたのだが、Macの人は上手く動かせずにトラブっていて困っていた。
トラブル対応を手伝いの人たちが対応していたが、だいぶ時間が余分に取られてしまっていた。
Windows10の自分の場合でも、最初にUSBストレージにbinファイルを書き込むときに、デバイスドライバがちゃんとロードされていなかったのか書き込みができない状態に陥ってしまったので、電源を入れ直したりして書き込みをすることができたというのがある。
時間が余ったので、mbedのIDEのサンプルソースコードのmbed_blinky.LPC11U35_401というのをビルドして書き込んだりするのも試した。
—
次に、mbedをSDカードリーダーにするというソフトを試した。
このコードを使う。
mbedのIDEでコンパイルしてbinファイルをmbed(Airio-Base)に書き込む。
普通に起動すると、起動後に緑LEDが一定時間で点滅するというプログラムが動く。
安全のため(?)、いきなりSDカードリーダーが動かないようにしているらしい。
SWというシルクのボタンを押しながらAirio-baseの電源を入れると、SDカードリーダーのモードになる。
すると、さっきとは異なり、赤LEDがゆっくり点滅する。
そして、しばらく待つとPCからはUSBストレージが見えるようになる。
ちょっとややこしい。
Windows10だとSDカードリーダー化はうまく動いた。
しかし、Macだとストレージが見えないというトラブルで全員ダメだったっぽい。
結局、Macの人たちはMacBookに内蔵されたSDカードポートがある場合はそちらを使って、無い人にはUSB接続のSDカードリーダーを貸すという形で対応していた。
—
次にFlashAirの中身を弄って、今回の温度センサーのログをグラフ表示させるというJavaScriptプログラムを書き込む。
Airio-Baseを上記の手順でSDカードリーダー化できているならば、それを使ってFlashAirに書き込みをする。
書き込む内容は、配布されているこのhtmlファイルとjsファイルだ。
書き込む前にFlashAirのCONFIGファイルをバックアップする。
(バックアップしたはずなのだが、あとで見たらCONFIGファイルが見つからない。なぜだろう。違うPCに作業フォルダをコピーしたときに漏れた?)
—
そして、いよいよ温度センサーを動かしてFlashAirに書き込みをするソフトをmbedに書き込む。
FlashAir側は、上記にて、SDカードに書き込まれたデータをグラフ表示するJavaScriptプログラムが書き込み済みになっている。
書き込むコードはこれを使う。
mbedのIDEでコンパイルして同様にAirio-Baseに書き込む。
(当日、内容がちょっと不具合があり、SDカードに書き込むデータの区切りがコンマか改行かを間違えて配布されたため、ちょっとトラブっていた)
無事に動作し、温度センサーで気温が測定できた。気温は24℃と表示されている。
手で温度センサーのICのパッケージに触れると、温度の表示が変化する。
そして、この温度の計測データはFlashAirのストレージ内にログのファイルとして記録されている。
ここでスマートフォンなどでFlashAirの無線LANに繋げて、ブラウザを使ってFlashAirのwebサーバーのURL(flashair//)にアクセスする。
test.txtが温度センサーの計測値を記録しているファイルだ。
ここでindex.htmlをタップすると、グラフ表示のjsプログラムが実行されて、温度データがグラフ表示される。
ここまででハンズオンのpart1は終了。
—
ハンズオンのpart2は、iSDIOについての内容だ。
iSDIOは、intelligent SDIOの略で、ホスト側からFlashAirなどの特殊な機能を持ったSDカードの機能を使うためのAPIだ。
上記の温度計測用のプログラムを書き換えて、FlashAirの共有メモリ(SRAMのshared memory)に温度計測データをmed側から書き込むというのを試す。
Airio-Baseに書き込むコードは、これを使う。
FlashAirの中身も、共有メモリの表示等ができるようなプログラムを入れる。
入れるプログラムは、zipファイルのURLがスライドで出ていたのだが、ダウンロードするときにメモを取っていなかったのでURLは不明。
スマートフォンからFlashAirにアクセスし、共有メモリを表示させると、ちゃんと気温の計測値(25.13)が表示された。
SD_WLANフォルダ内のhtmlファイルを実行するのだが、フォルダが不可視なので、URLをフルに手打ちして実行する。
不可視なので実行できないという質問を最初にしたら、PCで試しみてということなので、PCからも試した。
Firefoxで初回に変なエラーが出たが、リロードしてうまく動いた。ちなみにIEも試したがIEだと実行できなかった。(なぜ?)
そして、UARTにもデバッグ用に表示を出しているのを確認した。
TeraTermを用いた。
これもMacユーザーはうまく動かすのに苦労していたようだ。
—
ハンズオンのpart3は、FlashAir IoT Hubの内容なのだが、上記part2までで予定していた時間が過ぎてしまって、やらずに終了となった。
—
このあと会場を移動して、第二部のLTと懇親会に行った。
無線LANの電波の強度の話が面白かった。
前に自分が考えていたSSIDと電波強度を車などで移動しながらロギングする電子工作というのも作れそうだ。
締めにFlashAirの今後について爆弾発言があった。
FlashAirの先行きが怪しいかもしれなくて、会社名が別のところに移るのかもしれない。
キオクシアという名前を記憶した。
終了時間の21時から、名古屋に近鉄フリー切符で特急を使わずに帰るための終電に乗ろうと移動したのだが、間に合わず。
大阪で一泊し、次の日は西宮まで足を伸ばして観光して、難波に戻って近鉄で名古屋に帰った。
—
追記
「朗報! 機器が簡単にIoT化できる方法が見つかる」というのは定番ネタらしく、YouTubeに動画が公開されている。