SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET nanoFrameworkとESP32でIoTプログラミング

C#とマイコンでIoTプログラミング! .NET nanoFrameworkとESP32の基本を解説

.NET nanoFrameworkとESP32でIoTプログラミング 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

開発環境の準備をしよう

 次に、開発環境を準備しましょう。開発を行うには、Visual Studioでの環境準備と、デバイス側の準備が必要です。

拡張機能のインストール

 Visual Studio 2022で開発を行うために、まずは、Visual Studioに、nanoFramework拡張機能を追加します。

 Visual Studioを起動し、最初のスタートウィンドウで[コードなしで続行]を選択します。次に、メインメニューから[拡張機能]ー[拡張機能の管理]を選択し、[拡張機能の管理]ダイアログを開きます。左側の[オンラインフィード] カテゴリを選択して、検索ボックスに「nanoFramework」と入力します。

 インストールボタンをクリックした後、Visual Studioをいったん終了して、再度起動します。起動時に、拡張機能がインストールされます。

拡張機能の管理
拡張機能の管理

.NET nanoFrameworkファームウェアの転送

 次は、ESP32マイコンに、.NET nanoFramework環境(ファームウェア)を組み込みましょう。PCを使って、USB経由で使用するESP32開発ボードに.NET nanoFrameworkが含まれるファームウェアを転送します。すでにMicroPythonなどのファームウェアを転送されている場合、.NET nanoFrameworkの環境に置き換わります。ファームウェア(firmware)とは、一般に、デバイスに内蔵されたソフトのことで、ハードウェアに密接に結びつき、頻繁には書き換えることのない媒体(ROMやフラッシュROM)に書き込まれたものです。

COMポート

 nanoFrameworkファームウェアの転送をするには、利用するESP32開発ボードを接続したPCのCOMポート(USBシリアルのもの)を確認しておく必要があります。開発用PCからは、USBシリアル通信でプログラムの書き込みなどを行います。

 PCにESP32開発ボードをUSBで接続すると、Windowsの[デバイス マネージャ]の[ポート(COM と LPT)]に、接続されているデバイスのCOMポートが見つかるはずです。

comポートの確認
comポートの確認

 Windows 10や11のPCでは、ESP32開発ボードをUSB接続すれば、多くの場合自動でドライバがインストールされます。開発ボードによっては、別途USBシリアルドライバーのインストールが必要になるかもしれませんが、その際は、開発ボードの説明書などに従ってドライバをインストールしてください。前述した開発ボードでは、自動でドライバがインストールされて、COMポートが認識されました。

 ちなみに、ESP32開発ボードとPC側のUSB環境とは、やや相性があるようです。筆者の環境のPCでは、USBケーブルで直接PCに接続してもうまく認識されず、USBハブを経由すると認識されるものがありました。

nanoffツール

 .NET nanoFrameworkのファームウェアを転送するには、nanoff(nano Firmware Flasher)というコマンドラインツールを使用します。

 nanoffツールのインストールは、コマンドプロンプトやVisual Studioのターミナルから、次のようにdotnetコマンドを用います。

> dotnet tool install -g nanoff

 コマンド実行後しばらくすると、「正常にインストールされました」と出力されるはずです。インストールが終わったら、開発ボードのデバイスにファームウェアの転送を行います。転送するファームウェアのイメージファイルは、自動でダウンロードされます。

> nanoff --platform esp32 --serialport COMXX --update
nanoffツールのインストールとファームウェアの転送
nanoffツールのインストールとファームウェアの転送

 COMXXには、先ほど確認したCOM5などの実際のポート番号を指定してください。platformオプションではデバイス名を指定します。指定したデバイスに適した標準的なファームウェアが転送されます。platformオプションではなく、targetオプションを使うと、より個別にファームウェアを指定することもできます。

> nanoff --target esp32 --serialport COMXX --update

 targetオプションで利用可能なファームウェアを表示するには、listtargetsオプションを用います。

> nanoff --listtargets
targetの一覧表示
targetの一覧表示

 例えば、XIAO ESP32C3のファームウェアを転送する場合、次のように指定します。

> nanoff --target XIAO_ESP32C3 --serialport COM5 --update
XIAO_ESP32C3ファームウェア
XIAO_ESP32C3ファームウェア

 また、ESP32-S3でBluetoothに対応したファームウェアなら、次のように指定します(BLEは、Bluetoothに対応するファームウェアの意味です)。

> nanoff --target ESP32_S3_BLE --serialport COM5 --update

 ESP32の開発で利用するnanoffツールの主なオプションは、次のとおりです。

nanoffツールの主なオプション
オプション 概要
--serialport 書き込むシリアルポートの指定
--baud シリアル通信の転送速度(デフォルト:1500000)
--target ターゲットの指定
--platform プラットフォームの指定。esp32、stm32、cc13x2、gg11
--fwversion ファームウェアのバージョンを指定して書き込む
--update アップデートの指定
--reset デバイスのリセット
--listtargets 利用可能なターゲットの一覧表示
--listports 利用可能なCOMポートの一覧表示
--devicedetails 接続している.NET nanoFrameworkデバイスの詳細表示
--help オプションの一覧表示
--version コマンドのバージョン表示

 ファームウェアが転送されると、ESP32はリセットされてnanoCLRが実行されます。すると、Visual StudioのDevice Exploorerで認識されるようになります。Device Exploorerを表示するには、Visual Studioの[表示]メニューから[その他のウィンドウ]ー[Device Explorer]を選択します。

 デバイスが認識されると、Device Exploorerには、COMポート名とファームウェア名が表示されます。

Device Exploorerの表示
Device Exploorerの表示

ブートモードの切替

 ESP32開発ボードでは、ファームウェアを転送する場合、ESP32のブートモードを、内蔵のフラッシュROMにプログラムを書き込むときのモードに切り替える必要があります。通常は、書き込み済みのプログラムを実行するモードです。書き込みモードになっていないと転送時にエラーとなり、次のようなメッセージが表示されます。

Can't connect to ESP32 bootloader. Try to put the board in bootloader manually.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html.

E4000

 ただ開発ボードやPCによっては、ブートモードの切り替えが自動で行われ、特に意識する必要のない場合もあります。筆者の手元の、Freenove ESP32-WROVER Boardでは、自動で切り替わりました。一方のESP32-WROOM-32の開発ボードでは、自動で切り替わらず、ファームウェアを転送する際は、転送が完了するまで、開発ボードのブートスイッチをずっと押しておく必要がありました。

 またXIAOシリーズのESP32S3では、ブートスイッチを押しながらリセットスイッチを押すと、ESP32が再起動してブートモードへ切り替わります。その際、COMポート番号も変わりますので、新しいCOMポート番号を指定して、ファームウェアを転送します。

ブートモード自動切替の改造

 ブートスイッチを押しっぱなしにするのは、やや面倒ですので、筆者の開発ボードは、自動で切り替わる改造を行いました。改造といっても、コンデンサをひとつ追加するだけです。GNDとEN端子(リセットボタンの端子)間に、0.1~数㎌程度のコンデンサを追加します。これでモードが自動で切り替わります。

コンデンサの追加
コンデンサの追加

まとめ

 今回は、ESP32に.NET nanoFrameworkのファームウェアを転送するところまでを解説しました。次回は、基本的なプログラムの作成を行う予定です。

参考文献

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
.NET nanoFrameworkとESP32でIoTプログラミング連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18591 2023/11/09 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング