C#でIoTプログラミング on ESP32 #0

RaspberryPiでは.NETを導入することでC#プログラミングが行えます。
マイコンでは.NET nanoFrameworkを使うとC#プログラムを作ることができるようになります。.NET nanoFrameworkでは実行用ファームウェアと開発用パッケージを用いてC#プログラミングを行います。

今回はESP32S3をターゲットとして.NET nanoFrameworkでの開発環境を構築します。

## ハードウェア
・Freenove ESP32-S3-WROOM Board or ESP32-S3-DevKitC
　Espressif製とFreenove製ではPin数が違うぐらいです。筆者はFreenove製CAM付バージョンを使っています。これ以外にもSeeed製XiaoESP32S3もありますが、Pin数が少なくなります。

## ソフトウェア
・VisualStudio2022 or VisualStudio Code
・.NET SDK 8.0 ~

## 環境構築
説明はWindowsマシンとVisualStudio2022で行います。VisualStudio2022と.NET SDKのインストールは済ませておいてください。

・VisualStudioを起動して、メニューの「機能拡張」>「機能拡張の管理」を選択し、機能拡張マネージャーを開きます。
・左上の検索窓に「nano」と入力し、.NET nanoFramework Extensionを探してインストールします。インストールを完了するために一旦VisualStudioを終了してください。
![VS拡張.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/a7ec3a25-8f16-fc7d-15d6-548754a18043.png)
・VSIX Installerが起動して、拡張機能のインストールを確認するので「Modify]をクリックします。
![modify.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/c30a5a44-b9d8-7f49-ba7e-e368ed6c55ee.png)


・次にデバイスへファームウェアを書き込むツールをインストールします。ターミナルを起動して、次のコマンドを実行します。
```console
> dotnet tool install -g nanoff
```

![espp32s3-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/3c527b3c-3ac9-5649-4dbc-0c3af4dd7acf.png)

・デバイスをPCに接続します。デバイスマネージャーを開いてデバイスのCOMポートを確認しましょう。

![esp32s3-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/3672c64e-7206-23b6-66d6-6ebf994170b0.png)


・次にデバイスへファームウェアを書き込みます。デバイス別に数種類ファームウェアがあるのですが今回はBLE対応ファームウェアを使用したいと思います。ターミナル上で次のコマンドを入力してください。

```console
> nanoff --target ESP32_S3_BLE --serialport COM8 --update
```

![esp32s3-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/c910faed-dda2-bda0-4e33-54695896dd5d.png)

・一旦デバイスをPCから外し、再び接続しなおします。

・VisualStudio2022を起動し、新しいプロジェクトの新規作成をクリックします。

![esp32s3-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/5e6eca04-b2e0-ca38-e9fe-0d3cd38622dd.png)

・テンプレートの検索で言語をC＃、プラットフォームをnanoFrameworkとして検索します。見つかったリストのうち「Blank Application(.NET nanoFramework)」を選択してから「次へ」をクリックします。

![esp32s3-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/a85b239e-98ae-c0c7-2f46-d291a7e460f1.png)

・プロジェクト名を入力してから「作成」をクリックします。

![esp32s3-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/1d7f1e74-6885-48ca-3042-d5f9bffbb8c5.png)

・VisualStudio2022のメニューから「表示」>「その他のウィンドウ」>「Device Explorer」を選択します。

![esp32s3-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/fc776e6b-ed3f-408f-abac-162875ff53b7.png)

・Device Explorer内Devicesの下に接続したデバイスが表示されているのを確認してください。もし、表示がない場合はデバイスの接続状況をもう一度確認してみてください。
　USBポートが2つあるボードでは接続するポートを変更すると表示されることがあります。

 ![esp32s3-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/76dc8046-a78a-c6bf-5432-1c9092642600.png)

・デバイスの接続が確認出来たらプロジェクトをデバッグしてみましょう。
　メニューの緑色三角形ボタン（デバッグの開始）をクリックするとデバッグが開始されます。

 ![esp32s3-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/358e2f60-e58c-029c-d232-e088ab33a7aa.png)

・デバッグを開始してからしばらくすると、出力ウィンドウに「Hello from nanoFramework!」と表示されます。

![esp32s3-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62606/7cff8fbb-351a-cf6e-dfb2-fc8ebffe5bcd.png)

・最後にメニューの赤色四角ボタン（デバッグの停止）をクリックしてデバッグを終了しておきます。

以上で nanoFrameworkの開発環境が整いました。

次回からは実際にプログラミングを行います。