激安マイコン基板ESP32 C3 Super Miniを使ってみました。
いくつかの種類があり、それぞれの違いを探しながら基板を試してみます。
記事の概要
ESP32-C3が搭載された小型のマイコン基板Super Miniについて複数の基板を試した内容です。
基板ごとの違いを主に、使用した経験での信号上の注意点なども記載しました。
ESP32C3 Super Mini
簡単紹介
小型で激安マイコン基板のSuper MiniにESP32-C3が搭載されたモデルがあります。
ここではESP32-C3についての説明は省略して基板の個体差について紹介します。
※すべて技適が無いため、当サイトでは無線機能は使用しません。

※表記
品名が定かではないので、当記事では以下の名称にします。
画像左から
ESP32 C3 Super Mini(K1)
ESP32 C3 Super Mini(K2)
ESP32 C3 Super Mini(K3)
ESP32 C3 PLUS(R1)
ESP32-C3 PRO MINI(B1)

◆入手
Ali Expressではすべて\350~\500/個(送料込み)が目安で、まとめ買いで送料の節約も期待できます。
AmazonでもESP32 C3 Super Mini(K2)は扱っているようです。
◆関連記事
RP2040搭載の小型で安価なRP2040-ZERO互換基板の記事
ESP32C3搭載、技適マーク付きで無線が使える小型基板 XIAO ESP32C3の記事
ピン配置
ESP32 C3 Super Mini(K1)

ESP32 C3 Super Mini(K2)

ESP32 C3 Super Mini(K3)

ESP32 C3 PLUS(R1)

ESP32-C3 PRO MINI(B1)

外観
◆ESP32 C3 Super Mini(K1)

◆ESP32 C3 Super Mini(K2)

◆ESP32 C3 Super Mini(K3)

◆ESP32-C3 PLUS(R1)

◆ESP32-C3 PRO MINI(B1)

使ってみた
◆開発
Arduino環境で開発を行います。
これまでに紹介したESP32C3搭載基板XIAO ESP32C3と同じ開発ができます。
使用するボードライブラリに「ESP32C3 Dev Module」を使用するため、GPIOのマクロ定義にD(x)が使えません。
◆差異比較(ESP32C3 SuperMini)
外観上の色、サイズ、厚さ、無線関係は省略します。
差異としてインパクトのあると感じたものから並べます。
ピン配置
K1のみピン配置が違います。
基板差異の中では最もインパクトのある差異と感じます。
LED
全ての基板にユーザLEDが実装されていますが、実装位置と色、また点灯させるための信号がNegativeかPositiveかの違いがあります。
くわしくはこちらの結果に掲載しています。

ESP32-C3 PLUS(R1)には唯一RGB LED(WS2812)が実装されています。
RGB LEDのDIN信号とユーザLEDのAnodeピンと同じGPIOを使っていますが、RGB LEDを使うとユーザLEDは使用できなくなりました。
BOOTボタン、RESETボタン
K1のみ取り付け位置が違います。
個人的にはボタンを押すときにUSBに指が当たらないのでK1が一番使いやすいと感じます。
外観&USBコネクタ
中央(K3)はUSBTypeCコネクタの形状が違いますが、挿抜感に差は感じません。

まとめ
5種比べてみました。
個人的にはESP32 C3 SuperMini(k1)が使い勝手が良いと感じました。
・ボタンが押しやすい。
・GPIOの並びが覚えやすい。
入手性と価格ではESP32 C3 SuperMini(k2)です。(主観)
入手性と価格は変化があるので、ESP32 C3 SuperMini(k1)以外の4基板はほとんど差異が無いので置き換えのしやすさはあります。
全ての基板技適が無いのが残念です。
準備
Arduino環境の作成
◆開発環境
当記事ではArduino環境を使って開発します。
Arduino環境の準備はこちらの記事で紹介しています。
◆ボードライブラリ
Arduino IDEでESP32 C3を開発するために、ESP32ボードライブラリをインストールします。
Super Mini ESP32 C3に専用ボードライブラリが見当たらないため、「ESP32C3 Dev Module」を使います。
ボードマネージャのURL | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json |
検索 | ESP |
ボードライブラリ | esp32 by Espressif Systems バージョン x.x.x※ |
選択するボード | ツール > ボード > esp32 > ESP32C3 Dev Module |
◆モジュールライブラリ
I2CのサンプルではSSD1306 OLED、SPIのサンプルではILI9341を使用します。
サンプルやモジュールを使用しない場合はインストール不要です。
SSD1306
ライブラリ名 | 検索 | 確認時のバージョン |
---|---|---|
Adafruit SSD1306 by Adafruit | SSD1306 | 2.5.11 |
Adafruit GFX Library by Adafruit | GFX | 1.11.10 |
ILI9341
ライブラリ名 | 検索 | 確認時のバージョン |
---|---|---|
Adafruit ILI9341 by Adafruit | ILI9341 | 1.6.1 |
Adafruit GFX Library by Adafruit | GFX | 1.11.10 |
スケッチ
ユーザLED
説明
ボード上のユーザLEDを点灯させます。
ボードLEDはGPIO8で制御しますが、基板によってPositive/Negativeが違います。
スケッチはLowの時間を長くHighの時間を短く差をつけることで、どちらがPositiveでNegativeか判断できるようにしています。
点灯時間が長いほうがNegative、点灯時間が短いほうがPositiveです。
Positive : HighでLEDが点灯
・ESP32 C3 PLUS(R1) – 青
Negative : LowでLEDが点灯
・ESP32 C3 Super Mini(K1) – 青
・ESP32 C3 Super Mini(K2) – 青
・ESP32 C3 Super Mini(K3) – 緑
・ESP32-C3 PRO MINI(B1) – 青
配線
配線不要
スケッチ
#define LED_PIN (8)
void setup()
{
pinMode(LED_PIN, OUTPUT);
while(1)
{
digitalWrite(LED_PIN, LOW);
delay(500);
digitalWrite(LED_PIN, HIGH);
delay(100);
}
}
void loop()
{
}
結果
各ボードにスケッチを書き込みLEDを点灯させました。
LEDの点灯にはNegativeとPositiveの基板があり、スケッチのウエイトにより点灯時間が違います。
画像は点灯時の状態です。
基板上の赤の点灯は電源LEDです。

LEDを点灯させるためにGPIO8のLOW/HIGH制御をします。
ピンヘッダ側にも同じ信号がでているので、GPIO8を使用する場合には配慮が必要です。
画像はGPIO8の信号をオシロスコープでモニタした様子です。

RGB LED(WS2812)
説明
ESP32 C3 PLUS(R1)にはWS2812が実装されています。
ボード上のRGB LED(WS2812)を点灯させます。
発色を赤->緑->黄->青->紫->水->白の順に点灯させます。
配線
配線不要
スケッチ
#include <Adafruit_NeoPixel.h>
#define DIN_PIN (8)
#define LED_COUNT (1)
#define WAIT_MS (1000)
#define BRIGHTNESS (64)
Adafruit_NeoPixel pixels(LED_COUNT, DIN_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pixels.begin();
}
void loop()
{
const uint32_t tblCol[] = {
pixels.Color(BRIGHTNESS, 0, 0),
pixels.Color(0, BRIGHTNESS, 0),
pixels.Color(BRIGHTNESS, BRIGHTNESS, 0),
pixels.Color(0, 0, BRIGHTNESS),
pixels.Color(BRIGHTNESS, 0, BRIGHTNESS),
pixels.Color(0, BRIGHTNESS, BRIGHTNESS),
pixels.Color(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS),
};
int32_t t = sizeof(tblCol) / sizeof(uint32_t);
pixels.clear();
while(1)
{
for(int32_t i = 0; i < t; i ++)
{
pixels.setPixelColor(0, tblCol[i]);
pixels.show();
delay(WAIT_MS);
}
}
}
結果
RGB LEDがカラフルに点灯しました。
画像は色変化しているうちの1シーンです。
RGB LEDはGPIO8を使用しているので、「ユーザLED」のようにGPIO8の出力をオシロスコープで確認しましたが信号は出ていませんでした。

試しに以下スケッチの修正をしました。
WS2812の制御と一緒にユーザLEDの点滅処理を加えたものです。
GPIO8が信号がなく、ユーザLEDの点滅もありませんでした。
RGB LED(WS2812)を使い始めるとGPIO8は使用できなくなりました。
(別のスケッチを書きなおすと使用することができます)
pinMode(8, OUTPUT);
while(1)
{
for(int32_t i = 0; i < t; i ++)
{
pixels.setPixelColor(0, tblCol[i]);
pixels.show();
digitalWrite(8, i % 2);
delay(WAIT_MS);
}
}
画像左はRGB LED(WS2821)を使用していない場合、右はRGB LED(WS2812)を使用した場合の波形です。

I2C(SSD1306)
説明
I2Cを使いOLED(SSD1306)の表示制御をします。
制御内容は簡単なテキスト表示です。
デフォルトのI2Cピンを使い、同じスケッチで動作することを確認します。
ESP32C3ではI2Cの信号線は任意のピンに設定することができます。
このサンプルスケッチではloop()で同じ描画を何度も繰り返しています。
I2Cピンのデフォルトで設定されているSDAはGPIO8 でユーザLEDと重複しています。
何度も信号を送ることでユーザLEDの点灯点滅に影響があるか確認します。
配線
・ESP32 C3 Super Mini(K1)の配線

・ESP32 C3 Super Mini(K2)
・ESP32 C3 Super Mini(K3)
・ESP32 C3 PLUS(R1)
・ESP32-C3 PRO MINI(B1)の配線
代表してESP32 C3 Super Mini(k2)の絵を使った配線図

スケッチ
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH (128)
#define SCREEN_HEIGHT (64)
#define OLED_RESET (-1)
#define SCREEN_ADDRESS (0x3C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
for(;;);
}
}
void loop()
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 20);
display.print(F("ESP32 "));
display.setTextSize(4);
display.print(F("C3"));
display.display();
}
結果
すべてのSuper Mini ESP32C3での表示を確認しました。
SDAと同じGPIO8を使用するユーザLEDはすべての基板で点滅(目視では薄暗い点灯)を確認しました。

SPI(ILI9341)
説明
SPIを使いLCD(ILI9341)の表示制御をします。
制御内容は簡単なテキスト表示です。
デフォルトのSPIピンを使い、同じスケッチで動作することを確認します。
ESP32C3ではSPIの信号線は任意のピンに設定することができます。
今回CSは任意のピン(GPIO0)に変更しています。
同じ配線で動作させるための方法として、サンプルスケッチの以下のコメントを解除することで、同じ配線で使用できます。
//#define SUPERMINI_ESP32C3_K1 (1)
配線
・ESP32 C3 Super Mini(K1)の配線

・ESP32 C3 Super Mini(K2)
・ESP32 C3 Super Mini(K3)
・ESP32 C3 PLUS(R1)
・ESP32-C3 PRO MINI(B1)の配線
代表してESP32 C3 Super Mini(k2)の絵を使った配線図

スケッチ
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>
#define TFT_RST (0)
#define TFT_DC (1)
//#define SUPERMINI_ESP32C3_K1 (1)
#if defined (SUPERMINI_ESP32C3_K1)
#undef SS
#undef MOSI
#undef MISO
#undef SCK
#undef TFT_RST
#undef TFT_DC
#define SS (2)
#define MOSI (1)
#define MISO (0)
#define SCK (21)
#define TFT_RST (8)
#define TFT_DC (9)
#endif
#define TFT_CS (SS)
#define TFT_MOSI (MOSI)
#define TFT_MISO (MISO)
#define TFT_SCK (SCK)
Adafruit_ILI9341 tft = Adafruit_ILI9341(&SPI, TFT_DC, TFT_CS, TFT_RST);
void setup(void)
{
SPI.begin(TFT_SCK, -1, TFT_MOSI, TFT_CS);
tft.begin();
tft.fillScreen(ILI9341_BLACK);
tft.setRotation(3);
tft.setTextSize(3);
tft.setCursor(0, 10);
tft.setTextColor(ILI9341_GREEN);
tft.printf("TAMANEGI\n");
tft.setCursor(0, 50);
tft.setTextSize(2);
tft.setTextColor(ILI9341_RED);
tft.printf("2.4inch LCD\n");
tft.setTextColor(ILI9341_YELLOW);
tft.printf("Res=240 x 320\n");
tft.setTextColor(ILI9341_BLUE);
tft.printf("ILI9341\n");
}
void loop()
{
}
結果
すべてのSuper Mini ESP32C3での表示を確認しました。
デフォルトピンで配線を行っているのでK1のみ配線が違いますが、ESP32C3はピン設定を任意のピン変更できます。
今回は同じスケッチを使用しましたが、配線を優先する場合はSPI.begin()を使うことで同じ配線を使用できます。
結果の画像は上側ESP32 C3 SuperMini(K1)と下側ESP32 C3 SuperMini(K2)です。

コメント
こんにちは。参考になる情報を書いていただき感謝します。
ESP32-C3 super mini dev kitを使った基板試作のため、参考にさせていただきました。
コメントありがとうございます。
お役に立ててよかったです。