iotの始め方~.net micro framework編
TRANSCRIPT
IoTの始め方~.NET Micro Framework編~
@2015 MVP Community Camp(名古屋会場)2015/1/31まどべんよっかいち 青木 宣明 (@kumar0001)
概要
.NET Micro Framework対応マイコンボードとMicrosoft Azureを使ったIoTの始め方を紹介します
内容
• マイコンボードの種類、できること
• .NET Micro Frameworkの開発環境
• プログラミング例
センサーの読み取り
.NET MFとAzure Mobile Serviceとの連携
IoTの構成要素
IoT~Intenet of Things~モノのネットワーク
de:code 2014“DE-003Internet Of Things を Windows プラットフォームで実践”より
IoT~デバイスとクラウド
デバイスの要素
マイコンボード
環境センサ
GPS
サーボ
通信
デバイスの構成
マイコンボード
環境センサ
GPS
スマートフォン
独立したデバイス スマートデバイス+マイコンの補助
マイコンボード+Bluetooth
環境センサ
今回はここを 第10回まどべん
マイコンボードの代表例
mbed .NET Micro Framework Arduino
Raspberry Pi Intel Edision
NXP LPC1768 Netduino Plus 2 Arduino UNO R3
Raspberry Pi B+ Intel Edision
.NET Micro Framework
• 組み込み向け.NET
Framework• ARM, SH, x86などに
対応
• 256KB Flash ROM, 64KB RAMの小さな環境向け
• 言語はC#, VB.NET
• オープンソースとして開発• http://netmf.codeplex.com/
.NET Gadgeteer
• GHI Electronics社のマイコンボード
• ガジェッターソケットを備えたタイプ
• Arduinoシールド互換のタイプ
• mbed NXP LPC1768のようなDIPタイプ
• 購入先
• http://tinyclr.jp/
FEZ Spider
FEZ Cerb40
FEZ Cerbuino Net
.NET Gadgeteer情報源
MSDNブログ
• 「デバイスとITの架け橋」
http://blogs.msdn.com/b/hirosho/
学習サイト
• Internet of Things キット ハンズオン トレーニング
http://ms-iotkithol-jp.github.io/
Netduino
• オープンソースのマイコンボード
• Arduinoシールド互換
• 購入先
• スイッチサイエンス
• 若松通商
• など
Netduino Plus 2
mbed
ARM社が提供する組み込み機器のプロトタイプ開発環境
• ワンボードマイコン
OSはない
• オンラインコンパイラ
Webブラウザでコード作成、バージョン管理からコンパイルまで実行できる
豊富なライブラリ、サンプル
開発言語はC/C++
• オフラインコンパイル環境も
mbedの種類
http://developer.mbed.org/platforms/
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
Edisonのボード
Intel Edison Board for Arduino
Intel Edison Breakout Board
秋月電子通商 Edison 2.54mmピッチ変換基板
マイコンボードの選択
基本的な使い方は同じ• 外部入出力(GPIO, I2C, SPI, Analog, PWM, …)
• クラウドへのアクセス(REST, JSON, …)など
マイコンボード間の差異• 価格
• 搭載機能
• OS搭載 vs OS非搭載
• 開発言語(C/C++, C#, Python, node.js, …)
• 開発のしやすさmbed: ライブラリの公開・利用、Wikiでの情報共有の
仕組み
.NET MF: NuGetでのパッケージ公開・利用
.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入力
入出力端子
GPIO
• General Purpose Input/Output
汎用入出力
• 0 / 1の入出力
スイッチとかLEDの点灯などに使える
入出力について
I2C (Inter-Integrated Circuit)• 同期式の2線式のシリアル通信I/F
シリアルデータ信号SDAシリアルクロック信号SCL
• 複数のデバイスがバス接続されるアドレスで区別される
• 転送モード標準モード(最大100kbps)ファースト・モード(最大400kbps)高速モード(最大3.4Mbps)
GND SDA SCL GND SDA SCL
デバイス1 デバイス2
部品などの配線
• ブレッドボード
• リード線やピンを穴に挿して配線する
• 両側の各列が導通(青色)
• 電源・GNDは横方向に導通(赤色)
• はんだ付けせずに配線を試せる
配線例
プログラム開発
開発環境
SDK
デモ
開発環境
Visual Studio 2013
• .NET Micro Framework v4.3 (QFE2-RTM)からVS2013を正式にサポート!
• サポートされるバージョン
VS2013 Pro/Ult/Express
VS2012 Pro/Ult/Express
VS2014 CTP2~(実験的)
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/
.NET Micro Framework
2015/1/26v4.3 QFE2 RTMがリリース
ファームウエアアップデート
MFDeploy
MACアドレスDNSサーバアドレス
設定すること
ファームウェア実施後に
デモ
GPIO (Lチカ)
I2C
クラウドとのHTTP通信
Azure Survice Bus
シリアル通信・アナログ入力・PWM
SDカード
今日はここまで
プログラムの例①
GPIO - Lチカ
• 0 / 1の入出力
スイッチとかLEDの点灯などに使える
• 基本は以下の3点
① ポートの入出力に合わせてInputPort/OutputPortを生成
② ポートを読み書きする
プログラムの例②
• I2C• ADT7410(温度セン
サー)での計測
• 処理の流れ① 設定情報の初期化
② I2Cの初期化 (アドレスを指定)
③ 読み込む位置を指定
④ 値の入力 (サイズは配列長で指定)
プログラムの例②
Mobile Serviceへのアップロード
① POSTでJSONを送信する
② Microsoft.Azure.Zumo.MicroFrameworkを利用
Windows Azure Mobile Servicesクライアントを.NET MFへ非公式に移植したもの
データのEntityクラスを定義
モバイルサービスクライアントを使ってCRUDを実行する
“400 Bad Request”が発生するため調査中…
まとめ
まとめ
.NET Micro Frameworkでのデバイス作成
• GPIO/I2C/UARTなどの外部入出力は他のマイコンと
同じ
開発環境・言語
• Visual Studio 2013が使える
• C#のこれまでのノウハウを使える
• NuGetでライブラリが使える
今後の課題
サービスバスを使ったデータ登録
• 頻度、測定箇所が増えた場合への対応
検証から本番への移行
• 外に持ち出して使えるように基板、電源、通信方法を検討