본문 바로가기

ESP32

ESP32 Pinout 참조: 어떤 GPIO 핀을 사용해야 합니까?

반응형

 

 

ESP32 핀아웃 참조: 어떤 GPIO 핀을 사용해야 합니까?

 

ESP32 칩에는 여러 기능이 있는 48개의 핀이 있습니다. 모든 핀이 모든 ESP32 개발 보드에 노출되어 있는 것은 아니며, 일부 핀은 사용할 수 없습니다.

 

ESP32 GPIO를 사용하는 방법에 대한 질문이 많습니다. 어떤 핀을 사용해야 합니까? 프로젝트에서 어떤 핀을 사용하지 않아야 합니까? 이 게시물은 ESP32 GPIO에 대한 간단하고 따르기 쉬운 참조 가이드를 목표로 합니다.

 

아래 그림은 ESP-WROOM-32 핀아웃을 보여줍니다. ESP32 베어 칩을 사용하여 사용자 정의 보드를 빌드하는 경우 참조로 사용할 수 있습니다.

 

 

ESP32 핀아웃 칩 ESP-WROOM-32

 

 

참고: 모든 GPIO가 모든 개발 보드에서 액세스 가능한 것은 아니지만, 각 특정 GPIO는 사용하는 개발 보드에 관계없이 동일한 방식으로 작동합니다. ESP32를 처음 사용하는 경우 가이드인 ESP32 개발 보드 시작하기를 읽어 보는 것이 좋습니다.

 

ESP32 핀아웃 참조: 어떤 GPIO 핀을 사용해야 합니까?

 

ESP32 주변 장치

 

ESP32 주변 장치에는 다음이 포함됩니다.

 

  • 18개 아날로그-디지털 변환기(ADC) 채널
  • 3개 SPI 인터페이스
  • 3개 UART 인터페이스
  • 2개 I2C 인터페이스
  • 16개 PWM 출력 채널
  • 2개 디지털-아날로그 변환기(DAC)
  • 2개 I2S 인터페이스
  • 10개 정전 용량 감지 GPIO - Capacitive sensing

 

ADC(아날로그-디지털 변환기) 및 DAC(디지털-아날로그 변환기) 기능은 특정 정적 핀에 할당됩니다. 그러나 UART, I2C, SPI, PWM 등의 핀을 결정할 수 있습니다. 코드에서 할당하기만 하면 됩니다. 이는 ESP32 칩의 멀티플렉싱 기능 덕분에 가능합니다.

 

소프트웨어에서 핀 속성을 정의할 수 있지만, 다음 그림과 같이 기본적으로 할당된 핀이 있습니다(이것은 36핀이 있는 ESP32 DEVKIT V1 DOIT 보드의 예입니다. 핀 위치는 제조업체에 따라 변경될 수 있음).

 

36핀이 있는 ESP32 DEVKIT V1 DOIT 보드 핀아웃

 

 또한 특정 프로젝트에 적합하거나 적합하지 않은 특정 기능이 있는 핀이 있습니다. 다음 표는 입력, 출력으로 사용하기에 가장 좋은 핀과 주의해야 할 핀을 보여줍니다.

 

녹색으로 강조 표시된 핀은 사용해도 됩니다. 노란색으로 강조 표시된 핀은 사용해도 되지만, 주로 부팅 시 예상치 못한 동작이 발생할 수 있으므로 주의해야 합니다. 빨간색으로 강조 표시된 핀은 입력 또는 출력으로 사용하지 않는 것이 좋습니다.

 

 

GPIO Input Output Notes
0 pulled up OK outputs PWM signal at boot, must be LOW to enter flashing mode
1 TX pin OK debug output at boot
2 OK OK connected to on-board LED, must be left floating or LOW to enter flashing mode
3 OK RX pin HIGH at boot
4 OK OK  
5 OK OK outputs PWM signal at boot, strapping pin
6 x x connected to the integrated SPI flash
7 x x connected to the integrated SPI flash
8 x x connected to the integrated SPI flash
9 x x connected to the integrated SPI flash
10 x x connected to the integrated SPI flash
11 x x connected to the integrated SPI flash
12 OK OK boot fails if pulled high, strapping pin
13 OK OK  
14 OK OK outputs PWM signal at boot
15 OK OK outputs PWM signal at boot, strapping pin
16 OK OK  
17 OK OK  
18 OK OK  
19 OK OK  
21 OK OK  
22 OK OK  
23 OK OK  
25 OK OK  
26 OK OK  
27 OK OK  
32 OK OK  
33 OK OK  
34 OK   input only
35 OK   input only
36 OK   input only
39 OK   input only

 

GPIO 입력 출력 참고 사항

 

ESP32 GPIO와 그 기능에 대한 보다 자세하고 심층적인 분석을 계속 읽어보세요.

 

입력 전용 핀

 

GPIO 34~39는 GPI(입력 전용 핀)입니다. 이 핀에는 내부 풀업 또는 풀다운 저항이 없습니다. 출력으로 사용할 수 없으므로 이 핀은 입력으로만 사용하세요.

GPIO 34

GPIO 35

GPIO 36

GPIO 39

 

ESP-WROOM-32에 통합된 SPI 플래시

 

GPIO 6~GPIO 11은 일부 ESP32 개발 보드에 노출되어 있습니다. 그러나 이 핀은 ESP-WROOM-32 칩의 통합 SPI 플래시에 연결되어 있으며 다른 용도로는 권장되지 않습니다. 따라서 프로젝트에서 다음 핀을 사용하지 마세요.

 

GPIO 6(SCK/CLK)

GPIO 7(SDO/SD0)

GPIO 8(SDI/SD1)

GPIO 9(SHD/SD2)

GPIO 10(SWP/SD3)

GPIO 11(CSC/CMD)

 

정전식 터치 GPIO

 

ESP32에는 10개의 내부 정전식 터치 센서가 있습니다. 이 센서는 인간의 피부와 같이 전하를 유지하는 모든 것의 변화를 감지할 수 있습니다. 따라서 손가락으로 GPIO를 터치할 때 유도되는 변화를 감지할 수 있습니다. 이 핀은 정전식 패드에 쉽게 통합하여 기계적 버튼을 대체할 수 있습니다. 정전식 터치 핀은 ESP32를 딥 슬립에서 깨우는 데에도 사용할 수 있습니다.

 

이러한 내부 터치 센서는 다음 GPIO에 연결됩니다.

 

T0 (GPIO 4)

T1 (GPIO 0)

T2 (GPIO 2)

T3 (GPIO 15)

T4 (GPIO 13)

T5 (GPIO 12)

T6 (GPIO 14)

T7 (GPIO 27)

T8 (GPIO 33)

T9 (GPIO 32)

 

Arduino IDE에서 터치 핀을 사용하는 방법을 알아보세요: Arduino IDE에서 ESP32 터치 핀

 

아날로그-디지털 변환기(ADC)

 

ESP32에는 18 x 12비트 ADC 입력 채널이 있습니다(ESP8266에는 1x 10비트 ADC만 있습니다). 다음은 ADC로 사용할 수 있는 GPIO와 해당 채널입니다.

 

ADC1_CH0(GPIO 36)

ADC1_CH1(GPIO 37)

ADC1_CH2(GPIO 38)

ADC1_CH3(GPIO 39)

ADC1_CH4(GPIO 32)

ADC1_CH5(GPIO 33)

ADC1_CH6(GPIO 34)

ADC1_CH7(GPIO 35)

ADC2_CH0(GPIO 4)

ADC2_CH1(GPIO 0)

ADC2_CH2(GPIO 2)

ADC2_CH3(GPIO 15)

ADC2_CH4(GPIO 13)

ADC2_CH5(GPIO 12)

ADC2_CH6(GPIO 14)

ADC2_CH7(GPIO 27)

ADC2_CH8(GPIO 25)

ADC2_CH9(GPIO 26)

 

ESP32 ADC 핀 사용 방법 알아보기:

 

 

참고: Wi-Fi를 사용할 때는 ADC2 핀을 사용할 수 없습니다. 따라서 Wi-Fi를 사용 중이고 ADC2 GPIO에서 값을 가져오는 데 문제가 있는 경우 대신 ADC1 GPIO를 사용하는 것을 고려할 수 있습니다. 그러면 문제가 해결될 것입니다.

 

ADC 입력 채널은 12비트 분해능을 갖습니다. 즉, 0~4095 범위의 아날로그 판독값을 얻을 수 있으며, 여기서 0은 0V에 해당하고 4095~3.3V에 해당합니다. 또한 코드와 ADC 범위에서 채널의 분해능을 설정할 수 있습니다.

 

ESP32 ADC 핀은 선형 동작이 없습니다. 0과 0.1V, 3.2와 3.3V를 구별하지 못할 것입니다. ADC 핀을 사용할 때 이 점을 염두에 두어야 합니다. 다음 그림에 표시된 것과 유사한 동작이 나타납니다.

 

 

ESP32 ADC 핀 동작

 

소스 보기

 

디지털-아날로그 변환기(DAC)

 

ESP32에는 디지털 신호를 아날로그 전압 신호 출력으로 변환하는 2 x 8비트 DAC 채널이 있습니다. 다음은 DAC 채널입니다.

 

  • DAC1(GPIO25)
  • DAC2(GPIO26)

 

RTC GPIO

 

ESP32에는 RTC GPIO가 지원됩니다. RTC 저전력 하위 시스템으로 라우팅된 GPIO는 ESP32가 딥 슬립 상태일 때 사용할 수 있습니다. 이러한 RTC GPIO는 초저전력(ULP) 코프로세서가 실행 중일 때 ESP32를 딥 슬립 상태에서 깨우는 데 사용할 수 있습니다. 다음 GPIO는 외부 웨이크업 소스로 사용할 수 있습니다.

 

  • RTC_GPIO0(GPIO36)
  • RTC_GPIO3(GPIO39)
  • RTC_GPIO4(GPIO34)
  • RTC_GPIO5(GPIO35)
  • RTC_GPIO6(GPIO25)
  • RTC_GPIO7(GPIO26)
  • RTC_GPIO8(GPIO33)
  • RTC_GPIO9(GPIO32)
  • RTC_GPIO10(GPIO4)
  • RTC_GPIO11(GPIO0)
  • RTC_GPIO12(GPIO2)
  • RTC_GPIO13(GPIO15)
  • RTC_GPIO14(GPIO13)
  • RTC_GPIO15(GPIO12)
  • RTC_GPIO16(GPIO14)
  • RTC_GPIO17(GPIO27)

 

RTC GPIO를 사용하여 ESP32를 딥 슬립에서 깨우는 방법을 알아보세요: Arduino를 사용한 ESP32 딥 슬립 IDE 및 웨이크업 소스

 

PWM

 

ESP32 LED PWM 컨트롤러에는 서로 다른 속성을 가진 PWM 신호를 생성하도록 구성할 수 있는 16개의 독립 채널이 있습니다. 출력으로 작동할 수 있는 모든 핀은 PWM 핀으로 사용할 수 있습니다(GPIO 34~39는 PWM을 생성할 수 없음).

 

PWM 신호를 설정하려면 코드에서 다음 매개변수를 정의해야 합니다.

 

  • 신호 주파수;
  • 듀티 사이클;
  • PWM 채널;
  • 신호를 출력하려는 GPIO.

 

Arduino IDE에서 ESP32 PWM을 사용하는 방법을 알아보세요: Arduino IDE에서 ESP32 PWM

 

I2C

 

ESP32에는 두 개의 I2C 채널이 있으며 모든 핀을 SDA 또는 SCL로 설정할 수 있습니다. Arduino IDE에서 ESP32를 사용할 때 기본 I2C 핀은 다음과 같습니다.

 

GPIO 21(SDA)

GPIO 22(SCL)

 

와이어 라이브러리를 사용할 때 다른 핀을 사용하려면 다음을 호출하기만 하면 됩니다.

 

Wire.begin(SDA, SCL);

 

Arduino IDE를 사용하여 ESP32와 I2C 통신 프로토콜에 대해 자세히 알아보세요: ESP32 I2C 통신(핀 설정, 여러 버스 인터페이스 및 주변 장치)

 

ESP32와 함께 하는 추가 I2C 튜토리얼:

 

 

SPI

 

기본적으로 SPI의 핀 매핑은 다음과 같습니다.

 

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

 

Arduino IDE를 사용하여 ESP32와 SPI 통신 프로토콜에 대해 자세히 알아보세요: ESP32 SPI 통신: 핀 설정, 여러 SPI 버스 인터페이스 및 주변 장치(Arduino IDE)

 

인터럽트

 

모든 GPIO는 인터럽트로 구성할 수 있습니다.

 

ESP32에서 인터럽트를 사용하는 방법을 알아보세요.

 

 

스트래핑 핀

 

ESP32 칩에는 다음과 같은 스트래핑 핀이 있습니다.

 

  • GPIO 0(부팅 모드로 들어가려면 LOW여야 함)
  • GPIO 2(부팅 중에는 플로팅 또는 LOW여야 함)
  • GPIO 4
  • GPIO 5(부팅 중에는 HIGH여야 함)
  • GPIO 12(부팅 중에는 LOW여야 함)
  • GPIO 15(부팅 중에는 HIGH여야 함)

 

이것들은 ESP32를 부트로더 또는 플래싱 모드로 전환하는 데 사용됩니다. USB/Serial이 내장된 대부분의 개발 보드에서는 이러한 핀의 상태에 대해 걱정할 필요가 없습니다. 보드는 핀을 플래싱 또는 부팅 모드에 적합한 상태로 전환합니다. ESP32 부팅 모드 선택에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

 

하지만 주변 장치가 해당 핀에 연결되어 있는 경우 새 코드를 업로드하거나 ESP32를 새 펌웨어로 플래싱하거나 보드를 재설정하는 데 문제가 있을 수 있습니다. 스트래핑 핀에 주변 장치가 연결되어 있고 코드를 업로드하거나 ESP32를 플래싱하는 데 문제가 있는 경우 해당 주변 장치로 인해 ESP32가 올바른 모드로 전환되지 않을 수 있습니다. 부팅 모드 선택 설명서를 읽어 올바른 방향으로 안내받으세요. 재설정, 플래싱 또는 부팅 후 해당 핀은 예상대로 작동합니다.

 

부팅 시 핀 HIGH

 

일부 GPIO는 부팅 또는 재설정 시 상태를 HIGH로 변경하거나 PWM 신호를 출력합니다. 즉, 이러한 GPIO에 출력을 연결한 경우 ESP32를 재설정하거나 부팅할 때 예상치 못한 결과가 발생할 수 있습니다.

 

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6~GPIO 11(ESP32 통합 SPI 플래시 메모리에 연결됨 - 사용하지 않는 것이 좋습니다).
  • GPIO 14
  • GPIO 15

 

활성화(EN)

 

활성화(EN)는 3.3V 레귤레이터의 활성화 핀입니다. 풀업되어 있으므로 접지에 연결하여 3.3V 레귤레이터를 비활성화합니다. 즉, 이 핀을 푸시 버튼에 연결하여 예를 들어 ESP32를 다시 시작할 수 있습니다.

 

GPIO 전류 소모

 

ESP32 데이터시트의 "권장 작동 조건" 섹션에 따르면 GPIO당 소모되는 절대 최대 전류는 40mA입니다.

 

ESP32 내장 홀 효과 센서

 

ESP32에는 또한 주변 환경의 자기장 변화를 감지하는 내장 홀 효과 센서가 있습니다.

 

마무리

 

ESP32 GPIO에 대한 이 참조 가이드가 유용했기를 바랍니다. ESP32 GPIO에 대한 팁이 더 있으면 아래에 댓글을 작성하여 공유해 주세요.

 

ESP32를 처음 사용하는 분이라면 시작하기에 좋은 콘텐츠가 있습니다.

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^