はつねの日記

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

.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