Center CLR Try!開発 #2
昨日は「Center CLR Try!開発 #2」に参加しました。
Try!開発とは、もくもく会のように、みんなで集まって気楽に開発をやるイベントです。 イベントというよりも、もくもく開発、寄り合い、寺子屋といった表現のほうが正しいのかもしれません。
今回は水曜日に告知からの土曜日開催なので、参加者3名と寂しい感じでした。
やること・教えてほしいこと
最初に「やること・教えてほしいこと」を自己申告でホワイトボードに書いて情報共有。
わたしは11/17に京都で開催される、AzureSphereセミナーのプレゼン資料の作成をやることにしました。(切実)
Matsuiさんは(あいかわらず)IL2Cの例外だそうです。お手伝いできそうなところはナイっす。
ayumaxさんは忘年会で使えるUnityアプリ開発。これまたお手伝いできそうなところはナイっす。(ちょっと面白そう、、、実際に使ってみたい。)
もくもく
それぞれバラバラな内容ってことで、教えてもらう・教えるみたいなのはほとんど無く、各自もくもく作るって感じになりました。
情報交換?で印象的だったのは、、、
わたしは、、、やる気が上がらず、途中でミスドへ買い出しにいったりしていました。場所が金山駅近くなので、買い物に便利です。買い食いが捗る。
やったこと・教えてほしいこと
終わりの1時間前に、「やったこと・教えてほしいこと」を自己申告で情報共有。
わたしは、しゃべっていたり、ミスドへ行ったりしていたので、、、全体の8割ぐらいできたかなぁという程度でした。
毎月開催します
このイベント、毎月第2土曜日に開催するみたいなので、興味ある方は気軽にご参加ください。
(当面は、cre8 BASE KANAYAMAにご協力いただき、こちらの会議室でやる予定です。)
最後に写真
雰囲気がわかる写真を撮っておらず、、、 Matsuiさんの本日の成果説明の様子をアップしておきます。
AzureのFlow, Logic Apps, Functions, Virtual Machineの価格比較(定期実行時)
SeeedのWio Node、ちょっとしたデータ取得には便利なのですが、、、
連携しているWio Serverには定期的にデータを取得、チェック(たとえば、定期的に温度を測って、異常に高いときはEメール通知するとか)することができません。
Wio Serverは外部からリクエストが来ると、Wio Nodeへ問い合わせして、現在の値を取得する、、、という仕組みなので。
定期実行できて、ちょっとした条件を加えて、外部へ通知する、、、のに適したAzureサービスはなんだろう??主に価格面でw
というわけで、調べました。
Flow
- Free
- 無料
- 実行数 750回/月(1回/時間)
- 最短周期 15分
- Plan1
- $5.00/月
- 実行数 4500回/月(6回/時間)
- 最短周期 3分
- Plan2
- $15.00/月
- 実行数 15000回/月(20回/時間)
- 最短周期 1分
Logic Apps
- 0.00336円/アクション
- 0.01512円/Standardコネクタ
- 0.12円/エンタープライズコネクタ
※ 西日本リージョンの場合
Functions
- 実行時間 0.001792円/GB・秒(毎月400000GB・秒が無料提供)
- 総実行回数 22.40円/100万実行回数あたり(毎月100万実行回数が無料提供)
- 開発はC#, JavaScript, F#, Java
※ 西日本リージョンの場合
※ ストレージを使った場合は別料金が発生
※ Azure IoT Edgeを使えば無料
Linux Virtual Machine
- B2MS(Core x2, RAM 8GB)
- 14.34円/時間
シナリオ
- 2分周期でセンサーのデータを収集。
- センサーは5台。
- データはtwitterなどへ転送するものとし、Azure上で保持しない。
Flow
無理。 (Plan2でも、実行回数の制限に引っかかる。)
Logic Apps
2アクション+1Standardコネクタを5台。(という考え方で良いのかな?) 2438円/月。
Functions
総実行回数は22320回。(センサー5台を逐次取得した場合)
実行時間、、、わからん。
Linux Vertual Machine
10669円/月。
参考リンク
Azure Sphereテナントの作成(準備編)
こちらの記事を、分かりやすく書き直そうとしています。
予備知識
Azure Sphereテナント
MCUデバイス(Azure Sphere対応MCU)のセキュリティ更新やプログラムアップデートなど、いくつかの機能を実現するために、マイクロソフトからAzure Sphereセキュリティサービスが提供されています。
Azure Sphereでは、このAzure Sphereセキュリティサービスの使用が必須です。MCUデバイスをインターネットに接続してAzure Sphereセキュリティサービスと紐づけしない限り、MCUデバイスにプログラムを入れることさえできません!!
そして、このMCUデバイスとAzure Sphereセキュリティサービスの管理範囲を、Azure Sphereテナントと言います。
具体的には、MCUデバイスを紐づけたり、プログラムアップデートなどを指示するときは、Azure Sphereテナントを指定して操作します。
Azure Sphereテナントの認証
Azure Sphereテナントのリソースに対する認証は、Azure ADテナントを使用します。
そのため、Azure Sphereテナントは1つのAzure ADテナントと紐づけされなければいけません。
また、Azure Sphereテナントで使える認証のアカウントは、組織アカウント(Work or school account)に制限されています。(個人アカウント(Microsoft account)は使用することができません。)
Azure ADテナント
Azureのポータルにログインできる状態ですと、必ずAzure ADテナントが存在、使用しています。
自身が保有、利用できるAzure ADテナントは、Azureポータルの画面上部にある手帳マークをクリックすると、一覧表示されます。
組織アカウントと個人アカウント
組織アカウントと個人アカウントは、アカウント名からは判断できません。
Azure ADのユーザー一覧にある”ソース”列や、ログインするときに表示されるアイコンで判断します。
ソース列の"Azure Active Directory"は組織アカウント、"Microsoftアカウント"は個人アカウント。
ネームタグアイコンは組織アカウント、人型アイコンは個人アカウント。
計画
以上から、
- どのAzure ADテナントを使うのか?
- どの組織アカウントで認証するのか?
を決めて、用意してから、
- Azure Sphereテナントを作成
する流れになります。
プライベートで使用しているAzureとか、大企業のAzureとか、状況によってどうするのがベストなのか迷うところですが、、、
プライベート使用であれば、普段選択されているAzure ADテナントに組織アカウントを追加するだけで良いと思います。
たとえば、普段、選択されているAzure ADテナントが”xxx.onmicrosoft.com”だったときは、
- Azure ADテナントは、xxx.onmicrosoft.comを使用する
- xxx.onmicrosoft.comに、組織アカウント yyy@xxx.onmicrosoft.comを追加する
という感じで。
Azure Sphereテナントの作成(雑記版)
そろそろMT3620開発キットが手元に届いたころですね。
すぐにデバイスの電源を入れて動かしたいところではありますが、その前にAzure Sphereテナントを用意しておく必要があります。
MCU、OS、Cloudとあった3つのうちの、Cloudの部分です。 下図の赤マルのところ。
今回は、このAzure Sphereテナントの紹介と作り方を書こうと思います。
Azure Sphereテナント
MCUデバイス(Azure Sphere対応MCU)のセキュリティ更新やプログラムアップデートなど、いくつかの機能を実現するために、マイクロソフトからAzure Sphereセキュリティサービスが提供されています。
Azure Sphereでは、このAzure Sphereセキュリティサービスの使用が必須です。MCUデバイスをインターネットに接続してAzure Sphereセキュリティサービスと紐づけしない限り、MCUデバイスにプログラムを入れることさえできません!!
そして、Azure Sphereセキュリティサービスを使えるようにするには、「Azure Sphereテナントを作成する」という作業になります。
Azure SphereテナントはAzure ADテナントに紐づいて作成します。これは、Azure SphereセキュリティサービスにMCUデバイスを追加したり、プログラムをOver-the-Airで配布したりするときの認証に組織アカウントを使うためです。
あー、ややこしい、、、
ざっくりと言うと、
- Azure ADテナントに、組織アカウントを用意した上で、
- (Azure ADテナントに紐づいた)Azure Sphereテナントを作成、
- (するとAzure Sphereセキュリティサービスが使えるようになって、)
- Azure SphereテナントにMCUデバイスを割り当てる ←Claim your device
- (と、MCUデバイスの操作が可能になる)
です。
んー、図にしないと分かりにくい(汗
Azure ADテナント
現状、2のAzure ADテナントとAzure Sphereテナントの紐づけをあとから変更したり、4のAzure SphereテナントとMCUデバイスの割り当て変更ができません。
そのため、どのAzure ADテナントを使うかを考えて決断が必要です。
さらに、、、このAzure ADテナントがまた理解し辛い。
どのAzure ADテナントを使うかは、次の3シナリオのいずれかになると思います。
- 個人アカウントのAzureで、デフォルトで作られたAzure ADテナント。
- 個人アカウントのAzureで、新たに作成した(する)Azure ADテナント。
- 組織アカウントのAzureで、組織のAzure ADテナント。
- 組織アカウントのAzureで、新たに作成した(する)Azure ADテナント。
推奨は、個人アカウントのAzureは2、組織アカウントのAzureは3のようです。
1のケースは公式ドキュメントに書かれていないため、本当に可能かは不明です。
個人アカウントと組織アカウント
これも良く話題になることですが、自分が使用しているのが個人アカウントか組織アカウントか判断がつきにくいです。
Azureにログインするときに、「ひとアイコン」は個人アカウント、「ネームタグアイコン」は組織アカウントです。
(下図の上2つが個人アカウント、3つ目が組織アカウント)
個人アカウントのAzureで、新たに作成した(する)Azure ADテナント
さきほどの2のケースが多数だと思うので、これについて手順をサラッと書いておきます。
Azure ADテナントを作成
Azure Sphereテナントと紐づけるAzure ADテナントを作成します。
手順はこちら。
組織アカウントの作成
セキュリティポリシー的に?Azure Sphereテナントは組織アカウントが必須なので、組織アカウントを作成します。
こちらの3と4。
https://docs.microsoft.com/ja-jp/azure-sphere/quickstart/qs-azure-directory-account#create-a-new-account-and-directory-that-are-associated-with-an-existing-accountdocs.microsoft.com
Azure Sphereテナントを作成
azsphere login
して(このときに使用するアカウントはさきほど作成した組織アカウント)、azsphere tenant create -n ホゲホゲ
で。
こちらの2と3。
https://docs.microsoft.com/ja-jp/azure-sphere/quickstart/claim-devicedocs.microsoft.com
Azure Sphereテナントを確認
azsphere tenant list
で、作成したテナントを確認することができます。
最後に
わたし一人ではさまざまなケースをテストできないので、、、
みなさんのやってみた結果をコメントいただけると嬉しいです。
Azure Sphere開発ツール
Azure Sphereのアプリケーションは、Visual Studio + Azure Sphere SDKで開発します。
- Windows 10 Anniversary Update以降(1607以降)
- Visual Studio 2017 Enterprise/Professional/Community 15.7以降
- Azure Sphere SDK Preview for Visual Studio
1と2を事前に準備しておき、Azure Sphere SDK Preview for Visual Studioをネットからダウンロードして実行、インストールすればOKです。
Azure Sphere SDKインストール前
Windows 10を1607以降にアップデートしておきます。
winverコマンドでバージョンを確認しておきましょう。
現在の最新は1803です。
Visual Studioは15.7以降にアップデートしておきます。
現在の最新は15.8.5です。
Azure Sphere SDKインストール
Azure Sphere SDK Preview for Visual Studioをダウンロードして実行します。
OpenVPN TAP driverを入れぞ!と赤字で協調されていてドキドキしますが、気にせずInstallボタンをクリックしてインストールを進めます。
あとは待つだけ、、、
インストール後
インストールされた結果をいくつか確認しましょう。
プログラムの一覧に、Visual Studio Tools Preview for Azure Sphereが追加されました。
メニューに、Azure Sphere > Azure Sphere Developer Command Prompt Previewが追加されました。
今後、このコマンドプロンプトで「azsphere」というコマンドを実行することが多々あります。
Visual Studioには、Visual Studio Tools Preview for Azure Sphere拡張が追加されました。
このVisual Studio拡張によって、新規プロジェクトのVIsual C++ > クロスプラットフォーム に、Azure Sphere が追加されました。
以上、終了。
一般的な組み込み系のツールと比較して、Azure Sphere SDKを実行するだけのあっさりとした仕組みになっています。
EXE、1個を実行するだけの簡単インストールで良いですね♪
以下、余談
赤字で表示されていたOpenVPN TAP driverって何ぞ?ですが、、、
Visual Studioやazsphereコマンドはパソコン内の仮想ネットワークを経由してMCUデバイスと通信する仕組みになっています。
Visual Studio, azsphere <-> TAP driver <-> Azure Sphere Device Communication Service <-> USB <-> MCUデバイス
そんなわけなので、ネットワーク接続にAzure Sphereという接続(これがTAP driver)と、
WindowsサービスにAzure Sphere Device Communication Serviceが追加されています。
MT3620開発キットを買う前に知っておくべきこと
Seeedが販売するAzure Sphere MT3620開発キットを購入する前に、知っておくべきことを書いておきます。
購入してから「あー、買って失敗だった。使えねー。」とならないためにも。
Search results for: 'Azure Sphere MT3620'
はじめに
本文書はマイクロソフト、Seeedの正式な文書ではありません。
マツジルシ個人のメモです。
ライセンスなど、デリケートな部分は各社の文書をご確認ください。
Azure Sphere MT3620開発キット
Azure Sphere対応MCUのMediaTek MT3620が載った、Azure Sphereの開発用キットです。
内容物は、
- Azure Sphere MT3620開発ボード
- USBケーブル
の2つ。
取扱説明書といった類は一切入っていません!(キッパリ
Wi-Fi電波などの都合で、製品が { US, EU, JP } の3種類あります。
日本で使うなら JP(SKU 102991100)を。
開発ツール
MT3620のアプリケーションは、Windowsパソコン上のVisual Studio 2017で開発します。
パソコンの要件はこちら。
- Windows 10 Anniversary Update以降(1607以降)
- Visual Studio 2017 Enterprise/Professional/Community 15.7以降
- Azure Sphere SDK Preview for Visual Studio
3のSDKはネットからダウンロード可能なので、MT3620開発キット購入前にコンパイルまで出来るか確認しておくと安心です。(MCUデバイスが無くてもコンパイルまでは可能です。)
(情報ソース)
Azure
ここがややこしい!
- Azure ADを用意して、
- Azure Sphereテナントを作成して、(& 紐づけ)
- Azure ADにADユーザーを作成して、
- MCUデバイスをADユーザーに割当てして、(クレーム)(←ちょっと間違っているかも?)
- MCUデバイスをUSBからプログラム可能にする。(サイドローディング)
と操作します。
そのため、Azureアカウントが必要です。
Azure Sphereテナントなどは、Azureアカウントで費用は一切かかりません。
ライセンス
製品ページに注意事項があります。
- 出荷国に制限あり。(日本はオッケー)
- 返品不可。
- プロトタイプ用途に制限。製品に組み込んではダメ。
さらに、End User Lisense Termsがあるので、こちらもご確認を。
返品、所有権の移動
MCUデバイスとAzure Sphereテナントの割当て(クレーム)は1度しかできません。
割り当ての変更や解除はできません。
使えない機能
9/24 20:30に加筆
現在はAzure Sphere SDKがPreviewということもあり、ハードウェアの一部機能が使用できません。
これらの機能をサポートするスケジュールは公開されていませんが、早く使えるようになって欲しいですね。
最後に
後半、気が滅入るような内容が続きましたが、、、
最新テクノロジーをちょこっと試してみよう!といった感覚で使ってもらえると嬉しいです。
配線が苦手な人向けにMT3620 Groveシールドとか、センサーなどがセットになったAzure Sphere Grove Starter Kitという製品もありますので、時間を短縮したい方は一緒にどうぞ。
Azure Sphereとは?
まもなく、SeeedからAzure Sphere MT3620開発キットが出荷になるぞい!ってことで、Azure Sphereについて整理してみました。
Azure Sphereとは?
Azure Sphere は、極めてセキュリティの高いインターネット接続マイクロコントローラー (MCU) デバイスを開発するための新しいソリューションです。このソリューションで提供されるセキュリティと接続の基盤を利用すれば、大規模なモノのインターネット (IoT) 実装が可能な価格で、顧客に愛されるインテリジェントな製品とエクスペリエンスを開発できます。そして、それらの製品をすばやく市場に投入できます。
ポイントを抜き出すと、
大雑把にいえば、Azure SphereはMCUデバイスを開発するために、MCU、OS、Cloud(と開発ツール)のすべてを提供するソリューションです。 対象のMCUデバイスはインターネット接続するのが特徴で、ネットからの攻撃、侵入に耐えられるよう極めて高いセキュリティを実現することができるよう設計されています。また、この手のMCUデバイスでは珍しく、自動OSアップデートが提供されており、新たな脅威に対しても防御することができます。
MCU
MCUがAzure Sphereに対応するには特定の要件を満たす必要があります。要件が明記された文書は見つかりませんが、ほぼこちらに書かれています。
推測ですが、FLASH 4MB, SRAM 4MB, Microsoft Pluton, ARM Cortex-AとNetwork Connectionは必須と思います。
現在入手可能な唯一のAzure Sphere対応MCUは、台湾MediaTekが製造するMT3620です。
Product Briefが公開されていますが、、、ペリフェラルのレジスタ操作など詳細は公開されていません。
”現在入手可能”と書きましたが、個人ではMT3620単体を購入することは(たぶん)無理です。
Seeedから開発キット「Azure Sphere MT3620開発キット」が販売されているので、開発初期はこれを使うことになります。
Search results for: 'Azure Sphere MT3620'
OS
コアが複数載っており、各コアの役割が別々なので、、、OSは1種類では無いようです。
OSというより、サブシステム毎に考えたほうが良さそうです。
このあたり、今後、用語を整理していきたいところではあります。
今の時点で認識しておいたほうが良さそうなサブシステムは次の3つです。
1と3は、マイクロソフト?が開発、保守する部分なので気にしなくて良いでしょう。(おぃ
ここのOSが何なのかはハッキリ分かりません、、、
2は、我々が開発したアプリケーションが動くサブシステムで、ARM Cortex-A上で実行されます。ここがカスタムLinuxカーネルで動いています。
Linuxと聞くと、Shellが立ち上がってlsとか操作するんでしょ?と思いがちですが、、、Application processorサブシステムにはShellが無いです。
さらに、これ。
Only one A7 application runs on the device at a time.
同時に1つのアプリケーションしか動かないです。
(このあたりの詳細については、引き続きブログで紹介できたらと思っています。)
Cloud
AzureにAzure Sphereセキュリティサービスが動いて、MCUデバイスとネットワーク連携します。
Azure Sphereセキュリティサービスから、MCUデバイスのアプリケーションを配布(Over-the-Air)できます。
つづき
次は「MT3620開発キットを買う前に知っておくべきこと」を書こうと思います。
宣伝
Azure Sphereセミナーやります。 (すでに満席ですが、、、 キャンセル待ちに並んでおけば繰り上がるかも?) algyan.connpass.com