はつねの日記

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

「nanoFramework.M5StickCPlus」ライブラリが更新されて、「M5StickCPlus.Led」のエラーが解消されました。

hatsune.hatenablog.jp
2022/7/31に公開した上記の記事の中で、「M5StickCPlus.Led」を実行するとNullエラーが発生するのでGpioのPin10を使ったコードを独自に記載してLEDを光らせるようにしていると記述しています。

この問題ですが、2022/08/03で公開された「nanoFramework.M5StickCPlus」ライブラリv1.1.26で解消しています。

該当する変更はこちらのようです。
github.com
これでもっと簡単に、M5StickC Plusで内蔵LEDを光らせることができますね。

.NET nanoFramework 話は逸れますが…

M5StackC Plusで動作するプログラムを.NET nanoFrameworkで作っていて、ちょっと困ることがあります。
.NET nanoFrameworkでは、画面のローテートとか、文字サイズの変更というArduinoではできているものがなくてちょっと困ってます。

### 画面の向き(Arduino

M5.Lcd.setRotation(rotation)

### テキストサイズ(Arduino

M5.Lcd.setTextFont(font);

LCD(ST7789V2)のデータシート読むか、Arduinoのライブラリのソースコード読むかして、.NET nanoFrameworkのM5StackC Plus用ライブラリにも実装したいところですね。

.NET nanoFrameworkでM5StickC Plusの電源状態を取得してみる

前回

hatsune.hatenablog.jp

前回は、.NET nanoFrameworkでのLEDを光らせてみました。

事前準備

Install the nanoFramework firmware

M5StickC PlusにはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5StickC PlusをPCに接続したら、USB Serial Portのポート番号を確認します。今回の環境では「COM6」が該当しました。

Flasherアプリケーションのインストール

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール

M5StickC Plusをターゲットにして「COM6」経由でnanoFrameworkをアップロードします。

nanoff --target M5StickCPlus --update --serialport COM6

Visual Studioの準備

Visual Studioを機能拡張する

Visual Studioには.NET nanoFramework Extensionをインストールして機能拡張しておきます。
この機能拡張によりnanoFrameworkアプリのテンプレートが追加されます。
このテンプレートで作成したプロジェクトには、NuGetから自動的に「nanoFramework.CoreLibrary」ライブラリが追加されています。

「nanoFramework.M5StickCPlus」ライブラリを追加する

M5StickC Plusの画面などハードウェアにアクセスするために、M5StickC Plus用のライブラリを追加します。

直近では2022/08/03にV1.1.26へのアップデートがかかっているので、nanoFrameworkfファームウェアも必ずペアでアップデートしておきます。

ここまでが、M5StickC Plusを使うアプリ開発を行う上での共通の事前準備となります。

電源状態を取得する

M5StickC Plusの電源を管理しているPMICであるAXP192は、電源周りの情報に加えて内部温度などの計測も可能です。
AXP192からの情報はAxp192クラスで取得でき、このクラス自体は、「nanoFramework.M5StickCPlus」ライブラリでは「M5StickCPlus.Power」で参照できます。

状態取得系メソッド

「M5StickCPlus.Power」に用意されている状態取得系メソッドとしては次のようなものがあります。

GetApsVoltage

内部動作電圧を取得します。次の例では[V]で値を取得します。

M5StickCPlus.Power.GetApsVoltage().Volts

GetBatteryChargeCurrent

内蔵バッテリーへの充電電流を取得します。次の例では[mA]で値を取得します。

M5StickCPlus.Power.GetBatteryChargeCurrent().Milliamperes

GetBatteryDischargeCurrent

内蔵バッテリーからの放電電流を取得します。次の例では[mA]で値を取得します。

M5StickCPlus.Power.GetBatteryDischargeCurrent().Milliamperes

GetBatteryVoltage

内蔵バッテリーの電圧を取得します。次の例では[V]で値を取得します。

M5StickCPlus.Power.GetBatteryVoltage().Volts

GetUsbCurrentInput

USBからの給電電流を取得します。次の例では[mA]で値を取得します。

M5StickCPlus.Power.GetUsbCurrentInput().Milliamperes

GetUsbVoltageInput

USBからの給電電圧を取得します。次の例では[V]で値を取得します。

M5StickCPlus.Power.GetUsbVoltageInput().Volts

GetInternalTemperature次の例では[℃]で値を取得します。

本体内部温度を取得します。

GetInternalTemperature().DegreesCelsius

GetInputCurrent

2.54mm 8pinの[5V入力]への入力電流を取得します。次の例では[mA]で値を取得します。

M5StickCPlus.Power.GetInputCurrent().Milliamperes

GetInputVoltage

2.54mm 8pinの[5V入力]への入力電圧を取得します。次の例では[V]で値を取得します。

M5StickCPlus.Power.GetInputVoltage().Volts

USBから給電される電圧と内部温度を表示する

状態取得系メソッドを使って、電流(mA)、電圧(V)などを取得してみましょう。
gist.github.com
www.youtube.com
途中でUSBケーブルを外していますので、USB給電の電流と電圧の値が変化します。

次回

次回はAccelerometerとGyroscopeについて色々調べてみたいと思います。
hatsune.hatenablog.jp

.NET nanoFrameworkでM5StickC PlusのLEDを光らしてみる

前回

hatsune.hatenablog.jp

前回は、.NET nanoFrameworkでのブザーを鳴らしてみました。
今回はM5StickC Plus本体に内蔵されているLEDを光らしてみたいと思います。

更新情報

下記の文中で「M5StickCPlus.Led」を実行するとNullエラーが発生するとの記載をしていますが、2022/08/03で公開された「nanoFramework.M5StickCPlus」ライブラリv1.1.26で解消しています。
github.com

事前準備

Install the nanoFramework firmware

M5StickC PlusにはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5StickC PlusをPCに接続したら、USB Serial Portのポート番号を確認します。今回の環境では「COM6」が該当しました。

Flasherアプリケーションのインストール

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール

M5StickC Plusをターゲットにして「COM6」経由でnanoFrameworkをアップロードします。

nanoff --target M5StickCPlus --update --serialport COM6

Visual Studioの準備

Visual Studioを機能拡張する

Visual Studioには.NET nanoFramework Extensionをインストールして機能拡張しておきます。
この機能拡張によりnanoFrameworkアプリのテンプレートが追加されます。
このテンプレートで作成したプロジェクトには、NuGetから自動的に「nanoFramework.CoreLibrary」ライブラリが追加されています。

「nanoFramework.M5StickCPlus」ライブラリを追加する

M5StickC Plusの画面などハードウェアにアクセスするために、M5StickC Plus用のライブラリを追加します。

ここまでが、M5StickC Plusを使うアプリ開発を行う上での共通の事前準備となります。

LEDを光らせる

M5StickC PlusでLEDを光らせるのは、本来であれば「M5StickCPlus.Led」の各種メソッドを使用すればいいのですが、残念ながら、2022/07/31現在の「nanoFramework.M5StickCPlus」ライブラリの「M5StickCPlus.Led」は正常に動作していないようで、M5StickCPlus.Ledがnullとなります。
GitHubをみると次のように定義されているので、これが正常に動作するようになれば、「M5StickCPlus.Led」も使えるようになるでしょう。
gist.github.com
それまでは、このLedの定義も自分のソースコードに取り込んでやりすごすのがいいでしょう。

ボタンをクリックしたらLEDの発光/消灯を切り替える

LEDの発光状態を逆転させるには、Toggleメソッドを使います
gist.github.com
SetUpの中で、「Led.Write(System.Device.Gpio.PinValue.High)」を実行しているのは、High値のときにLEDは消灯するからです。
www.youtube.com

ボタンをクリックしている間だけLEDを光らせる

では、ボタンをクリックしている間だけブザーを鳴らすようにしたいときはどうしたらよいでしょうか。
M5StickCPlus.ButtonM5.Pressイベントの処理をコメントアウトして、代わりにButtonDownイベントとButtonUpイベントの処理を追加します。
gist.github.com
www.youtube.com

次回

次回は電源周りについて色々調べてみたいと思います。

.NET nanoFrameworkでM5StickC Plusのブザーを鳴らしてみる

前回

hatsune.hatenablog.jp
前回は、.NET nanoFrameworkでの開発準備とM5StickC Plusでの簡単なアプリの実行まで実施しました。
今回は、M5StickC Plus本体に内蔵されているブザーを鳴らしてみたいと思います。

事前準備

Install the nanoFramework firmware

M5StickC PlusにはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5StickC PlusをPCに接続したら、USB Serial Portのポート番号を確認します。今回の環境では「COM6」が該当しました。

Flasherアプリケーションのインストール

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール

M5StickC Plusをターゲットにして「COM6」経由でnanoFrameworkをアップロードします。

nanoff --target M5StickCPlus --update --serialport COM6

Visual Studioの準備

Visual Studioを機能拡張する

Visual Studioには.NET nanoFramework Extensionをインストールして機能拡張しておきます。
この機能拡張によりnanoFrameworkアプリのテンプレートが追加されます。
このテンプレートで作成したプロジェクトには、NuGetから自動的に「nanoFramework.CoreLibrary」ライブラリが追加されています。

「nanoFramework.M5StickCPlus」ライブラリを追加する

M5StickC Plusの画面などハードウェアにアクセスするために、M5StickC Plus用のライブラリを追加します。

ここまでが、M5StickC Plusを使うアプリ開発を行う上での共通の事前準備となります。

ブザーを鳴らず

ボタンをクリックしたらブザーを鳴らす

ブザーを一定時間鳴らすには、PlayToneメソッドを使います
PlayToneメソッドには「周波数(Hz)」と「継続時間(ミリ秒)」の2つのパラメータがあります。
M5ボタンをクリックすると440Hz(ISOの国際標準ピッチ)の音を1秒間鳴らすには次のようなコード記述します。
gist.github.com
www.youtube.com

ボタンをクリックしている間だけブザーを鳴らす

では、ボタンをクリックしている間だけブザーを鳴らすようにしたいときはどうしたらよいでしょうか。
M5StickCPlus.ButtonM5.Pressイベントの処理をコメントアウトして、代わりにButtonDownイベントとButtonUpイベントの処理を追加します。
gist.github.com
www.youtube.com

次回

次回は本体LED関連についてを予定しています。

.NET nanoFrameworkでM5StickC Plusを使ってみる

今回は、.NET nanoFrameworkから、M5Stack Core 2と同じM5シリーズの1つであるM5StickC Plusを使ってみましょう。

M5StickC Plusとは

M5StickC Plusは、ESP32-PICO-D4を搭載し、赤外線、RTC(real-time clock)、マイクロフォン、LED、6軸IMU(Inertial Measurement Unit)、ボタン、PMIC(Power Management IC)、BluetoothWi-Fiを搭載したコンパクトなハードです。
www.switch-science.com

M5StickC Plusの外部接続

外部機器との接続用インターフェースとして次の3つが用意されています。

  • USB
  • PH2.0-4P
  • 2.54mm 8pin

ピン配置などは、M5StickC Plusの本体裏面にプリントされています。

USB

USB-Cが給電+シリアル接続用に用意されています。
USB接続した端末で開発環境が稼働していれば、このルートを使ってシリアル入出力を実現しています。

PH2.0-4P

PH2.0-4Pは、GROVE互換インターフェースのI2Cシリアルバス端子です。
GROVEは、Arduinoと容易に接続するためのインターフェースで、Seeed社から様々なGROVEシリーズのモジュール(拡張機器)が提供されています。
仕様が公開されていますので、Seeed社以外からも様々なモジュールが販売されています。
www.switch-science.com

IC2のピン配置を確認する

M5StickC Plusをみると、PH2.0-4Pのピン配置は、裏面を上にした状態で「GND」「5V」「G32」「G33」となっています。
GROVE互換インターフェースなので、G33=SCL、G32=SDAとなります。
つまり、同じGROVE互換インターフェースであるM5Stack Core 2のPORT.A.I2Cに接続できる「温度湿度環境センサ付きユニット」なども接続できます。

2.54mm 8pin

USB端子の対面には2.54mmのピンが刺さる端子が8個あります。端子の内容は次のようになっています。
[GND]
[5V出力]
[G26]
[G36/G25]
[G0]
[BAT]
[3V]
[5V入力]
2.54mmのサイズはブレッドボードなどと同一なのでジャンパワイヤーでブレッドボード接続して色々な回路と接続ができます。
www.switch-science.com

事前準備

それでは、.NET nanoFrameworkでM5StickC Plusを使ってみましょう。

.NET nanoFramework Extensionを追加

.NET nanoFrameworkのプロジェクトをVisual Studioで作成できるように、Visual Studioを拡張(機能追加)しましょう。
そのために使用する拡張機能が「.NET nanoFramework Extension」です。
marketplace.visualstudio.com
Visual Studio 2022を起動したら、[拡張機能]-[拡張機能の管理]メニューで管理ウィンドウを開いてから「nano」で検索して.NET nanoFramework Extensionを探し出して適用します。

Install the nanoFramework firmware

M5StickC PlusにはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5StickC PlusをPCに接続したら、USB Serial Portのポート番号を確認します。今回の環境では「COM6」が該当しました。

Flasherアプリケーションのインストール

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール

M5StickC Plusをターゲットにして「COM6」経由でnanoFrameworkをアップロードします。

nanoff --target M5StickCPlus --update --serialport COM6

正常に動作すると次のようなログが表示されます。
gist.github.com

M5StickC PlusでHelloWorld

M5StickC Plusアプリのプロジェクトを作成

.NET nanoFrameworkのテンプレートでプロジェクトを新規作成

機能拡張がうまくいくとVisual Studoの新規プロジェクト作成のテンプレートに「.NET nanoFramework」のテンプレートが追加されています。

まずは、「HelloWorld」というプロジェクト名で新規プロジェクトを作成して、M5StickC Plusの液晶画面に「Hello World」と表示するアプリを作ってみます。

Device ExplorerでM5StickC Plusを選択

プロジェクトが作成されたら、Device Explorerを開いてM5StickC Plusとの接続を確認します。
Device Explorerは、Visual Studioの「検索」機能から開くのが簡単です。

テンプレートの初期コードを実行

自動生成コードは「Debug.WriteLine("Hello from nanoFramework!");」が実行される簡単なコードなので、実行が成功するとイミディエイトウィンドウに「Hello from nanoFramework!」と表示されます。

M5StickC Plusの画面に「HelloWorld」

M5StickC Plus用のライブラリを追加

M5StickC Plusの画面などハードウェアにアクセスするために、M5StickC Plus用のライブラリを追加します。

初めてのM5StickC Plus C#プログラミング

M5StickC Plusの画面に文字を表示する簡単な方法は「nanoFramework.M5Stack.Console.WriteLine」メソッドを使う方法です。
Console.WriteLineと書くとSystem.Consoleと名前が重複するのでusingでConsoleはnanoFramework.M5Stack.Consoleのことであることを宣言してあります。
gist.github.com
M5Stack Core 2の時との違いは、クラスライブラリが相違点のほとんどを隠蔽しているので、InitializeScreenがM5StickCPlusクラスである点くらいです。

M5StickC Plusのボタンに反応するように拡張

起動して「HelloWorld」と表示されるだけでは味気ないので、M5StickC Plusについている2つのボタンをクリックしたら画面にボタンの種類を表示するようにしてみましょう。
M5StickC Plus用のライブラリでボタンクリックイベントは、M5ButtonとRightButtonのPressイベントとして取得できます。
gist.github.com

おわりに

M5Stackの特徴であるM-Busを使わないのであれば、M5StickC Plusは価格も安くて手軽に使えるデバイスです。
次回以降は、LEDやブザーなど、M5StickC Plus付属のインターフェースを使う方法について確認していく予定です。
hatsune.hatenablog.jp

M5Stackで.NET nanoFrameworkからAzure IoT Centralに繋いでみた

前回

前回は、M5Stack Core 2からAzure IoT Hubに取得したセンサー値を送信しました。
hatsune.hatenablog.jp


Azure IoT Hubは、デバイスからのセンサー値を安全に収集する目的のPaaSなので、収集したデータの蓄積や利用などは、他のAzureサービスを組み合わせるなど柔軟に構成を構築できます。
その一方で、手軽に集めたセンサー値をさくっと表示・管理したいと思ったときには、その柔軟な構成を組んでいかないといけないということになります。
そんなときにはPaaSではなくSaaSであるAzure IoT Centralアプリケーションを使うのはどうでしょうか。

Azure IoT Centralアプリケーションの作成

Azure IoT Centralアプリには、Data Explorerによる収集したデータの表示、ダッシュボードによる項目の監視など、IoTに必要な機能が備わっているので、「どのAzrueサービスをどう組み合わせてどう設定していけばいいのだろう」という自由度があるからこその検討ポイントに悩まずに済みます。
https://docs.microsoft.com/ja-jp/azure/iot-central/core/media/howto-create-analytics/analytics-ui.png

Azure Portalからの作成


project detail

Azure IoT Centralアプリを作成するときに、既存の様々なテンプレートでアプリを作成することができます。目的に合致するテンプレートがあるならば、それを使ってアプリを作成することがAzure IoT Centralアプリで成功するための近道です。
どんな設定項目があるかを説明しやすくするために、今回は、あえて「カスタムアプリケーション」のテンプレートを使います

Azure PortalでAzure IoT Centralの作成が終わったならば、これでAzure Portalでの操作は終わりです。以降は、作成したAzure IoT Centralアプリにサインインしての操作になります。

Azure IoT Central Portalからの作成

今回、Azure IoT Centalアプリの作成をAzure Portalから行いましたが、Azure IoT Central Portalからも行えます。
apps.azureiotcentral.com

料金プラン

大きな違いはAzure IoT Central Portalから作成するときは、7日間無料で使える「Free」が選べる点です。

マイアプリ

もちろん、どちらの方法で行った場合でもAzure IoT Central Portalの「マイアプリ」表示されるので、そこから作成したAzure IoT Centralアプリに行くこともできます。

Azure IoT Centralアプリケーションでの初期設定

Azure IoT Centralアプリのサイトに移動したら、さっそく、初期設定を開始しましょう。
カスタムアプリケーションのテンプレートから作成したときに、まず最初にやることは「デバイステンプレート」を作成することです。

バイステンプレートの作成


バイステンプレートとは、IoTデバイスからどのようなデータを取得するか、その項目を定義したテンプレートです。管理するIoTデバイスを追加するときに、このテンプレートを指定します

種類の指定


M5Stack Core 2を接続するためのテンプレートであれば、種類として「IoTデバイス」を選択して、「これはゲートウェイバイスです」にチェックを入れずに名前を入力して作成します。

モデルの作成

実際に収集するデータに関する情報はカスタム「モデル」の中に「機能」として定義します。

機能の指定

[機能の追加]を押して収集するデータ項目をモデルに追加していきます。

表示名を入れると自動的に名前(こちらは内部名)が決まりますが、表示名に日本語で「気温」と入れると名前には自動反映されないので、手動で名前を入れます。

機能名入力時の注意点

また、名前には日本語名は指定できません。指定すると形式が間違えていると表示されるので英語名をいれるようにしましょう。
なお「展開」すると単位も入れられるが、気圧の単位は「パスカル」か「キロパスカル」のみで残念ながら「ヘクトパスカル」は指定がなかった。
格納するセンサー値がすべて定義できたら「保存」をクリックして「機能」を「モデル」に保存します。

ビューの追加


取得したデータをどうみせるかは、「モデル」の中に「ビュー」として定義します。

規定のビューの追加

ビューを1から作成してもいいのですが、試しに「既定のビュー」を生成してみて、その内容からビュー定義の勘所をつかんみましょう。

既定のビューでは、「気温、湿度、気圧」が一緒になったものと3つそれぞれの領域の合計4つの領域が「overview」という名前のビューとして生成されます。

視覚化の変更

視覚化の変更によって、各領域の表示を決めていきます

3つの値が1つになった領域は折れ線グラフにします。残り3つの個別領域は最新値が表示されるようにしましょう。
もちろん、それ以外の表示構成でもよいでしょう。

バイステンプレートの公開

設定が終わったテンプレートは、「公開」して始めて使えるようになります。この公開は、自分の作ったAzure IoT Centralアプリに公開するという意味です。

バイスの作成

Azure IoT Centralアプリの[デバイス]-[新規]から接続するデバイスを作成します。

これでAzure IoT Centralアプリの準備は完了です。

M5Stck Core 2側の事前準備

センサーについて

M5Stack Core 2のPORT.A.I2C端子に接続して使用するENV-IIIユニットを使用します。

Install the nanoFramework firmware

M5Stackに使われているESP32にはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5Stack Core 2をPCに接続したら、デバイスマネージャーで「CP210x」が接続されているポート番号を確認します。今回の環境では「COM4」が該当しました。

Flasherアプリケーションのインストール(インストール済の場合は不要)

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール(インストール済の場合は不要)

今回使用するM5Stackは、M5Stack Core 2になります。
このM5Stack Core 2をターゲットにして「COM4」経由でnanoFrameworkをアップロードします。

nanoff --target M5Core2 --update --serialport COM4

Device Explorerでの接続確認

nanoFrameworkファームウェアをインストールしたあとにVisual Studioを起動してDevice Explorerをみると、「M5Core2 @ COM4」と表示されるようになります。

nanoFrameworkファームウェアは、インストールしたあとにnanoFramework以外の別イメージをM5Stack Core 2に転送(Burn)してしまうと消えてしまうので、Device Explorerに表示がないような場合は、再度、インストールをしてからVisual Studioを起動すれば表示されるようになります。

Visual Studioの準備

Visual Studioを機能拡張する

Visual Studioには.NET nanoFramework Extensionをインストールして機能拡張しておきます。
この機能拡張によりnanoFrameworkアプリのテンプレートが追加されます。
このテンプレートで作成したプロジェクトには、NuGetから自動的に「nanoFramework.CoreLibrary」ライブラリが追加されています。

「nanoFramework.M5Core2」ライブラリを追加する

今回は、M5Stack Core 2を使うので、「nanoFramework.M5Core2」ライブラリを手動でNuGetから追加します。

ここまでが、M5Stack Core 2を使うアプリ開発を行う上での共通の事前準備となります。

Azure IoT Centralにデータ送信する

基本的に、IoT Hubにデータ送信する場合と、IoT Centralアプリにデータ送信する場合では、接続時のコードの差し替えで動作します。

バイスからの接続に必要な情報の入手


バイスから接続するのに必要な情報は、IoT Centralアプリの画面にあるデバイスのところの「接続」から得られます。

が必要な情報です。

接続コードの変更ポイント

基本的に、IoT Hubにデータ送信する場合と、IoT Centralアプリにデータ送信する場合では、接続時のコードの差し替えで動作します。

Azure IoT Hubとの接続コード

まずは、元となるAzure IoT Hubとの接続部分のコードをみてみましょう。
gist.github.com
HostNameは、IoT Hubを有効にしたときに指定したホスト名になります。

Azure IoT Centralとの接続コード

この接続コードを次のように変更します。
Azure IoT Centralを利用するには、Device Provisioning Service (DPS) を使用してデバイスを登録して、そのうえで、Azure IoT Centralに繋ぐことになります。
DSPのURLは下記の公式サイトによれば「global.azure-devices-provisioning.net」とのことです。
docs.microsoft.com
よって、コードはこのようになります。
gist.github.com
ポイントはDSPから接続先URLを得てからDeviceClientでそこに繋ぐという2段階になる点です。

Azure IoT Centralの接続先とは

DSPからの戻り値は、Azure IoT CentralアプリのURLなのでしょうか。
ブレイクポイントを設定して実行時の「myDevice.AssignedHub」の値を確認してみると

"iotc-hogehogehogehoge.azure-devices.net"

とのことでした(一部伏字)ので、Azure IoT Centralのデバイスとの通信にはAzure IoT Hubが採用されていることが分かります。
確かにこれであれば、接続コードだけ対応すれば、そのまま動くというのもうなずけますね。

実行結果

M5Stack Core 2にアプリをデプロイしたら、Azure Iot Centralアプリでデバイスを選んでビューを表示してみましょう。

簡単にセンサー値が表示できましたね。

次回

次回は少しセンサーから離れて、Azure Cognitive ServicesのようなAzure AIをM5Stack Core 2から使う方法をご紹介できたらと考えています。