環境:
Win10、Arduino IDE 2.3.6、ESP32 NodeMCU-32S 開發板
步驟:
- 到 Arduino 官網下載 Arduino IDE 安裝。
我安裝的版本是 2.3.6
- 在 Arduino IDE 新增支援 ESP32
「工具」->「開發板」->「開發板管理員」
搜尋「ESP32」,找到 Espressif Systems 提供的 ESP32 開發板支援安裝
(我安裝的 Arduino IDE 版本,直接搜尋就可找到,有的版本似乎要先在偏好設定新增「其他開發板管理網址」
參考:https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html )

安裝中
安裝完成
- 選擇 ESP32 NodeMCU-32S 開發板
「工具」->「開發板」->「esp32」->「NodeMCU-32S」
- 我這塊開發板,使用的 USB-to-UART(USB-to-COM、USB-to-TTL) 晶片,是 CP2102
將開發板連接到電腦,可發現 Win10 沒有 CP2102 驅動程式
- 到 CP2102 官網 Silicon Labs 下載驅動程式
https://www.silabs.com/software-and-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads
驅動程式下載頁面有各種版本,若不知要下載哪個,可下載後查看裡面說明文件
我在 CP210x_Universal_Windows_Driver.zip 裡的 CP210x_Universal_Windows_Driver_ReleaseNotes.txt 文件,看到
====================================================
OS VERSIONS
-----------
This package provides the CP210x VCP driver for the following versions
of Windows:
- Windows 10 version 1803 and later (x64, x86)
- Windows 11 (x64)
====================================================
Win10 可以使用,所以我安裝這個驅動程式
我解壓縮到
D:\download\CP210x_Universal_Windows_Driver
在裝置管理員,沒驅動程式的 CP2102 上按右鍵,選「更新驅動程式」
選擇下載後解壓縮的驅動程式位置進行安裝
安裝成功
- 在 Arduino IDE 使用開發板,還須設定開發板連接到哪個連接埠。
先到裝置管理員,找剛剛裝好驅動程式的 USB-to-UART 裝置(CP2102)
如下圖,在連接埠中,看到 CP210x USB-to-UART Bridge 使用「COM5」
到 Arduino IDE
「工具」->「連接埠」->選擇「COM5」
之後便可進行開發
其他:
- 開發板外觀


- 引腳
#上圖右排
編號 |
名稱 |
類型 |
功能 |
1 |
3V3 |
P |
3.3 V 電源 |
2 |
EN |
I |
CHIP_PU, Reset |
3 |
SVP, P36 |
I |
GPIO36, ADC1_CH0, S_VP |
4 |
SVN, P39 |
I |
GPIO39, ADC1_CH3, S_VN |
5 |
P34 |
I |
GPIO34, ADC1_CH6, VDET_1 |
6 |
P35 |
I |
GPIO35, ADC1_CH7, VDET_2 |
7 |
P32 |
I/O |
GPIO32, ADC1_CH4, TOUCH_CH9, XTAL_32K_P |
8 |
P33 |
I/O |
GPIO33, ADC1_CH5, TOUCH_CH8, XTAL_32K_N |
9 |
P25 |
I/O |
GPIO25, ADC2_CH8, DAC_1 |
10 |
P26 |
I/O |
GPIO26, ADC2_CH9, DAC_2 |
11 |
P27 |
I/O |
GPIO27, ADC2_CH7, TOUCH_CH7 |
12 |
P14 |
I/O |
GPIO14, ADC2_CH6, TOUCH_CH6, MTMS |
13 |
P12 |
I/O |
GPIO12, ADC2_CH5, TOUCH_CH5, MTDI |
14 |
GND |
G |
接地 |
15 |
P13 |
I/O |
GPIO13, ADC2_CH4, TOUCH_CH4, MTCK |
16 |
SD2, P9 |
I/O |
GPIO9, SD_SATA2 |
17 |
SD3, P10 |
I/O |
GPIO10, SD_DATA3 |
18 |
CMD, P11 |
I/O |
GPIO11, SD_CMD |
19 |
5V |
P |
5 V 電源 |
#上圖左排
編號 |
名稱 |
類型 |
功能 |
1 |
GND |
G |
接地 |
2 |
P23 |
I/O |
GPIO23 |
3 |
P22 |
I/O |
GPIO22 |
4 |
TX, P1 |
I/O |
GPIO1, U0TXD |
5 |
RX, P3 |
I/O |
GPIO3, U0RXD |
6 |
P21 |
I/O |
GPIO21 |
7 |
GND |
G |
接地 |
8 |
P19 |
I/O |
GPIO19 |
9 |
P18 |
I/O |
GPIO18 |
10 |
P5 |
I/O |
GPIO5 |
11 |
P17 |
I/O |
GPIO17 |
12 |
P16 |
I/O |
GPIO16 |
13 |
P4 |
I/O |
GPIO4, ADC2_CH0, TOUCH_CH0 |
14 |
P0 |
I/O |
GPIO0, ADC2_CH1, TOUCH_CH1, Boot |
16 |
P2 |
I/O |
GPIO2, ADC2_CH2, TOUCH_CH2 |
17 |
P15 |
I/O |
GPIO15, ADC2_CH3, TOUCH_CH3, MTDO |
17 |
SD1, P8 |
I/O |
GPIO8, SD_DATA1 |
18 |
SD0, P7 |
I/O |
GPIO7, SD_DATA0 |
19 |
CLK, P6 |
I/O |
GPIO6, SD_CLK, SCK |
- 開發板內建LED燈在腳位2上,我接上電腦就會自己閃爍
程式碼void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
- 上傳程式到開發板時,取得的開發板資訊,晶片是 ESP32-D0WD-V3
Serial port COM5:
Connecting.....
Connected to ESP32 on COM5:
Chip type: ESP32-D0WD-V3 (revision v3.1)
Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz, Vref calibration in eFuse, Coding Scheme None
Crystal frequency: 40MHz
MAC:
- ESP32-D0WD-V3 官網列出的規格
Features:
- Core: Xtensa® dual-core 32-bit LX6 CPU, frequency up to 240MHz
- Memories:
- 448 KB of ROM
- 520 KB of SRAM
- 16 KB of RTCSRAM
- Working Voltage: 2.3 V to 3.6 V
- Up to 34 GPIOs
- 5 strapping GPIOs
- 6 GPIOs need for flash/PSRAM
- 2*12-bit ADC (up to 18 channels)
- Communication interfaces
- 2 I2C interfaces
- 2 I2S interfaces
- 4 SPI interfaces
- 3 UART interfaces
- Security:
- 1024 bit OTP
- AES, SHA, RSA, ECC, RNG
- Secure Boot, Flash Encryption
- Extended temperature range: -40 to 125 °C
- https://wokwi.com/projects/new/esp32
ESP32 線上模擬器 - ESP32 Pin腳概述
名稱 | No. | 類型 | 功能 |
模擬 |
VDDA | 1 | P | 模擬電源(2.3 V ∼ 3.6 V) |
LNA_IN | 2 | I/O | 射頻輸入和輸出 |
VDD3P3 | 3 | P | 模擬電源(2.3 V ∼ 3.6 V) |
VDD3P3 | 4 | P | 模擬電源(2.3 V ∼ 3.6 V) |
VDD3P3_RTC |
SENSOR_VP | 5 | I | GPIO36, | ADC1_CH0, | RTC_GPIO0 |
|
|
|
|
SENSOR_CAPP | 6 | I | GPIO37, | ADC1_CH1, | RTC_GPIO1 |
|
|
|
|
SENSOR_CAPN | 7 | I | GPIO38, | ADC1_CH2, | RTC_GPIO2 |
|
|
|
|
SENSOR_VN | 8 | I | GPIO39, | ADC1_CH3, | RTC_GPIO3 |
|
|
|
|
CHIP_PU | 9 | I | 高電位:晶片使能;低電位:晶片關閉; 注意:不能讓CHIP_PU腳位浮空。 |
VDET_1 | 10 | I | GPIO34, | ADC1_CH6, | RTC_GPIO4 |
|
|
|
|
VDET_2 | 11 | I | GPIO35, | ADC1_CH7, | RTC_GPIO5 |
|
|
|
|
32K_XP | 12 | I/O | GPIO32, | ADC1_CH4, | RTC_GPIO9, | TOUCH9, | 32K_XP (32.768 kHz晶振輸入) |
|
|
32K_XN | 13 | I/O | GPIO33, | ADC1_CH5, | RTC_GPIO8, | TOUCH8, | 32K_XN (32.768 kHz晶振輸出) |
|
|
GPIO25 | 14 | I/O | GPIO25, | ADC2_CH8, | RTC_GPIO6, | DAC_1, | EMAC_RXD0 |
|
|
GPIO26 | 15 | I/O | GPIO26, | ADC2_CH9, | RTC_GPIO7, | DAC_2, | EMAC_RXD1 |
|
|
GPIO27 | 16 | I/O | GPIO27, | ADC2_CH7, | RTC_GPIO17, | TOUCH7, | EMAC_RX_DV |
|
|
MTMS | 17 | I/O | GPIO14, | ADC2_CH6, | RTC_GPIO16, | TOUCH6, | EMAC_TXD2, HSPICLK, HS2_CLK, | SD_CLK, | MTMS |
MTDI | 18 | I/O | GPIO12, | ADC2_CH5, | RTC_GPIO15, | TOUCH5, | EMAC_TXD3, HSPIQ, HS2_DATA2, | SD_DATA2, | MTDI |
VDD3P3_RTC | 19 | P | RTC IO電源輸入(2.3 V ∼ 3.6 V) |
MTCK | 20 | I/O | GPIO13, | ADC2_CH4, | RTC_GPIO14, | TOUCH4, | EMAC_RX_ER, HSPID, HS2_DATA3, | SD_DATA3, | MTCK |
MTDO | 21 | I/O | GPIO15, | ADC2_CH3, | RTC_GPIO13, | TOUCH3, | EMAC_RXD3, HSPICS0, HS2_CMD, | SD_CMD, | MTDO |
名稱 | No. | 類型 | 功能 |
GPIO2 | 22 | I/O | GPIO2, | ADC2_CH2, | RTC_GPIO12, | TOUCH2, | HSPIWP, | HS2_DATA0, | SD_DATA0 |
GPIO0 | 23 | I/O | GPIO0, | ADC2_CH1, | RTC_GPIO11, | TOUCH1, EMAC_TX_CLK, | CLK_OUT1, |
|
|
GPIO4 | 24 | I/O | GPIO4, | ADC2_CH0, | RTC_GPIO10, | TOUCH0, EMAC_TX_ER, | HSPIHD, | HS2_DATA1, | SD_DATA1 |
VDD_SDIO |
GPIO16 | 25 | I/O | GPIO16, | HS1_DATA4, | U2RXD, | EMAC_CLK_OUT |
|
|
|
VDD_SDIO | 26 | P | 1.8 V或VDD3P3_RTC電源輸出 |
GPIO17 | 27 | I/O | GPIO17, | HS1_DATA5, | U2TXD, | EMAC_CLK_OUT_180 |
|
|
|
SD_DATA_2 | 28 | I/O | GPIO9, | HS1_DATA2, | U1RXD, | SD_DATA2, | SPIHD |
SD_DATA_3 | 29 | I/O | GPIO10, | HS1_DATA3, | U1TXD, | SD_DATA3, | SPIWP |
SD_CMD | 30 | I/O | GPIO11, | HS1_CMD, | U1RTS, | SD_CMD, | SPICS0 |
SD_CLK | 31 | I/O | GPIO6, | HS1_CLK, | U1CTS, | SD_CLK, | SPICLK |
SD_DATA_0 | 32 | I/O | GPIO7, | HS1_DATA0, | U2RTS, | SD_DATA0, | SPIQ |
SD_DATA_1 | 33 | I/O | GPIO8, | HS1_DATA1, | U2CTS, | SD_DATA1, | SPID |
VDD3P3_CPU |
GPIO5 | 34 | I/O | GPIO5, | HS1_DATA6, | VSPICS0, | EMAC_RX_CLK |
|
|
|
GPIO18 | 35 | I/O | GPIO18, | HS1_DATA7, | VSPICLK |
|
|
|
|
GPIO23 | 36 | I/O | GPIO23, | HS1_STROBE, | VSPID |
|
|
|
|
VDD3P3_CPU | 37 | P | CPU IO電源輸入(1.8 V ∼ 3.6 V) |
GPIO19 | 38 | I/O | GPIO19, | U0CTS, | VSPIQ, | EMAC_TXD0 |
|
|
|
GPIO22 | 39 | I/O | GPIO22, | U0RTS, | VSPIWP, | EMAC_TXD1 |
|
|
|
U0RXD | 40 | I/O | GPIO3, | U0RXD, | CLK_OUT2 |
U0TXD | 41 | I/O | GPIO1, | U0TXD, | CLK_OUT3, | EMAC_RXD2 |
|
|
|
GPIO21 | 42 | I/O | GPIO21, |
| VSPIHD, | EMAC_TX_EN |
|
|
|
模擬 |
VDDA | 43 | P | 模擬電源(2.3 V ∼ 3.6 V) |
XTAL_N | 44 | O | 外部主晶振輸出 |
XTAL_P | 45 | I | 外部主晶振輸入 |
VDDA | 46 | P | 模擬電源(2.3 V ∼ 3.6 V) |
CAP2 | 47 | I | 並聯3.3 nF (10%)電容和20 k Ω電阻到CAP1 |
名稱 | No. | 類型 | 功能 |
CAP1 | 48 | I | 串聯10 nF電容到地 |
GND | 49 | P | 接地 |
ESP32的所有IO腳都具備GPIO功能,其中部分還具有RTC_GPIO功能。不過,這些IO腳位是多功能的,可以依照需求進行不同功能的配置,也有一些腳位有使用限制,需要特別注意。上表中,部分腳位功能有高亮標記,具體如下:
- ESP32 外設Pin腳分配
介面 | 訊號 | Pin腳 | 功能 |
ADC | ADC1_CH0 | SENSOR_VP |
2個12-bit SAR ADC |
ADC1_CH1 | SENSOR_CAPP |
ADC1_CH2 | SENSOR_CAPN |
ADC1_CH3 | SENSOR_VN |
ADC1_CH4 | 32K_XP |
ADC1_CH5 | 32K_XN |
ADC1_CH6 | VDET_1 |
ADC1_CH7 | VDET_2 |
ADC | ADC2_CH0 | GPIO4 |
2個12-bit SAR ADC |
ADC2_CH1 | GPIO0 |
ADC2_CH2 | GPIO2 |
ADC2_CH3 | MTDO |
ADC2_CH4 | MTCK |
ADC2_CH5 | MTDI |
ADC2_CH6 | MTMS |
ADC2_CH7 | GPIO27 |
ADC2_CH8 | GPIO25 |
ADC2_CH9 | GPIO26 |
DAC | DAC_1 | GPIO25 | 2個8-bit DAC |
DAC_2 | GPIO26 |
觸摸感應器 | TOUCH0 | GPIO4 |
電容式觸控感應器 |
TOUCH1 | GPIO0 |
TOUCH2 | GPIO2 |
TOUCH3 | MTDO |
TOUCH4 | MTCK |
TOUCH5 | MTDI |
TOUCH6 | MTMS |
TOUCH7 | GPIO27 |
TOUCH8 | 32K_XN |
TOUCH9 | 32K_XP |
JTAG | MTDI | MTDI |
軟體調試JTAG |
MTCK | MTCK |
MTMS | MTMS |
MTDO | MTDO |
SD/SDIO/MMC主機控制器 | HS2_CLK | MTMS |
支援V3.01標準SD內存卡 |
HS2_CMD | MTDO |
HS2_DATA0 | GPIO2 |
HS2_DATA1 | GPIO4 |
HS2_DATA2 | MTDI |
HS2_DATA3 | MTCK |
介面 | 訊號 | Pin腳 | 功能 |
馬達PWM | PWM0_OUT0 ~ 2 |
任意GPIO管腳 |
16-bit計時器的3路通道可產生PWM波形,每路包含1對輸出訊號、 3個故障偵測訊號、 3個事件捕捉訊號,及3個同步訊號。 |
PWM1_OUT_IN0 ~ 2 |
PWM0_FLT_IN0 ~ 2 |
PWM1_FLT_IN0 ~ 2 |
PWM0_CAP_IN0 ~ 2 |
PWM1_CAP_IN0 ~ 2 |
PWM0_SYNC_IN0 ~ 2 |
PWM1_SYNC_IN0 ~ 2 |
SDIO/SPI從機控制器 | SD_CLK | MTMS |
SDIO接口,符合SDIO V2.0卡產業標準。 |
SD_CMD | MTDO |
SD_DATA0 | GPIO2 |
SD_DATA1 | GPIO4 |
SD_DATA2 | MTDI |
SD_DATA3 | MTCK |
UART | U0RXD_in |
任意GPIO管腳 |
3路UART設備,支援硬體流控制和DMA |
U0CTS_in |
U0DSR_in |
U0TXD_out |
U0RTS_out |
U0DTR_out |
U1RXD_in |
U1CTS_in |
U1TXD_out |
U1RTS_out |
U2RXD_in |
U2CTS_in |
U2TXD_out |
U2RTS_out |
I2C | I2CEXT0_SCL_in |
任意GPIO管腳 |
2路I2C設備,支援主機或從機模式 |
I2CEXT0_SDA_in |
I2CEXT1_SCL_in |
I2CEXT1_SDA_in |
I2CEXT0_SCL_out |
I2CEXT0_SDA_out |
I2CEXT1_SCL_out |
I2CEXT1_SDA_out |
LED PWM | ledc_hs_sig_out0 ~ 7 | 任意GPIO管腳 | 16路獨立通道;採用@80 MHz時脈/RTC時鐘。佔空比精確度:16-bit。 |
ledc_ls_sig_out0 ~ 7 |
介面 | 訊號 | Pin腳 | 功能 |
I2S | I2S0I_DATA_in0 ~ 15 |
任意GPIO管腳 |
用於串列立體聲資料的輸入輸出,並行LCD資料的輸出,camera並行資料的輸入。 註:I2S0_CLK和I2S1_CLK僅可透過IO MUX映射至GPIO0、U0RXD(GPIO3)或U0TXD (GPIO1),選擇GPIO功能CLK_OUT1、CLK_OUT2或CLK_OUT3。 更多信息,請參考 《ESP32技術參考手冊》>章節IO_MUX 和GPIO Matrix > IO MUX Pad清單。 |
I2S0O_BCK_in |
I2S0O_WS_in |
I2S0I_BCK_in |
I2S0I_WS_in |
I2S0I_H_SYNC |
I2S0I_V_SYNC |
I2S0I_H_ENABLE |
I2S0O_BCK_out |
I2S0O_WS_out |
I2S0I_BCK_out |
I2S0I_WS_out |
I2S0O_DATA_out0 ~ 23 |
I2S1I_DATA_in0 ~ 15 |
I2S1O_BCK_in |
I2S1O_WS_in |
I2S1I_BCK_in |
I2S1I_WS_in |
I2S1I_H_SYNC |
I2S1I_V_SYNC |
I2S1I_H_ENABLE |
I2S1O_BCK_out |
I2S1O_WS_out |
I2S1I_BCK_out |
I2S1I_WS_out |
I2S1O_DATA_out0 ~ 23 |
I2S0_CLK | GPIO0 、 U0RXD 、 或U0TXD |
I2S1_CLK |
紅外線遙控器 | RMT_SIG_IN0 ~ 7 | 任意GPIO管腳 | 8路IR收發器,支援不同波形標準。 |
RMT_SIG_OUT0 ~ 7 |
通用SPI | HSPIQ_in/_out |
任意GPIO管腳 |
Standard SPI介接包括時脈、片選、 MOSI和MISO 。這些介面可連接至LCD等周邊設備,支援以下功能:
主機和從機模式; 4種模式的SPI傳輸格式; 可配置SPI頻率; 高達64位元組FIFO和DMA。
|
HSPID_in/_out |
HSPICLK_in/_out |
HSPI_CS0_in/_out |
HSPI_CS1_out |
HSPI_CS2_out |
VSPIQ_in/_out |
VSPID_in/_out |
VSPICLK_in/_out |
VSPI_CS0_in/_out |
VSPI_CS1_out |
VSPI_CS2_out |
介面 | 訊號 | Pin腳 | 功能 |
並行QSPI | SPIHD | SD_DATA_2 |
支援Standard SPI、Dual SPI和Quad SPI 可連接外部Flash和SRAM。 |
SPIWP | SD_DATA_3 |
SPICS0 | SD_CMD |
SPICLK | SD_CLK |
SPIQ | SD_DATA_0 |
SPID | SD_DATA_1 |
HSPICLK | MTMS |
HSPICS0 | MTDO |
HSPIQ | MTDI |
HSPID | MTCK |
HSPIHD | GPIO4 |
HSPIWP | GPIO2 |
VSPICLK | GPIO18 |
VSPICS0 | GPIO5 |
VSPIQ | GPIO19 |
VSPID | GPIO23 |
VSPIHD | GPIO21 |
VSPIWP | GPIO22 |
EMAC | EMAC_TX_CLK | GPIO0 |
乙太網路MAC、MII/RMII介面 |
EMAC_RX_CLK | GPIO5 |
EMAC_TX_EN | GPIO21 |
EMAC_TXD0 | GPIO19 |
EMAC_TXD1 | GPIO22 |
EMAC_TXD2 | MTMS |
EMAC_TXD3 | MTDI |
EMAC_RX_ER | MTCK |
EMAC_RX_DV | GPIO27 |
EMAC_RXD0 | GPIO25 |
EMAC_RXD1 | GPIO26 |
EMAC_RXD2 | U0TXD |
EMAC_RXD3 | MTDO |
EMAC_CLK_OUT | GPIO16 |
EMAC_CLK_OUT_180 | GPIO17 |
EMAC_TX_ER | GPIO4 |
EMAC_MDC_out | 任意GPIO管腳 |
EMAC_MDI_in | 任意GPIO管腳 |
EMAC_MDO_out | 任意GPIO管腳 |
EMAC_CRS_out | 任意GPIO管腳 |
EMAC_COL_out | 任意GPIO管腳 |
,
介面 | 訊號 | Pin腳 | 功能 |
脈衝計數器 | pcnt_sig_ch0_in0 |
任意GPIO管腳 |
脈衝計數器透過7種模式捕捉脈衝並對脈衝邊緣計數。 |
pcnt_sig_ch1_in0 |
pcnt_ctrl_ch0_in0 |
pcnt_ctrl_ch1_in0 |
pcnt_sig_ch0_in1 |
pcnt_sig_ch1_in1 |
pcnt_ctrl_ch0_in1 |
pcnt_ctrl_ch1_in1 |
pcnt_sig_ch0_in2 |
pcnt_sig_ch1_in2 |
pcnt_ctrl_ch0_in2 |
pcnt_ctrl_ch1_in2 |
pcnt_sig_ch0_in3 |
pcnt_sig_ch1_in3 |
pcnt_ctrl_ch0_in3 |
pcnt_ctrl_ch1_in3 |
pcnt_sig_ch0_in4 |
pcnt_sig_ch1_in4 |
pcnt_ctrl_ch0_in4 |
pcnt_ctrl_ch1_in4 |
pcnt_sig_ch0_in5 |
pcnt_sig_ch1_in5 |
pcnt_ctrl_ch0_in5 |
pcnt_ctrl_ch1_in5 |
pcnt_sig_ch0_in6 |
pcnt_sig_ch1_in6 |
pcnt_ctrl_ch0_in6 |
pcnt_ctrl_ch1_in6 |
pcnt_sig_ch0_in7 |
pcnt_sig_ch1_in7 |
pcnt_ctrl_ch0_in7 |
pcnt_ctrl_ch1_in7 |
TWAI | twai_rx |
任意GPIO管腳 |
相容ISO11898-1協定(CAN規範2.0) |
twai_tx |
twai_bus_off_on |
twai_clkout |
參考: