LoginSignup
4
3

More than 1 year has passed since last update.

.NET nanoFrameworkでマイコンプログラミング(温度センサー SHT30)

Posted at

前回 .NET nanoFrameworkでの開発環境を構築しました。
今回はデバイスに温湿度センサーを接続してみます。

使用するハードウェア

・M5ATOM Matrix
・Unit EnvIII

使用するソフトウェア

・Visual Studio 2019
・ファームウェア ESP32_PICO 1.7.3-preview.124

プログラム

・VisualStudioを起動して、新しいプロジェクトの作成をクリックします。
01.PNG

・Blank Application (nanoFramework)を選択し、次へをクリックします。
02.PNG

・プロジェクト名(任意)を入力し、作成をクリックします。
03.PNG

・初めにプログラム内で使用するパッケージ(Arduinoではライブラリです)をインストールします。ツール > Nugetパッケージマネージャー > ソリューションのNugetパッケージの管理をクリックします。
04.PNG

・検索BOXにESP32と入力すると下部リストに nanoFramework.Hardware.Esp32が表示されるのでクリックします。右側のプロジェクト名にチェックを入れてインストールをクリックします。
05.PNG

・パッケージの依存関係がチェックされて追加パッケージが表示されます。そのままOKをクリックします。
06.PNG

・再びパッケージ参照画面の検索ボックスにsht3と入力すると、リストに nanoFramework.Iot.Device.Sht3xと表示されるのでクリックします。先ほどと同じようにプロジェクト名にチェックを入れてインストールをクリックします。
07.PNG

・依存関係のチェックが行われます。OKをクリックしてインストールを完了します。
08.PNG

・次にプログラムを書いていきます。Program.csを選択します。
09.PNG

・4行目より後に次の3行を追加します。

using nanoFramework.Hardware.Esp32;
using System.Device.I2c;
using Iot.Device.Sht3x;

・メインプロシージャ内に最初からあるコードを削除します。
10.PNG

・メインプロシージャ内に次のコードを追加します。

//I2Cで使うPinを設定
Configuration.SetPinFunction(26, DeviceFunction.I2C1_DATA);
Configuration.SetPinFunction(32, DeviceFunction.I2C1_CLOCK);

//センサーのアドレスを設定
I2cConnectionSettings settings = new I2cConnectionSettings(1, 0x44);

//センサーオブジェクトの作成
using I2cDevice device = I2cDevice.Create(settings);
using Sht3x sensor = new(device);

while (true)
    {
        //センサーデータの取得
        double tmp = sensor.Temperature.DegreesCelsius;
        double hum = sensor.Humidity.Percent;

        //デバッグウィンドウに出力
        Debug.Write("tmp : ");
        Debug.WriteLine(tmp.ToString("F2"));
        Debug.Write("hum : ");
        Debug.WriteLine(hum.ToString("F2"));
        Debug.WriteLine(" ");

        Thread.Sleep(10000);
    }

・入力ができたらプログラムを実行してみましょう。画面上部の ▶.NET nanoFramework Device をクリックします。
11.PNG

・もし配置エラーになるようでしたら一度PCからデバイスを外し、Device Explorerを表示してから デバイスをもう一度接続してください。自動的にデバイスが認識されます。その後実行をしてみましょう。

・エラーが出なければ出力ウィンドウに温度と湿度が10秒ごとに表示されます。
12.PNG

以上でプログラムは完成です。

今回は温度センサーを使ってみましたが、既に .NET nanoFramework 向けに各種センサーのパッケージが用意されています。メジャーなセンサー類は大体そろっています。
興味のある方はこちらを参照してみてください。サンプルプログラムも含まれているのでぜひ参考にしてください。

最後に今回のコード全体を載せておきます。

Program.cs
using System;
using System.Diagnostics;
using System.Threading;

//新たに追加
using nanoFramework.Hardware.Esp32; //デバイス
using System.Device.I2c;            //I2C
using Iot.Device.Sht3x;             //センサー
//

namespace NF_SHT30
{
    public class Program
    {
        public static void Main()
        {
            //I2Cで使うPinを設定
            Configuration.SetPinFunction(26, DeviceFunction.I2C1_DATA);                 //SDAはGPIO26に割り当て
            Configuration.SetPinFunction(32, DeviceFunction.I2C1_CLOCK);                //SCLはGPIO32に割り当て

            //センサーのアドレスを設定
            I2cConnectionSettings settings = new I2cConnectionSettings(1, 0x44);        //SHT30のアドレスは0x44、I2Cポートは1

            //センサーオブジェクトの作成
            using I2cDevice device = I2cDevice.Create(settings);
            using Sht3x sensor = new(device);

            while (true)
            {
                //センサーデータの取得
                double tmp = sensor.Temperature.DegreesCelsius;                         //温度を摂氏で取得
                double hum = sensor.Humidity.Percent;                                   //湿度をパーセントで取得

                //デバッグウィンドウに出力
                Debug.Write("tmp : ");
                Debug.WriteLine(tmp.ToString("F2"));
                Debug.Write("hum : ");
                Debug.WriteLine(hum.ToString("F2"));
                Debug.WriteLine(" ");

                Thread.Sleep(10000);                                                    //10秒待機

            }
        }
    }
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3