Hack & Sports

Microsoft エバンジェリスト&トライアスリート 大田 昌幸の個人ブログ

未踏 IoT 合宿に参加してきた(1回目)

6/3(金)~6/5(日)の2泊3日で未踏IoT開発合宿(OB/OG合宿)に参加しました! Things側(デバイス側)初心者として学んだことのメモがメインですが、今後始める人の役に立てばいいなと思い、ブログにもポストします。

atnd.org

一緒に参加した稲津さんはブログ、西尾さんはSlideShareで資料あげているので、あわせてお楽しみください。

今回の目的は大まかに2つだったのですが、無事達成!やっぱ日ごろから中国に発注している人と一緒に開発すると早い!!

  • バイス側開発の全体像を知る

  • 実際の開発方法をある程度経験する

参加した背景

そもそも合宿に参加した経緯としては、下記のとおりです。端的に言うと、自分が見ている範囲にHello World or Deep 情報しかないので勉強する場が欲しかったのです。

  1. 親父「実家の事業の中でこういうことしたいのだけど、実現方法考えて」
  2. まさ「あぁ、いわゆるIoTだね。データ吸いだしてダッシュボード作ればいいのか。IoT Hub + Stream Analytics + Power BI あたりで何とかなるよ。Cloudにデータ出せたらデータ見るまで工数1日未満だと思う」
  3. 親父「ふ~ん、デバイス側ってどうやるの?」
  4. まさ「わかんないから勉強してくる!」
  5. まさ いろんな人のブログ読んで勉強しようっと => Lチカ(LEDチカチカ)どまりが多いなぁ。もしくは情報ディープすぎて辛い・・。入門からミドルくらいまでの勉強したいなぁ
  6. 上田さん@未踏会議 「IoT合宿やります!」
  7. まさ「これだ!参加します!」

バイス側開発の全体像を知る

今回は Raspberry Pi 2 とデバイス類を使って開発! デバイスとコンピュータ(Raspberry Pi)を接続する方式は全部で3つ習いました

詳細はWikipediaを見てもらうとして、それぞれざっくり説明すると、

  • GPIOは基本。アナログデータを送受信するときに使用
  • I2Cはデジタルデータ(センサーで撮った温度とか)を送受信するときに使う。複数センサーを制御できるけど、速度は2Mbpsくらい
  • SPIはデジタルデータを高速(50Mbps)送受信。

最近はI2Cのセンサーが多いらしく、また、自分的にはI2Cセンサー扱いやすかったので今後もI2Cやっていこうと思いました。

実際の開発方法をある程度経験する

実際の開発工程としては、だいたいこんな感じでした。

  1. やりたいこと決める!
  2. バイス選定する(今回は慣れのために適当にRGBセンサーを使いました)
  3. バイスのデータシート(仕様)を解読
  4. データシートに書いてあることをもとにデバイスつなぐ+Pythonで実装

1はデバイス開発以前のことなのでスキップします。

2はI2Cセンサーで手ごろなRGBセンサーを選定。今後は自分の目的に合わせてカメラ購入予定です。

3はメーカーの製品ページにだいたいリンクがあります。例えば、RGBセンサーのページにあるTechnical DetailsにあるリンクをたどるとこんなPDFにたどり着きます。これを読んでデバイスの仕様を理解する。例えば、下図のような感じです

f:id:NT-D:20160608212052j:plain

f:id:NT-D:20160608203226j:plain

3で理解した内容をもとに4では実際に実装! f:id:NT-D:20160608205105j:plain (この写真はRGBではない別のやつです)

バイスつなぐのは慣れてなくて、上田さん、矢萩さん、西尾さんに教えてもらいながらどうにかこうにか。Pythonもサンプルを見せてもらいつつ、Raspberry PiSSHで入ってガチャガチャ実装。もっと実力をあげて自力でやり遂げたい!

ちなみに、工程3はしんどいしめんどいです・・できればベトナムとかのクラウドソーシング先に渡して1センサー1万円くらいで解読とサンプル作成を依頼したいなぁと思いました。

感想

未踏合宿というだけあって「皆さんエンジニアなのでセットアップとかコーディングはできますよね?英語は読めますよね?わからない人はググって下さい」という前提でサクサク進むので受ける側としては良い緊張感が持てた。

逆に、本当に詰まりそうなポイントについては丁寧に教えていただけるので、そこは助かりました。できる人と開発するとガンガン進むので、2回目も是非行きたいです! (すでに製品できている人も多かったので、普通に悔しいしなぁ。。)

次やりたいこと

  • I2Cで取得した水温情報 + カメラ情報をIoT Hub を使ってAzureに投げ込む
  • Azure側で処理をしてデータをリアルタイム可視化する
  • ブレッドボードで繋いだ基盤をベースに量産する方法を勉強する(現実世界へのDeploy方法)