2025年10月17日 星期五

在 Arduino IDE 上使用 ESP32 NODEMCU-32S 開發板

環境:
Win10、Arduino IDE 2.3.6、ESP32 NodeMCU-32S 開發板

步驟:

  1.  Arduino 官網下載 Arduino IDE 安裝。
    我安裝的版本是 2.3.6

  2. 在 Arduino IDE 新增支援 ESP32
    「工具」->「開發板」->「開發板管理員」


    搜尋「ESP32」,找到 Espressif  Systems 提供的 ESP32 開發板支援安裝
    (我安裝的 Arduino IDE 版本,直接搜尋就可找到,有的版本似乎要先在偏好設定新增「其他開發板管理網址」
    參考:https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html )



    安裝中

    安裝完成

  3. 選擇 ESP32 NodeMCU-32S 開發板
    「工具」->「開發板」->「esp32」->「NodeMCU-32S」

  4. 我這塊開發板,使用的 USB-to-UART(USB-to-COM、USB-to-TTL) 晶片,是 CP2102
    將開發板連接到電腦,可發現 Win10 沒有 CP2102 驅動程式

  5. 到 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 上按右鍵,選「更新驅動程式」

    選擇下載後解壓縮的驅動程式位置進行安裝



    安裝成功


  6. 在 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 VVDD3P3_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腳位是多功能的,可以依照需求進行不同功能的配置,也有一些腳位有使用限制,需要特別注意。

    中,部分腳位功能有高亮標記,具體如下:

    • GPIO 僅作輸入腳,沒有輸出功能,不含輸出驅動器或內建上拉/下拉電路。

    • GPIO 用於與封裝內flash/PSRAM通訊,不建議作其他用途。更多信息,詳見章節2.6晶片與flash/ PSRAM的管腳對應關係

    • GPIO 具有以下重要功能之一:


  • ESP32 外設Pin腳分配
    1. 介面

      訊號

      Pin腳

      功能


      ADC

      ADC1_CH0

      SENSOR_VP


      212-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


      212-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

      28-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管腳


      3UART設備,支援硬體流控制和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管腳


      2I2C設備,支援主機或從機模式

      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_CLKI2S1_CLK僅可透過IO MUX映射至GPIO0U0RXD(GPIO3)U0TXD (GPIO1),選擇GPIO功能CLK_OUT1CLK_OUT2CLK_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管腳

      8IR收發器,支援不同波形標準。

      RMT_SIG_OUT0 ~ 7


      通用SPI

      HSPIQ_in/_out


      任意GPIO管腳


      Standard SPI介接包括時脈、片選、 MOSIMISO 。這些介面可連接至LCD等周邊設備,支援以下功能:

      • 主機和從機模式;

      • 4種模式的SPI傳輸格式;

      • 可配置SPI頻率;

      • 高達64位元組FIFODMA

      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 SPIDual SPIQuad SPI

      可連接外部FlashSRAM

      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


      乙太網路MACMII/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





參考:







沒有留言:

張貼留言