iotの始め方~.net micro framework編

34
IoT の始め方 .NET Micro Framework 編~ @2015 MVP Community Camp(名古屋会場) 2015/1/31 まどべんよっかいち 青木 宣明 (@kumar0001)

Upload: nobuaki-aoki

Post on 17-Jul-2015

1.495 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: IoTの始め方~.NET Micro Framework編

IoTの始め方~.NET Micro Framework編~

@2015 MVP Community Camp(名古屋会場)2015/1/31まどべんよっかいち 青木 宣明 (@kumar0001)

Page 2: IoTの始め方~.NET Micro Framework編

概要

.NET Micro Framework対応マイコンボードとMicrosoft Azureを使ったIoTの始め方を紹介します

内容

• マイコンボードの種類、できること

• .NET Micro Frameworkの開発環境

• プログラミング例

センサーの読み取り

.NET MFとAzure Mobile Serviceとの連携

Page 3: IoTの始め方~.NET Micro Framework編

IoTの構成要素

IoT~Intenet of Things~モノのネットワーク

Page 4: IoTの始め方~.NET Micro Framework編

de:code 2014“DE-003Internet Of Things を Windows プラットフォームで実践”より

IoT~デバイスとクラウド

Page 5: IoTの始め方~.NET Micro Framework編

デバイスの要素

マイコンボード

環境センサ

GPS

サーボ

通信

Page 6: IoTの始め方~.NET Micro Framework編

デバイスの構成

マイコンボード

環境センサ

GPS

スマートフォン

独立したデバイス スマートデバイス+マイコンの補助

マイコンボード+Bluetooth

環境センサ

今回はここを 第10回まどべん

Page 7: IoTの始め方~.NET Micro Framework編

マイコンボードの代表例

mbed .NET Micro Framework Arduino

Raspberry Pi Intel Edision

NXP LPC1768 Netduino Plus 2 Arduino UNO R3

Raspberry Pi B+ Intel Edision

Page 8: IoTの始め方~.NET Micro Framework編

.NET Micro Framework

• 組み込み向け.NET

Framework• ARM, SH, x86などに

対応

• 256KB Flash ROM, 64KB RAMの小さな環境向け

• 言語はC#, VB.NET

• オープンソースとして開発• http://netmf.codeplex.com/

Page 9: IoTの始め方~.NET Micro Framework編

.NET Gadgeteer

• GHI Electronics社のマイコンボード

• ガジェッターソケットを備えたタイプ

• Arduinoシールド互換のタイプ

• mbed NXP LPC1768のようなDIPタイプ

• 購入先

• http://tinyclr.jp/

FEZ Spider

FEZ Cerb40

FEZ Cerbuino Net

Page 10: IoTの始め方~.NET Micro Framework編

.NET Gadgeteer情報源

MSDNブログ

• 「デバイスとITの架け橋」

http://blogs.msdn.com/b/hirosho/

学習サイト

• Internet of Things キット ハンズオン トレーニング

http://ms-iotkithol-jp.github.io/

Page 11: IoTの始め方~.NET Micro Framework編

Netduino

• オープンソースのマイコンボード

• Arduinoシールド互換

• 購入先

• スイッチサイエンス

• 若松通商

• など

Netduino Plus 2

Page 12: IoTの始め方~.NET Micro Framework編

mbed

ARM社が提供する組み込み機器のプロトタイプ開発環境

• ワンボードマイコン

OSはない

• オンラインコンパイラ

Webブラウザでコード作成、バージョン管理からコンパイルまで実行できる

豊富なライブラリ、サンプル

開発言語はC/C++

• オフラインコンパイル環境も

Page 13: IoTの始め方~.NET Micro Framework編

mbedの種類

http://developer.mbed.org/platforms/

Page 14: IoTの始め方~.NET Micro Framework編

Edison

Intelが2014年9月に発売した超小型コンピュータ

• Atomプロセッサ搭載

• OSはLinux

公式のYocto Linux 1.6や、Debianなど

• Wi-Fi, Bluetooth 2.1/LE搭載

• 開発言語は C/C++, Python, node.js

monoも利用可能(検証中)

• リモートデバッグが可能な開発環境

C/C++はEclipseベースのIDE

Page 15: IoTの始め方~.NET Micro Framework編

Edisonのボード

Intel Edison Board for Arduino

Intel Edison Breakout Board

秋月電子通商 Edison 2.54mmピッチ変換基板

Page 16: IoTの始め方~.NET Micro Framework編

マイコンボードの選択

基本的な使い方は同じ• 外部入出力(GPIO, I2C, SPI, Analog, PWM, …)

• クラウドへのアクセス(REST, JSON, …)など

マイコンボード間の差異• 価格

• 搭載機能

• OS搭載 vs OS非搭載

• 開発言語(C/C++, C#, Python, node.js, …)

• 開発のしやすさmbed: ライブラリの公開・利用、Wikiでの情報共有の

仕組み

.NET MF: NuGetでのパッケージ公開・利用

Page 17: IoTの始め方~.NET Micro Framework編

.NET Micro Frameworkでの開発例

Page 18: IoTの始め方~.NET Micro Framework編

Netduino Plus 2

1× I2C14×デジタルI/O

UART,PWM,SPI兼用

6×アナログI/O電源micro SD

DC IN7.5V-9V

イーサネット

(10Mbps)

micro USB

コード領域 384KB

RAM 100KB

リセットボタン

ORGPIO入力

Page 19: IoTの始め方~.NET Micro Framework編

入出力端子

GPIO

• General Purpose Input/Output

汎用入出力

• 0 / 1の入出力

スイッチとかLEDの点灯などに使える

Page 20: IoTの始め方~.NET Micro Framework編

入出力について

I2C (Inter-Integrated Circuit)• 同期式の2線式のシリアル通信I/F

シリアルデータ信号SDAシリアルクロック信号SCL

• 複数のデバイスがバス接続されるアドレスで区別される

• 転送モード標準モード(最大100kbps)ファースト・モード(最大400kbps)高速モード(最大3.4Mbps)

GND SDA SCL GND SDA SCL

デバイス1 デバイス2

Page 21: IoTの始め方~.NET Micro Framework編

部品などの配線

• ブレッドボード

• リード線やピンを穴に挿して配線する

• 両側の各列が導通(青色)

• 電源・GNDは横方向に導通(赤色)

• はんだ付けせずに配線を試せる

Page 22: IoTの始め方~.NET Micro Framework編

配線例

Page 23: IoTの始め方~.NET Micro Framework編

プログラム開発

開発環境

SDK

デモ

Page 24: IoTの始め方~.NET Micro Framework編

開発環境

Visual Studio 2013

• .NET Micro Framework v4.3 (QFE2-RTM)からVS2013を正式にサポート!

• サポートされるバージョン

VS2013 Pro/Ult/Express

VS2012 Pro/Ult/Express

VS2014 CTP2~(実験的)

Page 25: IoTの始め方~.NET Micro Framework編

SDKのインストール

.NET Micro Framework v4.3 (QFE2-RTM)

• http://netmf.codeplex.com/releases/view/611040

• SDK同梱のVisual Studio拡張も導入する

Netduino 4.3.1 SDK

• http://www.netduino.com/downloads/netduinosdk_NETMF43.exe

Netduino Plus 2 Firmware v4.3.1

• http://forums.netduino.com/index.php?/topic/10479-netduino-plus-2-firmware-v431/

Page 26: IoTの始め方~.NET Micro Framework編

.NET Micro Framework

2015/1/26v4.3 QFE2 RTMがリリース

Page 27: IoTの始め方~.NET Micro Framework編

ファームウエアアップデート

MFDeploy

MACアドレスDNSサーバアドレス

設定すること

ファームウェア実施後に

Page 28: IoTの始め方~.NET Micro Framework編

デモ

GPIO (Lチカ)

I2C

クラウドとのHTTP通信

Azure Survice Bus

シリアル通信・アナログ入力・PWM

SDカード

今日はここまで

Page 29: IoTの始め方~.NET Micro Framework編

プログラムの例①

GPIO - Lチカ

• 0 / 1の入出力

スイッチとかLEDの点灯などに使える

• 基本は以下の3点

① ポートの入出力に合わせてInputPort/OutputPortを生成

② ポートを読み書きする

Page 30: IoTの始め方~.NET Micro Framework編

プログラムの例②

• I2C• ADT7410(温度セン

サー)での計測

• 処理の流れ① 設定情報の初期化

② I2Cの初期化 (アドレスを指定)

③ 読み込む位置を指定

④ 値の入力 (サイズは配列長で指定)

Page 31: IoTの始め方~.NET Micro Framework編

プログラムの例②

Mobile Serviceへのアップロード

① POSTでJSONを送信する

② Microsoft.Azure.Zumo.MicroFrameworkを利用

Windows Azure Mobile Servicesクライアントを.NET MFへ非公式に移植したもの

データのEntityクラスを定義

モバイルサービスクライアントを使ってCRUDを実行する

“400 Bad Request”が発生するため調査中…

Page 32: IoTの始め方~.NET Micro Framework編

まとめ

Page 33: IoTの始め方~.NET Micro Framework編

まとめ

.NET Micro Frameworkでのデバイス作成

• GPIO/I2C/UARTなどの外部入出力は他のマイコンと

同じ

開発環境・言語

• Visual Studio 2013が使える

• C#のこれまでのノウハウを使える

• NuGetでライブラリが使える

Page 34: IoTの始め方~.NET Micro Framework編

今後の課題

サービスバスを使ったデータ登録

• 頻度、測定箇所が増えた場合への対応

検証から本番への移行

• 外に持ち出して使えるように基板、電源、通信方法を検討