対象読者
IoTに興味があり、C#と電子工作の基本的な知識がある方を対象とします。C#や電子工作のごく初歩的な説明は割愛していますので、「C#ではじめるラズパイIoTプログラミング」の記事なども併せて参照してください。
はじめに
連載第1回の今回は、.NET nanoFrameworkの概要と、ESP32というマイコンモジュールについて解説します。
ESP32マイコンとは?
.NET nanoFrameworkを説明する前に、そもそもESP32とは何なのかを説明しておきましょう。CodeZineの読者には、Arduinoやラズパイ(Raspberry Pi)は聞いたことがあるが、ESP32は知らないという人も多いのではないでしょうか。
概要
ESP32は、上海に拠点を置くEspressif Systems社が開発した、SoC(System on a Chip)のマイクロコントローラ(マイコン)です。SoCとは、1枚の基板(チップ)上にCPUやシステムの動作に必要な周辺機能を集積したものです。
一般には、ESP32というと、後述するESP32開発ボードを指すことが多いかもしれません。ただ実は、ESP32は、いくつかの意味で総称的に使われています。主には、次の3つを指します。
- SoC単体(EESP32-D0WDなど)
- SoCを集積したモジュール(ESP32-WROOM-32など)
- モジュールを搭載した開発ボード(ESP32-DevKitCなど)
それぞれ似たような型番があり、混乱しそうになりますが、これら3つは、次のような構造になっています。
本連載では、単にESP32と書いた場合は、SoC単体のESP32チップの意味で使うことにします。
ESP32の特徴
ESP32の特徴を以下にまとめます。
- 低コスト
- 低消費電力
- デュアルコアまたはシングルコアのXtensa/RISC-Vマイクロプロセッサ
- Wi-Fi 802.11b/g/n/acと、Bluetooth 4.2/5.0に対応
ESP32は、Wi-FiとBluetoothの両方に対応し、豊富な周辺回路を内蔵しながら、低コストなのが特徴です。ESP32のCPUは、その名の通り、Xtensaという32ビットのマイクロプロセッサ(デュアルコア、一部製品はRISC-Vベースのシングルコア)で、最大クロックは240MHzとなります。
なお、ESP32はマイコンですので、ラズパイ(Raspberry Pi Picoは除く)のような汎用OSは動作しません。ラズパイは、LinuxのPCと同じような感覚で操作できましたが、ESP32では、大きく異なります。この連載を通じて、マイコン開発を体感してみてください。
ESP32チップ
ESP32チップには、さらに次のようなシリーズがあります。
ESP32シリーズ
ESP32シリーズは、ESP32の前身となるESP8266(Wi-Fiのみ対応)に、Bluetoothを対応させたものです。2016年に販売が開始され、今も利用されています。現行のバージョンは、「ESP32-D0WD-V3」などです。
ESP32-Sシリーズ
ESP32-Sは、ESP32シリーズの後継とも言えるSoCです。CPUコアをXtensa LX6からLX7にパワーアップしたシリーズで、処理能力が向上しています。また、Bluetoothのバージョンが、4.2から5になっています。現行のバージョンは、「ESP32-S3」などです。
ESP32-Cシリーズ
ESP32-Cシリーズは、CPUコアをRISC-Vベースのものに変更したもので、Bluetoothのバージョンは5です。シングルコアで、従来より省電力になっています。
ESP32モジュール
ESP32モジュールは、SoCのESP32チップに、フラッシュメモリや、Wi-Fi/Bluetoothに対応する回路やアンテナなどをひとつに集積したものです。
ESP32-WROOM-32シリーズが、もっとも標準的なモジュールです。またESP32-WROVERシリーズは、PSRAM(擬似SRAM)と呼ばれる外部メモリを搭載したモジュールです。
ESP32開発ボード
ESP32チップ本体は、単なるSoCで、そのSoCを内蔵したESP32モジュールは、動作に必要な最低限の回路やパーツをまとめたものにすぎません。開発を行うには、電源回路や開発機器に接続するためのインターフェイス(回路)が必要です。ESP32開発ボードとは、そのような開発用インターフェイスとモジュールを実装したボード(基板)で、そのままPCとUSBで接続できるようになっています。また、あらかじめピンヘッダがハンダ付けされているものが多く、すぐにブレッドボードで利用することができます。
ESP32を搭載した開発ボードは、さまざまなベンダーから発売されています。筆者の手元には、比較的最近発売された以下の開発ボードがあります。いずれも、PCとの接続は、USB Type-Cで行い、別途電源は必要ありません。またモジュールには技適マークがついていますので、Wi-FiやBluetoothの使用も安心です。
Freenove ESP32-WROVER Board
Freenove ESP32-WROVER Boardは、エレクトロニクス向けの教育用キットなどを数多く製造しているFreenove社の開発ボードで、ESP32-WROVER-Eというモジュールを搭載しています。オンボードのカメラが付属し、PSRAM(外部メモリ)が内蔵されているのが特徴です。
ESP32-WROOM-32を実装した開発ボード(互換品)
ESP32の開発元であるEspressif Systems社から販売されている、ESP32-WROOM-32を実装したESP32-DevKitCという開発ボードが、開発ボードの基本モデルとなっています。そのボードの互換品や類似品を、さまざまなメーカーが製造しています。Amazonでも、そのようなESP32開発ボードが数多く販売されています。中には、粗悪品もあるようなので、購入時はレビューなどでよく確認しましょう。
Seeed Studio XIAO ESP32S3
XIAO ESP32S3は、Seeed Studio社のESP32-S3R8チップを搭載した親指サイズ(XIAOシリーズ)の超小型マイコンボードです。Seeed Studio社は、多くのIoT製品の製造販売を行っているメーカーです。XIAOシリーズとは、18mmx21mmの小さな基板に、マイクロコントローラなどを搭載した開発ボードのラインナップです。XIAO ESP32S3では、上記2つの開発ボードとは異なり、Wi-Fi/Bluetoothのアンテナは基板上にはなく、外部アンテナを接続する形となっています。
Seeed Studio XIAO ESP32C3
XIAO ESP32C3は、ESP32C3と同様、XIAOシリーズのマイコンで、Seeed Studio社のESP32-C3チップを搭載しています。また、外部アンテナ仕様も同じです
M5ack
ESP32は知らなくても、M5Stackなら聞いたことがある人もいるかもしれません。M5Stack(エムファイブスタック)は、ESP32を利用したマイコンモジュールで、中国深センに拠点を持つスタートアップ企業が開発したものです。約5cm四方のケースの中に、カラー液晶ディスプレイや、プッシュボタン、スピーカなどの周辺部品が組み込まれています。さまざまな拡張モジュールがあり、また拡張モジュールは積み重ねるように接続するだけで利用でき、配線する必要がありません。IoTデバイスを手軽に試すことができます。こちらは本連載では、扱いません。