はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

M5Stack Core 2で始めるAzure IoT Hub入門(その1)

AzureとIoTとHoloLensはすごく相性がいいです。
build 2021でもかなり力を入れてAzure Digital Twinsとも絡めて多くの説明がありました。
このブログでも過去にArudinoやESP32、Netduino、Rasberry PIなどについて書いたエントリもあったりします。
今回は、みんな大好きM5Stackを使ってやってみたいと思います。
まず、第1回目の今回は、M5Stackのアプリをデプロイするところまでやってみましょう。

M5Stackとは

M5Stackは、ESP32というbluetoothWi-Fiを内蔵するSoCを使って、それに320x240のTFTカラー液晶、microSDカードスロット、スピーカーを組み合わせたコンパクトで便利な開発モジュールになります。
f:id:hatsune_a:20210604195926p:plain
ESP32はArudino環境で開発ができるのでM5Stackで動作するアプリもArduino環境で開発ができます。
M5Stackには様々な拡張モジュールがあり、M5Stack Coreと呼ばれるM5Stack本体に拡張モジュールを積み重ねていくことでいろいろな機能が拡張ができます。

M5Stack Core 2とは

今回使うM5Stack Core 2は、M5StackのCore機能を改良した第二世代のCoreデバイスとなります。
www.switch-science.com
M5Stack Core 2本体にはUSB Type-Cが用意されていて、こことPCのUSB Type-Aを接続するUSBケーブルも同封されています。
ただし、SDカードは付属していないので、忘れずに一緒に購入しておくとよいでしょう。

M5Stack Core 2の電源を入れる

PCとUSBケーブルを接続して電源ボタンをクリックするとすぐに立ち上がります。
f:id:hatsune_a:20210604201416j:plain
FactoryTestというスケッチ(アプリコード)が実行されてるのですが、色合いや表示されている表示なんかが、みんな大好きエヴァ風だったりします。
USBケーブルを抜くと「外部」から「内部」にちゃんと主要電源表示が切り替わります。すばらしい。

M5Stackの開発環境を整える

Arduio IDEで開発してもいいのですが、今回の目標は、Visual Studio CodeでM5Stack開発環境を整えて、簡単なコードをデプロイして動かすところまでを目標にします。
参考にするMicrosoft Docsはこちらになります。
docs.microsoft.com

開発環境のゴール

gist.github.com
M5Stackの画面にHelloWorldと表示します。

Arduino IDEをインストールする

https://www.arduino.cc/en/software
Visual Studio CodeからArduino IDEの動作環境を呼び出すため、Windows Appsではなく、Windows Win 7 and newerのリンクからexeファイルをダウンロードしてインストールします。
インストールオプションは変えずにそのままインストールしましょう。
f:id:hatsune_a:20210604203451p:plain

M5Stack Core 2との接続を確認する

M5Stack Core 2をPCにUSB接続したら、デバイスマネージャーでシリアル接続先として認識されているかを確認します。
f:id:hatsune_a:20210604205425p:plain
[ポート (COMとLPT) ]の中に「CP210x」があるかを探して、COMの番号を調べておきます。上手ではCOM4です。

Arduino IDEの設定を行う

Arduino IDEを起動したら、[ファイル]-[環境設定]メニューをクリックします。
f:id:hatsune_a:20210604205743p:plain
[追加のボードマネジャーのURL]に下記を設定します。
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

[ツール]-[ボード]-[ボードマネージャー]メニューを選択します。
f:id:hatsune_a:20210604210051p:plain

ボードマネージャーで「m5stack」と入力して、M5Stackの公式ボードが検索されたらそれをインストールします。
f:id:hatsune_a:20210604210252p:plain

M5Stack Core2ライブラリのインストールを行う

[スケッチ]-[ライブラリをインクルード]-[ライブラリを管理]メニューをクリックします。
f:id:hatsune_a:20210604210649p:plain

ライブラリマネージャーで「m5core2」と入力して、M5Stack公式のライブラリをインストールします。
f:id:hatsune_a:20210604210841p:plain

ボードを選択する

[ツール]-[ボード]-[M5Stack Arudino]-[M5Stack-Core2]を選択します。
f:id:hatsune_a:20210604211022p:plain

シリアルポートを選択する

[ツール]-[シリアルポート]メニューで、デバイスマネージャーで確認したCOM番号のものを指定します。f:id:hatsune_a:20210604211146p:plain

Ardino IDEのシリアルモニタを開く

Arduino IDEで[ツール]-[シリアルモニタ]メニューをクリックしてシリアルモニタを開きます。
ボーレートには115200bpsをを指定しておきます。

スケッチ(プログラム)をデプロイする

[スケッチ]-[マイコンボードに書き込み]メニューをクリックするとしばらく時間がかかりますが、「Hard resetting via RTS pin...」と表示されて、M5Stack Core 2の画面がFactoryTestから変わってスケッチで記述した表示に変わります。

Ardino IDEのシリアルモニタで確認する

スケッチが起動すると、次のような表示が出力されます。
f:id:hatsune_a:20210606155126p:plain

Visual Studio Codeをインストールする

もう大抵の開発機にはインストールされているとは思いますが、Visual Studio Codeで今回は開発するのでVisual Studio Codeもインストールしておきます。

Visual Studio CodeArduino拡張をインストールする

サイドメニューアイコンの[拡張機能]を選択して、「Arduino」で検索して拡張機能をインストールします。
f:id:hatsune_a:20210604214216p:plain

Arduino用の設定を行う

拡張機能Arduinoから「Arduino: Path」の設定にパスを設定します。
f:id:hatsune_a:20210604232818p:plain

IntelliSenseの設定を行う

拡張機能C/C++から「C_Cpp: Intelli Sense Engine」の設定を「Tag Parser」にします。
f:id:hatsune_a:20210604232445p:plain

フォルダを開く

[ファイル]-[フォルダを開く]メニューでコードを置く場所を開きます。

シリアルポートの設定

VSCodeでCtrl+Shift+Pで「Arduino: Select Serial Port」で、先ほど調べた「COM4」を指定します。
f:id:hatsune_a:20210604235204p:plain
これで、フォルダの中に[.vscode]-[arduino.json]ファイルが作成されます。

ボードを選択する

Ctrl+Shift+Pで「Arduino: Board Config」を選択して、ボードを選択します。
f:id:hatsune_a:20210605002930p:plain
これで、フォルダの中に[.vscode]-[c_cpp_properties.json]ファイルが作成されます。

M5Stack用のインテリセンスが効くように設定する

c_cpp_properties.jsonを開いて、includePathにArduino IDEで指定したスケッチブックの保存場所の中のライブラリを指定します。

例:"C:\Users\hatsune\Documents\Arduino\libraries\\**",

前の行の最後に , を入れるのも忘れないようにしましょう。

シリアルモニターとの通信ボーレートを指定する

Ctrl+Shift+Pで「Arduino: Change Baud Rate」を選択して、115200を選択します。
f:id:hatsune_a:20210606162306p:plain

コードを書く

HelloWorld.inoをフォルダの中に作成します。

スケッチ(プログラム)をビルドする

Ctrl+Alt+RまたはVSCodeの右上のVerifyアイコンをクリックしてコンパイルします。
ベリファイが終わると次の表示がでます。

[Done] Finished verify sketch - helloworld.ino

スケッチ(プログラム)をデプロイする

Ctrl+Alt+UまたはVSCodeの右上のUploadアイコンをクリックしてコンパイルします。

[Done] Uploaded the sketch: helloworld.ino

シリアルモニタに接続する

スケッチが起動したことを確認したら、Visual Studio Codeの画面最下部のコンセントマークをクリックしてシリアルモニターをオープンします。
f:id:hatsune_a:20210606182414p:plain
シリアルモニタには、次のような表示が出力されます。
f:id:hatsune_a:20210606185316p:plain
なお、シリアルモニタをオープンしたまま、スケッチをデプロイしようとすると「スケッチの書き込み中にエラーが発生しました」となりますので注意してください、


ここまで順調にできたならば、開発環境の準備は終わりです。
次回をお楽しみに!
その2→
M5Stack Core 2で始めるAzure IoT Hub入門(その2) - はつねの日記

Azure Digital Twinsを学ぶために最適なLearn

Microsoft Build 2021に参加していて、Azure Digital Twinsについて、もう一度ちゃんと把握したくなったのでdocsで資料読むだけじゃなくてMicrosoft Learnでも学んでみようと思い立ったので、該当するLearnのURLをあつめてみました。
docs.microsoft.com
docs.microsoft.com
docs.microsoft.com
docs.microsoft.com
docs.microsoft.com
このあたりを一通り進めてみようと思います。

Microsoft Graph REST APIを使うときに必要な私たちのLearn

Microsoft 365(TeamsとかOffice 365)のデータにアプリからアクセスしようとした場合、Microsoft Graphを経由してアクセスすることになります。
Microsoft Graphによって、AzureADに登録したアプリごとのアクセス権に基づいたAPI呼出し制限や、テナントに対する流量制限なども行えるため、アプリ側の問題などで、利用中のMicrosoft 365データに対して予期しない操作を防止することができます。
Graphを使うためには、Graph SDKREST APIの2つの方法があります。
SDKが対応している言語やプラットフォームであればSDKを使うのも1つの方法です。
しかし、.NET 5などで、マルチプラットフォームでの動作を想定するならばREST APIも押さえておくのが良いでしょう。

そこで、REST APIを使ってMicrosoft Graph APIに接続するときに分かりやすいLearnを見つけたので共有します。
docs.microsoft.com
ぜひ、挑戦してみてください。

そろそろ.NET 6のWindows OS動作環境をまとめておこう

2021年5月現在、サポート対象となっている.NET (.NET Core) のバージョンは、.NET Core 2.1、.NET Core 3.1、.NET 5です。

Windows クライアント 動作OS

それらがサポートしているWindows クライアント OSとしては次のものがあります。

Windows 7で注意しなければならないのは、SP1定期済であり、また、通常サポートも終了(2020年1月14日)しているので拡張セキュリティ更新プログラム (ESU) が適用されていることです。
docs.microsoft.com
ESUは最大3年の施策ですから、2023年1月14日にはWindows 7 SP1自体のOSとしてのサポートも終わります。
Windows 8.1のサポート終了が2023年1月10日ですので、あと約2年くらいでWindows 10にWindows OSを1本化できる世界線がやってきます。

.NET 6 のWindows動作OS

github.com
リリースノートによれば、.NET 6についても同様にWindows クライアントOSについては、

となっています。
.NET 6はプレビュー版ですが、.NET 5で簡単なWPFアプリなどを作成しておいて、配布先で動作するかをためしておくと.NET 6がGA (正式リリース) されたときの移行もスムーズかもしれませんね。

.NET 5アプリを動作させる上でのその他の注意点

Windows 7では更に次の2つもインストールされている必要があります。

Windows 8.1では次のものがインストールされている必要があります。

  • Microsoft Visual C++ 2015-2019再配布可能パッケージ

そろそろ.NET 5のWindows OS動作環境をまとめておこう

2021年5月現在、サポート対象となっている.NET (.NET Core) のバージョンは、.NET Core 2.1、.NET Core 3.1、.NET 5です。

Windows クライアント 動作OS

それらがサポートしているWindows クライアント OSとしては次のものがあります。

Windows 7で注意しなければならないのは、SP1定期済であり、また、通常サポートも終了(2020年1月14日)しているので拡張セキュリティ更新プログラム (ESU) が適用されていることです。
docs.microsoft.com
ESUは最大3年の施策ですから、2023年1月14日にはWindows 7 SP1自体のOSとしてのサポートも終わります。
Windows 8.1のサポート終了が2023年1月10日ですので、あと約2年くらいでWindows 10にWindows OSを1本化できる世界線がやってきます。

.NET 6 のWindows動作OS

github.com
リリースノートによれば、.NET 6についても同様にWindows クライアントOSについては、

となっています。
.NET 6はプレビュー版ですが、.NET 5で簡単なWPFアプリなどを作成しておいて、配布先で動作するかをためしておくと.NET 6がGA (正式リリース) されたときの移行もスムーズかもしれませんね。

.NET 5アプリを動作させる上でのその他の注意点

Windows 7では更に次の2つもインストールされている必要があります。

Windows 8.1では次のものがインストールされている必要があります。

  • Microsoft Visual C++ 2015-2019再配布可能パッケージ

Microsoft Build 2021前夜祭に登壇します

azurerockstar.connpass.com

日本時間で2021/05/26の深夜から始まるMicrosoft Build 2021の前夜祭のイベントに登壇することになりました。

  1. 22:30 Buildのアップデートを先取り! 「Book of News」を見ながらトーク
  2. 24:00 日本語解説付きMicrosoft Build 2021基調講演ライブビューイング

2021/05/26 22:30からは、build 2021の直前情報をほかのパネリストの方と一緒にご紹介します。
また、24時、つまり5/7の0時からは基調講演の副音声として、これまた他のパネリストの人と基調講演をみながらあれこれしゃべっちゃいます。

ぜひぜひ、基調講演が始まるまでの眠気覚ましとしてもご活用いただければと思います!
register.build.microsoft.com

Build自体をよりお楽しみいただくために、ぜひ、build 2021の事前参加登録もよろしくお願いいたします。
register.build.microsoft.com

AzureのComputer VisionについてMicrsoft Learnをやってみた

Microsoft Learnは、マイクロソフトさんが用意してくれているマイクロソフト技術を学べるオンラインコンテンツです。
日本語化もどんどんされていて、解説+確認テストという感じで進められます。
テキストアドベンチャーゲームっぽく進んでいるとEXPもらえるなどなかなか楽しいです。

内容も画面スナップショットがおおいですし、試すための具体的なコードも書かれているので、Azureを使って実際に試しながら理解を深めることができます。
Azure Subscription自体は無料で取得できます(クレジットカードの登録は必要)、機能によっては月利用上限付きの無料枠があるので、意外と無料で色々試すことができます。無料枠こえたときは自動的に止まるので意図せず課金ってこともありません。

Computer Visionで言えば、どういった機能があって、その機能を使うためにはどのようなことをしないといけないかなどが順序だてて学ぶことができました。Computer Visionからかえってくる結果などもわかりやすく掲載されているのがよいですね。

自分が学んだおすすめコンテンツをコレクションとしてまとめておいて紹介することもできますので、Computer Vision関連をまとめておきました。
プロファイル | Microsoft Docs