瀬尾佳隆 (@seosoft)
Microsoft MVP
for VS Dev Tech / Windows Dev
Techfair.jp 2016年3月
2016年3月19日
IoT ALGYAN ハンズオンの
ソースコード解説します
おことわり
本資料は、2016年3月19日時点の内容です
Slideshare 公開した 2018年1月時点では
古い内容ですが、記録・参考として公開します
自己紹介
瀬尾佳隆 (せおよしたか)
• MVP for Visual Studio and Dev Tech
• MVP for Windows Development
• http://yseosoft.wordpress.com/
• 乃木坂46 / AKB48G、仏像 / 屏風絵が好き
 Techfair 主宰 (http://techfair.jp/)
 IoT ALGYAN 運営委員
(https://www.facebook.com/groups/ioytjp/)
本日のお題
環境構築
ハンズオンのソースをざっくり見る
GR-PEACH + NETMF を使ってみる
ライブラリを使ってみる
Raspberry Pi 2 を使ってみる
最初に
この資料を参照してください
• http://bit.ly/algyan_source_explain
説明用のサンプルコードをダウンロードしてください
• http://bit.ly/netmf_samplecode
環境構築
Visual Studio + NETMF SDK
Visual Studio
• http://visualstudio.com/
NETMF SDK v4.3 (QFE2-RTM)
• http://netmf.codeplex.com/
手順はMS 太田さんブログ
• https://blogs.msdn.microsoft.com/hirosho/201
5/09/13/2015910iot2106/
会場にいる方はインストール済みのはず・・・
GR-PEACH の初期設定
手順はハンズオン資料の 9ページから
GR-PEACH を無償で入手した方
• ファームウェアインストール済み
• MAC アドレス設定済み
購入した方、環境を壊してしまった方
• ハンズオン資料の手順で初期設定をします
VS の拡張機能には注意
自動で降ってくる NETMF 用拡張機能は
NETMF 4.4 用
• これが有効だとビルドも
デバッグ実行もできません
ひとまず自動アップデートを
止めておきます
VS の拡張機能には注意
4.4.0.0 がインストールされてしまった場合
• http://bit.ly/netmf_ext_downgrade
• アンインストールしてから
再インストール
ハンズオンのソースをざっくり眺める
ハンズオン資料とソースコードの入手
ハンズオン資料
• https://docs.com/ota-hiroshi/2325/iotver3
ハンズオンのソースコード(支援フォルダー)
• http://aka.ms/IoTKitHoLV2Support
2016年3月15日付の V3 の資料とソースを使い
ます
ハンズオンのソースをざっくり眺める
Visual Studio の CodeMap があると便利
• Enterprise Edition が必要です
「さすがにそれは無理」という方は・・・
• 地道にコードを追いましょう
• ただし、ハンズオンのソースは特に難しい構造ではないです
ハンズオンのソースをざっくり眺める
ハンズオンのソースをざっくり眺める
まずは Program, ProgramInitialize
ハンズオンのソースをざっくり眺める
加速度センサー
温度センサー
LED
LED を点滅
させてるらしい
ハンズオンのソースをざっくり眺める
NIC 初期化と
IP アドレス取得
※今回の対象外
NTP で時刻合わせ
※今回の対象外
Web接続テスト
※今回の対象外
見てみましょう
ハンズオンのソースをざっくり眺める
定期的にセンサー
データを取得する
タイマー
定期的にクラウドに
アップするタイマー
※今回の対象外
IoT Hub の設定
※今回の対象外
ハンズオンのソースをざっくり眺める
加速度センサー
改めて
LED温度センサー
ハンズオンのソースをざっくり眺める
I2C
デジタル出力デジタル入力
今日はここ
GR-PEACH + NETMF を
使ってみる
まずは Lチカ
まずは Lチカ (開発の手順の確認)
1. Visual Studio 起動
2. [Micro Framework]-[Console App]
まずは Lチカ (開発の手順の確認)
3. “Microsoft.SPOT.Hardware” を参照設定
まずは Lチカ (開発の手順の確認)
4. Program.cs
を開く
5. コード入力
http://bit.ly/grpeach_lchika_cs
まずは Lチカ (開発の手順の確認)
まずは Lチカ (開発の手順の確認)
6. 転送先は “GR_PEACH_GR_PEACH”
GR-PEACH + NETMF を
使ってみる
NETMF の要素を順に確認
デジタル出力
OutputPort
• 文字通り “汎用的に利用できる入出力ポート”
• ピンアサインで “D” で始まるピンが使える
http://bit.ly/netmf_outputport
GPIO (=General Purpose I/O)
ポート番号はボードによってまちまち
• ここが分かりづらい・・・
デジタル出力
GR-PEACH のポート番号
http://www.core.co.jp/product/m2m/gr-peach/
GR-PEACH のポート番号
P6_12 ならば、ポート番号は 0x6c
(※10進数の 12 は16進数では C)
(関連)デジタル入力
InputPort
センサーや電子部品の On/Off を識別
• ピンアサインで “D” で始まるピンが使える
http://bit.ly/netmf_inputport
データ取得は明示的に読みに行く
(関連)デジタル入力
(関連) 割り込み付きデジタル入力
InterruptPort
センサーや電子部品の On/Off を識別
• 入力値の High/Low が切り替わったタイミングで
イベントを投げてくれる
• ピンアサインで “D” で始まるピンが使える
• http://bit.ly/netmf_interruptport
ポーリングしなくてもいい!
(関連) 割り込み付きデジタル入力
アナログ入力
AnalogInput
電子部品が接続されたピンの電圧を取得
• PinKit でいうと、サーミスター(温度センサー)
• ピンの電圧を A/D 変換した値が取れます
• GR-PEACH の分解能は 4096
• http://bit.ly/netmf_analoginput
アナログ入力
アナログ入力の注意点
AnalogInput コンストラクターの引数
• チャンネルを指定する
• ポート番号ではない
ピン アナログチャンネル
AD0 0
AD1 1
AD2 2
AD3 3
AD4 5
AD5 7
(少し脱線) サーミスターから温度取得
サーミスターは温度によって抵抗値が変わる素子
温度を求める計算式があります
• http://bit.ly/thermistor_to_temp
https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%BC%E3%83%9F%E3%82%B9%E3%82%BF
I2C (Inter-Integrated Circuit)
I2CDevice
• ただし少し使いづらいので継承クラスを用意するとよい
• http://bit.ly/netmf_i2cdeviceex_cs
電源線 2本で双方向通信できるモジュール
• http://bit.ly/netmf_i2c
複数の I2C モジュールで信号線を共用できる
• マイコンボードのピンの消費が少ない
I2C (Inter-Integrated Circuit)
I2CDeviceEx
I2C (Inter-Integrated Circuit)
Adxl345
I2C (Inter-Integrated Circuit)
Program
ライブラリを使ってみる
GR Family Library の入手
http://bit.ly/grfamilylib
GR Family Library の使い方
単なる DLL です
プロジェクトで
参照設定すれば OK
GR Family Library の使い方
DLL 名 用途
Peach.dll GR-PEACH およびピン定義
Sakura.dll GR-SAKURA およびピン定義
SensorBoard.dll PinKit センサーボード
NetworkUtility.dll ネットワーク関連のユーティリティ
ModuleBase.dll センサーモジュールの基底クラス(現在は I2C 用基底クラスのみ)
AnalogSensor.dll アナログ入力の汎用クラス
LiquidCrystal.dll 液晶キャラクターディスプレイ (GPIO 接続)
I2CLiquidCrystal.dll 液晶キャラクターディスプレイ (I2C 接続)
Adxl345.dll 加速度センサー
※2016年3月現在
デジタル出力 – オンボード LED
デジタル入力 – オンボードスイッチ
アナログ入力 – サーミスター
I2C – 加速度センサー
I2C – 加速度 + LCD
Raspberry Pi 2 を使ってみる
Windows 10 IoT の環境構築
http://ms-iot.github.io/content/en-
US/GetStarted.htm
IoT Core Dashboard で Window 10 を
インストールします
• DragonBoard 410C は
Dashboard を使わずに
インストール
Windows 10 IoT の環境構築
OS インストール直後に必要なもの
• HDMI ディスプレイ
• キーボード
• マウス
一度起動できれば、あとは本体だけで OK
• センサーデバイスとして使う場合
NETMF との違い
センサーはファクトリークラスに作ってもらいます
• var gpio = GpioController.GetDefault();
• ストアアプリでセンサーを使う時の流儀と同じ
必ずシャットダウンしてから電源を切ってください
• ファイルシステムが壊れると起動しなくなるかも
ラズパイはアナログ入力を持ってない
• I2C なモジュールを用意してください
(脱線) ラズパイのお供に
GHI のシールドがあると便利
• http://tinyclr.jp/
• https://www.ghielectronics.com
デジタル出力
デジタル入力
I2C
Rpi Library はないの?
検討中・・・です
• PEACH の新センサーボードもありますし、少し長い目で見て
ください
• もしくは一緒に / 率先して作ってください!
まとめ
マイコンボードは決して難しくないです
• 慣れていないだけ
• ポイントが分かれば誰でも書けます
面倒な部分は、ヘルパークラスやライブラリを利用
http://bit.ly/grfamilylib
• ぜひ活用してください
• 大事なのは皆さんがそれぞれソリューションを作ること
IoT ALGYAN
https://www.facebook.com/groups/ioyt
jp/

IoT ALGYAN ハンズオンのソースコード解説します