ESP32 개발 보드와 핀맵, 그리고 주요 핀들

ESP32 개발 보드와 핀맵, 그리고 주요 핀들

1. ESP32 개발 보드

앞선 글들에서 ESP8266과 ESP32 개발 보드에 마이크로 파이썬 개발 환경을 간단하게 구축하는 방법을 소개한 바 있었다. (https://blog.naver.com/mythee1/223271251974).

그리고, ESP8266 보드를 실제로 사용하기 위한 피운 맵을 소개(https://blog.naver.com/mythee1/223271723010) 했었다. ESP8266도 wi fi 기능을 지원하기 때문에, 그 자체로 다양한 IOT 용도에 사용할 수 있으나, 만일 좀 더 고성능의 개발 보드를 원하는 경우에는 ESP8266대신 ESP32 개발 보드를 고려해 볼 수 있다.

2016년에 개발된 ESP32 개발 보드는 2014년에 개발된 ESP8266보드에 비해 , 여러 가지로 향상된 성능을 가지고 있는데, 주요 사양을 아두이노 우노 및 피코, ESP8266과 비교하면 다음과 같다.

아두이노 우노

라즈베리파이 피코

ESP8266

ESP32

출시연도

2011(R3)

2021

2014

2016

CPU

8 Bit Single Core

32 Bit-Dual Core

32 Bit Single Core

32 Bit Double Core

클럭 속도

16 MHz

133 MHz

80MHz

160MHz

메모리

2 KB SRAM

264KB SRAM

2MB Flash Memory

No ROM

160KB RAM

448KB ROM

520KB RAM

Digital 입출력 핀 수

14

26 (GP0~GP28번)

단, 23/24/25 없음

11

(NodeMCU 경우)

36

Analog 입력 수

6

3+1(내장 온도센서)

1

18

ADC

10 Bit

12 Bit

10 Bit

12 Bit

PWM

6

16

8

16

온도센서

X

내장

X

내장

(최근 버전은 삭제)

내장 LED 핀

13

25

16

2

wi fi

X

(PICO-W)

802.11 b/g/n

802.11 b/g/n

802.11 b/g/n

Bluetooth

X

(PICO-W)

5.2

X

4.2

Note) ESP8266 개발보드에 비해, ESP32개발 보드는 여러 업체에서 보다 다양한 형태로 판매되므로, 제조사에 따라 일부 사양(특히 핀수, 외형 크기 등)에 차이가 있을 수 있다.

2. ESP32 핀 맵

ESP32개발 보드는 여러 업체에서 보다 다양한 형태로 판매된다. 따라서 제조사에 따라 모양이나, 핀의 수에 차이가 있다.

따라서, 자신이 사용하려는 개발 보드의 제조사 사이트에서 피운 맵을 별도로 확인하는 것이 가장 바람직하다. 업체별로 30핀, 36핀 등 다양하다.

다만, 보편적으로 널리 사용되는 형태는 다음과 같은 NodeMCU 형태로 30핀 형태이 제품이며,

이 보드의 pinmap은 다음과 같다.

각 용도별 핀들은 다음과 같다.

1) 입출력 겸용 GPIO핀 – GP0~GP5, GP12~19, GP21-GP23, GP32-GP33

위의 ESP32의 물리적인 핀의 수는 30개이나, GP의 범위는 0번부터 39번까지의 범위이나. 중간에 누락되는 번호들이 있다. 중간에 누락된 번호인 6-11, 20, 24, 28-31 는 GPIO용으로 사용할 수 없다. 34-39 는 입력전용으로 출력용으로는 사용할 수 없다.

누락된 번호의 핀을 지정하면 다음과 같은 오류 메시지들을 받게 된다.

참고로 6-11 범위의 핀들은 일부 보드에서 사용이 가능한 경우도 있다고 하나, ESP32 칩의 내부 용도(SPI Flash연결)로사용되므로, 코딩시 지정이 가능하더라도 사용하지 말아야 한다. 참고로 위의 보드에서는 다음과 같은 에러 메시지를 받게 된다.

2) 입력 전용 GPIO핀 – GP34~GP39 (37, 38은 단자 생략)

이들 범위의 GPIO핀들은 입력전용으로만 사용이 가능하다.(이들 핀들 외에 출력용도로 사용가능한 핀들은 입력용으로 사용 가능)

만일 GP34-39 핀들을 출력용으로 사용하려 하면 다음과 같은 에러 메시지를 받게 된다.

다만, 위에 소개한 30PIN보드에서 GP37, GP38은 코드에서 지정은 가능하지만 핀맵에서는 번호를 찾을수 없는 상태이다. 따라서 실질적으로 입력전용으로 사용가능한 핀은 GP 34, GP35, GP36, GP39인 셈이다.

3) PWM출력핀 – GP0~GP5, GP12~19, GP21-GP23, GP32-GP33

DO 출력이 가능한 모든 GP 핀들은 PWM 출력이 가능하다.

4) I2C 통신

기본적으로는 GP21을 SDA로, GP22를 SCL로 사용한다.

5) SPI 통신

기본적으로는 GP23을 MOSI로, GP19를 MISO, GP18을 CLK, GP5를 CS로 사용한다.

이 대신, GP13을 MOSI로, GP12를 MISO, GP14를 CLK, GP15를 CS로 사용할수도 있다.

6) On-Board 내장 LED

ESP32의 On-Board LED는 GP2에 연결되어 있다.