ESP32 칩에는 여러 기능이 있는 48개의 핀이 있습니다. 모든 ESP32 개발 보드에서 모든 핀이 노출되어 있지 않으며 일부 핀은 사용할 수 없습니다.
-ESP-WROOM-32 핀아웃-
esp32 가이드
https://randomnerdtutorials.com/getting-started-with-esp32/
Getting Started with the ESP32 Development Board | Random Nerd Tutorials
This is a getting started guide for the ESP32 Development board. The ESP32 is the ESP8266 sucessor. Loaded with new features: WiFi, Bluetooth, dual core, ...
randomnerdtutorials.com
ESP32 주변 장치
- 18개의 아날로그-디지털 변환기(ADC) 채널
- 3개의 SPI 인터페이스
- 3개의 UART 인터페이스
- 2개의 I2C 인터페이스
- 16개 PWM 출력 채널
- 2개의 디지털-아날로그 변환기(DAC)
- 2개의 I2S 인터페이스
- 10개의 터치 감지 GPIO
다음 표는 입력, 출력으로 사용하기에 가장 좋은 핀과 주의해야 할 핀을 보여줍니다.
녹색으로 강조 표시된 핀은 사용해도 됩니다. 노란색으로 강조 표시된 핀은 사용해도 되지만, 주로 부팅 시 예상치 못한 동작이 발생할 수 있으므로 주의해야 합니다. 빨간색으로 강조 표시된 핀은 입력이나 출력으로 사용하지 않는 것이 좋습니다.'
GPIO | 입력 | 출력 | 비고 |
0 | pull up | OK | 부팅시 PWM 신호 출력 |
1 | TX pin | OK | |
2 | OK | OK | 플래싱모드로 들어가려면 LOW상태 |
3 | OK | RX pin | 부팅시 HIGH 신호 출력 |
4 | OK | OK | |
5 | OK | OK | 부팅시 PWM 신호 출력,strapping pin |
6 | x | x | SPI 플래시에 연결됨 |
7 | x | x | SPI 플래시에 연결됨 |
8 | x | x | SPI 플래시에 연결됨 |
9 | x | x | SPI 플래시에 연결됨 |
10 | x | x | SPI 플래시에 연결됨 |
11 | x | x | SPI 플래시에 연결됨 |
12 | OK | OK | 부팅 중 HIGH 신호시 부팅 실패,strapping pin |
13 | OK | OK | |
14 | OK | OK | 부팅시 PWM 신호 출력 |
15 | OK | OK | 부팅시 PWM 신호 출력,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 | 입력만 가능 | |
35 | OK | 입력만 가능 | |
36 | OK | 입력만 가능 | |
39 | OK | 입력만 가능 |
입력 전용 핀
GPIO 34~39는 GPI(입력 전용 핀)입니다. 이 핀에는 내부 풀업 또는 풀다운 저항이 없습니다. 출력으로 사용할 수 없으므로 이 핀은 입력으로만 사용하세요.
SPI 플래시 핀
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를 터치할 때 유도되는 변화를 감지할 수 있습니다
- T0(GPIO 4)
- T1(GPIO 0)
- T2(GPIO2)
- T3(GPIO 15)
- T4(GPIO 13)
- T5(GPIO 12)
- T6(GPIO 14)
- T7(GPIO 27)
- T8(GPIO 33)
- T9(GPIO 32)
아날로그-디지털 변환기(ADC)
ESP32에는 18 x 12비트 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(GPIO2)
- 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)
ADC 입력 채널은 12비트 분해능을 갖습니다. 즉, 0~4095 범위의 아날로그 판독값을 얻을 수 있으며, 여기서 0은 0V에 해당하고 4095~3.3V에 해당합니다. 또한 코드와 ADC 범위에서 채널의 분해능을 설정할 수 있습니다.
ESP32 ADC 핀은 선형적인 동작을 하지 않습니다. 아마도 0과 0.1V, 또는 3.2와 3.3V를 구별하지 못할 것입니다. ADC 핀을 사용할 때 이 점을 염두에 두어야 합니다. 다음 그림에 표시된 것과 유사한 동작을 얻게 됩니다.
디지털-아날로그 변환기(DAC)
ESP32에는 디지털 신호를 아날로그 전압 신호 출력으로 변환하기 위한 2 x 8비트 DAC 채널이 있습니다. 다음은 DAC 채널입니다.
- DAC1(GPIO25)
- DAC2(GPIO26)
RTC GPIO
ESP32에는 RTC GPIO 지원이 있습니다. RTC 저전력 서브시스템으로 라우팅된 GPIO는 ESP32가 딥 슬립 상태일 때 사용할 수 있습니다. 이러한 RTC GPIO는 초저전력(ULP) 코프로세서가 실행 중일 때 ESP32를 딥 슬립 상태에서 깨우는 데 사용할 수 있습니다.
- 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)
PWM
ESP32 LED PWM 컨트롤러는 서로 다른 속성을 가진 PWM 신호를 생성하도록 구성할 수 있는 16개의 독립 채널을 가지고 있습니다. 출력으로 작동할 수 있는 모든 핀은 PWM 핀으로 사용할 수 있습니다(GPIO 34~39는 PWM을 생성할 수 없음).
I2C
ESP32에는 두 개의 I2C 채널이 있으며 모든 핀은 SDA 또는 SCL로 설정할 수 있습니다. Arduino IDE와 함께 ESP32를 사용할 때 기본 I2C 핀은 다음과 같습니다.
- GPIO 21(SDA)
- GPIO 22(SCL)
Wire.begin(SDA, SCL);
SPI
기본적으로 SPI의 핀 매핑은 다음과 같습니다.
인터럽트
모든 GPIO는 인터럽트로 구성될 수 있습니다.
스트래핑 핀
ESP32 칩에는 다음과 같은 스트래핑 핀이 있습니다.
- GPIO 0 (부팅 모드로 들어가려면 LOW여야 함)
- GPIO 2(부팅 중에는 플로팅 또는 LOW 상태여야 함)
- 4번
- GPIO 5(부팅하는 동안 HIGH여야 함)
- GPIO 12(부팅하는 동안 LOW여야 함)
- GPIO 15(부팅하는 동안 HIGH여야 함)
이것들은 ESP32를 부트로더 또는 플래싱 모드로 전환하는 데 사용됩니다. 내장 USB/Serial이 있는 대부분의 개발 보드에서 이러한 핀의 상태에 대해 걱정할 필요가 없습니다. 보드는 핀을 플래싱 또는 부트 모드에 적합한 상태로 전환합니다.
하지만 해당 핀에 주변 장치가 연결되어 있는 경우 새 코드를 업로드하거나 ESP32를 새 펌웨어로 플래싱하거나 보드를 재설정하는 데 문제가 있을 수 있습니다. 스트래핑 핀에 주변 장치가 연결되어 있고 코드를 업로드하거나 ESP32를 플래싱하는 데 문제가 있는 경우 해당 주변 장치로 인해 ESP32가 올바른 모드로 전환되지 않을 수 있습니다.
BOOT 시 HIGH
일부 GPIO는 부팅 또는 재설정 시 상태를 HIGH로 변경하거나 PWM 신호를 출력합니다. 즉, 이러한 GPIO에 출력을 연결한 경우 ESP32가 재설정되거나 부팅될 때 예상치 못한 결과가 발생할 수 있습니다.
- GPIO1
- GPIO 3
- GPIO 5
- GPIO 6~GPIO 11(ESP32 통합 SPI 플래시 메모리에 연결됨 - 사용 권장하지 않음).
- GPIO 14
- GPIO 15
활성화 (EN)
Enable(EN)은 3.3V 레귤레이터의 enable 핀입니다. 풀업되어 있으므로 접지에 연결하여 3.3V 레귤레이터를 비활성화합니다. 즉, 이 핀을 푸시버튼에 연결하여 예를 들어 ESP32를 재시작할 수 있습니다.
GPIO 전류
ESP32 데이터시트에 따르면 GPIO당 인출되는 절대 최대 전류는 40mA입니다.
'ESP32 > ESP32' 카테고리의 다른 글
ESP32 Timer 구현하기 - millis()함수 사용하기 (4) | 2024.10.16 |
---|---|
ESP32 ADC - 아날로그 값 읽기 (0) | 2024.10.16 |
ESP32 버튼,LED 제어하기 (0) | 2024.10.15 |
아두이노에서 ESP32 PWM 알아보기 (1) | 2024.09.27 |
아두이노 IDE에 ESP32 사용환경 설치하기 (0) | 2021.07.19 |