はじめに
ESP32-S3 N16R8という比較的新しいESP32ボードを購入したので試してみました。
実際に購入したのは、以下のアリエクのものですが、Amazonでも似たようなものが複数出ています。(技適は保証しません)
https://ja.aliexpress.com/item/1005010121791705.html?spm=a2g0o.order_list.order_list_main.16.35f0585aNsKRjs&gatewayAdapt=glo2jpn
USB Type Cポートが2つありますが、このポートはそれぞれ役割があるようです。
これまでのボードと同じような用途として使うには裏面に「COM」と書かれている方を使えばよさそうです。


いつものようにESP32に対してはArduino IDEではなくVS code拡張のPlatform ioを使います。
Platform ioでこのボードを使うには設定ファイルを以下のように設定します。
# platformio.ini [env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200
使ってみる
このボードにはWS2812が搭載されています。いわゆるNeoPixelのフルカラーシリアルLEDです。
ライブラリをインストールし、Lチカをしてみます。
ちなみにデフォルトでもこのNeoPixelをつかったLチカが書き込まれていますが、自分で書き込んでみます。

#include <Adafruit_NeoPixel.h> // ピン番号とLEDの数を定義 #define PIN 48 #define NUMPIXELS 1 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); delay(2000); Serial.println("Hello, ESP32-S3!"); pixels.begin(); } void loop() { pixels.clear(); // 赤色に点灯 Serial.println("Red"); pixels.setPixelColor(0, pixels.Color(150, 0, 0)); pixels.show(); delay(500); // 緑色に点灯 Serial.println("Green"); pixels.setPixelColor(0, pixels.Color(0, 150, 0)); pixels.show(); delay(500); // 青色に点灯 Serial.println("Blue"); pixels.setPixelColor(0, pixels.Color(0, 0, 150)); pixels.show(); delay(500); }
書き込めないときは、ダウンロードモードに入れる必要があります。
その方法は「BOOTボタン押下→押したまま→リセットボタン押下→リセットボタン開放→BOOTボタン開放」です。
github.com
ESP32-S3-N16R8によるLチカ。 pic.twitter.com/UZxmJ6hERZ
— とりてん (@s51517765) 2026年2月21日
--- Terminal on COM6 | 115200 8-N-1 --- Available filters and text transformations: debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at https://bit.ly/pio-monitor-filters --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x4bc load:0x403c9700,len:0xbd8 load:0x403cc700,len:0x2a0c entry 0x403c98d0 Hello, ESP32-S3! Red Green Blue Red
2つめのUSBポートは何に使う?
2つめのUSBポート(USBと記載)はbuild_flags = -D ARDUINO_USB_CDC_ON_BOOT=1と設定を追加するとSerial.print()が出力されるようです。
# platformio.ini [env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 build_flags = -D ARDUINO_USB_CDC_ON_BOOT=1
基本的にSerial.print()の出力は同じですが、こちらにはBOOTログは出力されません。
--- Terminal on COM11 | 115200 8-N-1 --- Available filters and text transformations: debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at https://bit.ly/pio-monitor-filters --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H Blue Red Green Blue Red Green
では何を目的に使い分ければいいのか?ということになりますが、Geminiに聞いた結果を以下にまとめます。
ESP32-S3 DevKitC-1(N16R8搭載モデルなど)には、通常 「USB」 と 「UART(COM)」 という2つのMicro USB(またはUSB-C)ポートが搭載されています。
1. 2つのポートの役割の違い

「USB (Native)」ポートの利用価値
S3から新しく搭載されたこのポートには、以下のような強力な使い道があります。
デバイス化 (USB HID):
ESP32-S3をPCに「自作キーボード」や「マウス」として認識させることができます。特定の操作を自動化するガジェット(マクロキーなど)を作る際に必須です。
高速なデバッグ (JTAG):
本来は高価な外付けデバッガが必要な「ステップ実行(プログラムを一行ずつ止めて変数を確認する)」が、USBケーブル一本で可能になります。
USBホスト機能:
ESP32-S3側にUSBメモリを繋いでデータを読み書きしたり、USBキーボードを繋いで操作したりできます。
3. 「UART(COM)」ポートの利用価値
一見、古い方式に見えますが、開発中はこちらの方が「硬い」です。
OSからの認識が安定している:
Nativeポートはプログラムのバグでチップがクラッシュすると、PC側のシリアルポート自体が消えてしまうことがあります。UART(COM)ポートは変換チップが独立しているため、ESP32がフリーズしても通信経路が途切れません。
ブートログの確認:
電源を入れた直後の「起動に失敗した理由(電圧不足やメモリ読み込みエラー)」などは、多くの場合こちらのUART(COM)ポートにのみ出力されます。
どちらを使うべき?
普段の開発: UART (COM)ポートを使うのが最もトラブルが少なく推奨されます。
特殊な機能を作るとき: キーボード化したり、高速通信が必要な場合は USB ポートに切り替えます。
※Geminiの解説は以上。
Wi-Fiも対応
ESP32-S3 N16R8はもちろんWi-Fiも対応していますし、ESP32 devkitなどで作ったコードがそのまま動きます。
このボードをwebサーバーにするコードも動きました。
github.com
まとめ
動かしてみた。
基本的にはESP32 devkitなどと同じ感覚で使えます。
2つあるUSBポートが特徴的ですが、いまのところその価値が感じられていません。
もっといろいろ試してみる必要がありそうです。