ESP32

ESP32는 와이파이 및 블루투스 기능을 모두 통합한 저비용, 에너지 효율적인 마이크로컨트롤러 제품군이다. 이 칩들은 듀얼 코어 및 싱글 코어 변형으로 제공되는 텐실리카 Xtensa LX6 마이크로프로세서, Xtensa LX7 듀얼 코어 프로세서 또는 단일 코어 RISC-V 마이크로프로세서를 포함한 다양한 처리 옵션을 특징으로 한다. 또한 ESP32는 내장 안테나 스위치, RF 발룬, 전력 증폭기, 저잡음 수신기, 필터 및 전력 관리 모듈과 같은 무선 데이터 통신에 필수적인 구성 요소를 통합한다.

일반적으로 ESP32는 특정 장치용 인쇄 회로 기판에 내장되거나 다양한 GPIO 핀 및 커넥터를 포함하는 개발 키트의 일부로 제공되며, 구성은 모델 및 제조업체에 따라 달라진다. ESP32는 에스프레시프 시스템즈에서 설계했으며 TSMC의 40 nm 공정을 사용하여 제조한다. 이는 ESP8266 마이크로컨트롤러의 후속 제품이다.

 특징 
섬네일|upright=1.5|ESP32 기능 블록 다이어그램
섬네일|ESP32 다이 샷. 칩 영역 대부분은 상단 금속층의 전력 분배 네트워크로 덮여 있다.
ESP32의 특징은 다음과 같다.
 프로세서:
 중앙 처리 장치: 160 또는 240 MHz에서 작동하며 최대 600 DMIPS 성능을 내는 Xtensa 듀얼 코어 (또는 싱글 코어) 32비트 LX6 마이크로프로세서
 초저전력 (ULP) 코프로세서
 메모리: 520 KiB RAM, 448 KiB ROM
 무선 연결:
 와이파이: 802.11 b/g/n
 블루투스: v4.2 BR/EDR 및 BLE (와이파이와 라디오 공유)
 주변 장치 인터페이스:
 34개 프로그래밍 가능 GPIO
 10 × 정전식 감응 센서 (정전식 감응 GPIO)
 2 × 12비트 SAR ADC, 최대 18개 채널, 4단계 감쇠
 2 × 8비트 디지털-아날로그 변환회로 (ESP32-C3 및 ESP32-S3 제외)
 델타-시그마 변조 이진 출력 (최대 8채널)
 모터 펄스 폭 변조
 LED 펄스 폭 변조 (최대 16채널)
 적외선 원격 컨트롤러 (TX/RX, 최대 8채널)
 펄스 카운터 (완전 직교 인코더 디코딩 가능)
 표준 통신 인터페이스:
 4 × 직렬 주변기기 인터페이스 버스
 2 × I²S 인터페이스
 2 × I²C 인터페이스
 3 × UART
 SD/SDIO/CE-ATA/MMC/eMMC 호스트 컨트롤러
 SDIO/SPI 슬레이브 컨트롤러
 전용 DMA 및 계획된 IEEE 1588 정밀 시각 프로토콜 지원을 포함한 이더넷 MAC 인터페이스
 CAN 버스 2.0
 보안:
 WPA, WPA2, WPA3 (버전에 따라 다름) 및 WLAN Authentication and Privacy Infrastructure (WAPI)를 포함한 모든 IEEE 802.11 표준 보안 기능 지원
 보안 부팅
 플래시 암호화
 1024비트 OTP, 고객용은 최대 768비트
 암호화 하드웨어 가속: 고급 암호화 표준, SHA-2, RSA, 타원 곡선 암호, 난수 발생기
 전력 관리
 내부 저전압 강하 레귤레이터
 RTC를 위한 개별 전력 도메인
 5 μA 딥 슬립 전류
 GPIO 인터럽트, 타이머, ADC 측정, 정전식 터치 센서 인터럽트로부터 깨어나기

 ESP32-xx 제품군 
오리지널 ESP32가 출시된 이래로 여러 변형이 소개되고 발표되었다. 이들은 ESP32 마이크로컨트롤러 제품군을 구성한다. 이 칩들은 다른 중앙 처리 장치와 기능을 가지고 있지만, 모두 동일한 SDK를 공유하고 있으며 대부분 코드 호환성이 있다. 또한 오리지널 ESP32는 수정되었다 (예: ESP32 ECO V3 참조).

 ESP32 
 Xtensa 싱글/듀얼 코어 32비트 LX6 마이크로프로세서
 단정밀도 부동소수점 장치 (FPU) 지원
 와이파이: 802.11 b/g/n
 블루투스: v4.2 BR/EDR 및 BLE (와이파이와 라디오 공유)
 34 GPIO
 2 × 12비트 SAR ADC, 최대 18채널
 2 × 8비트 DAC

 ESP32-S2 
 싱글 코어 Xtensa LX7 CPU, 최대 240 MHz (20 MHz에서 실행되는 ULP 코프로세서 포함)
 부동소수점 장치 없음 (FPU 없음)
 320 KiB SRAM, 128 KiB ROM, 및 16 KiB RTC SRAM
 와이파이 2.4 GHz (IEEE 802.11b/g/n)
 블루투스 없음
 43 GPIO
 2 × 13비트 SAR ADC, 최대 20채널
 2 × 8비트 DAC
 USB 온더고

 ESP32-S3 
섬네일|ESP32-S3-Wroom-1 보드
 듀얼 코어 Xtensa LX7 CPU, 최대 240 MHz, 및 단정밀도 부동소수점 장치 지원
 머신러닝 애플리케이션 가속을 위한 추가 명령어
 512 KiB SRAM, 384 KiB ROM, 및 16 KiB RTC SRAM
 쿼드 SPI 또는 옥탈 SPI를 통해 외부 PSRAM 및 플래시에 연결 가능하며, 동일한 32 MiB 주소 공간 공유
 약 17.5 MHz 클럭 속도로 작동하는 초저전력 RISC-V (RV32IMC) 코프로세서
 이전 ESP32 및 ESP32-S2와 유사한 초저전력 유한 상태 기계 (FSM) 코프로세서
 와이파이 2.4 GHz (IEEE 802.11 b/g/n)
 블루투스 5 (LE)
 45 GPIO
 통합 이더넷 MAC 없음
 2 × 12비트 SAR ADC, 최대 20채널
 USB 온더고

 ESP32-C2 
 최대 120 MHz로 작동하는 32비트 RISC-V 싱글 코어 프로세서, RV32IMC ISA 구현
 온칩 576 KB ROM, 272 KB SRAM (16 KB 캐시용)
 와이파이 2.4 GHz (IEEE 802.11b/g/n)
 블루투스 5 (LE)
 14 GPIO (QFN24)
 SPI, UART, I2C, LED PWM 컨트롤러, General DMA 컨트롤러 (GDMA), SAR ADC, 온도 센서
 USB 미지원

 ESP32-C3 
섬네일|ESP32-C3-32S가 장착된 NodeMCU 보드
 싱글 코어 32비트 RISC-V CPU, 최대 160 MHz
 400 KiB SRAM, 384 KiB ROM, 및 8 KiB RTC SRAM
 와이파이 2.4 GHz (IEEE 802.11b/g/n)
 블루투스 5 (LE)
 22 (QFN32) 또는 16 (QFN32) 또는 15 (ESP8685 QFN28) GPIO
 2 × 12비트 SAR ADC
 ESP8266과 핀 호환
 USB 장치

 ESP32-C6 
 고성능 32비트 RISC-V CPU, 최대 160 MHz, RV32IMAC 구현
 저전력 32비트 RISC-V CPU, 최대 20 MHz, RV32IMAC 구현
 512 KiB SRAM 및 320 KiB ROM
 IEEE 802.11ax (Wi-Fi 6) 2.4 GHz에서, 11ax 모드에서 20 MHz 대역폭, 11b/g/n 모드에서 20 또는 40 MHz 대역폭 지원
 IEEE 802.15.4 (스레드 + 직비)
 블루투스 5.3 (LE)
 30 (QFN40) 또는 22 (QFN32) GPIO
 USB 장치

 ESP32-H2 
 싱글 코어 32비트 RISC-V CPU, 최대 96 MHz
 256 KB SRAM
 IEEE 802.15.4 (스레드 + 직비)
 블루투스 5.3 (LE)
 와이파이 미지원
 19 GPIO
 USB 장치

 발표됨 
 ESP32-C5 
 싱글 코어 32비트 RISC-V CPU, 최대 240 MHz
 저전력 32비트 RISC-V CPU, 최대 40 MHz.
 384 KB SRAM 및 320 KB ROM
 IEEE 802.11ax (Wi-Fi 6) 2.4 및 5 GHz에서, 11ax 모드에서 20 MHz 대역폭, 11b/g/n 모드에서 20 또는 40 MHz 대역폭 지원
 IEEE 802.15.4 (스레드 + 직비)
 블루투스 5 (LE)
 20개 이상 GPIO

 ESP32-P4 
 고성능 듀얼 코어 32비트 RISC-V CPU, 최대 400 MHz
 RV32IMAFC_Zicsr_Zifencei 및 사용자 지정 AI/벡터 명령어 구현
 단정밀도 부동소수점 장치 (FPU) 지원
 저성능 싱글 코어 32비트 RISC-V CPU, 최대 40 MHz
 RV32IMAC_Zicsr_Zifencei ISA 확장 구현
 고성능 코어 시스템에 768 KiB SRAM
 고성능 코어 시스템에 8 KiB TCM
 저전력 서브시스템에 32 KiB SRAM
 PSRAM 지원
 H.264를 포함한 다양한 미디어 인코딩 프로토콜을 위한 통합 하드웨어 가속기
 와이파이 또는 블루투스 없음
 50개 이상 GPIO

 QFN 패키지 칩 및 모듈 
ESP32는 49개의 패드를 가진 다양한 크기의 QFN 패키지에 담겨 있다. 구체적으로는 측면에 48개의 연결 패드와 하단에 하나의 큰 열 패드 (접지 연결)가 있다.

 칩 
ESP32 시스템 온 칩 집적회로는 6 mm × 6 mm 및 5 mm × 5 mm 크기의 QFN 패키지에 담겨 있다.

2020년, ESP32-D0WDQ6 및 ESP32-D0WD 칩은 V3 버전 (ESP32 ECO V3)이 출시되어 일부 버그를 수정하고 이전 버전보다 개선되었다.

 모듈 

ESP32 PICO system in package 모듈은 ESP32 실리콘 칩, 크리스탈 발진기, 플래시 메모리 칩, 필터 커패시터 및 RF 매칭 링크를 단일 7 mm × 7 mm 크기의 QFN 패키지에 결합한다.

처음 출시된 PICO는 ESP32-PICO-D4로, 240MHz의 듀얼 CPU, 4MiB 내장 플래시, 40MHz 발진기 및 34개의 GPIO를 갖추고 있다.

이후 2020년에 ESP32 ECO V3 웨이퍼를 기반으로 하는 ESP32-PICO-V3 및 ESP32-PICO-V3-02 모듈이 출시되었다.

2022년에는 USB OTG 및 내부 PSRAM이 포함된 ESP32-S3-PICO-1 모듈이 출시되었다.

 인쇄 회로 기판 
 표면 실장 모듈 보드 
ESP32 기반 표면 실장 인쇄 회로 기판 모듈은 ESP32 SoC를 직접 포함하며 다른 회로 기판에 쉽게 통합할 수 있도록 설계되었다. 아래 나열된 모듈의 PCB 트레이스 안테나에는 구불구불한 역F형 안테나 디자인이 사용된다. 플래시 메모리 외에도 일부 모듈에는 슈도정적 RAM (pSRAM)이 포함된다.

 개발 및 기타 보드 
섬네일|SparkFun Thing PlusESP32 WROOM
섬네일|ESP32 개발 보드, SH1106 OLED 디스플레이, 브레드보드에 USB 전력 측정기 연결
개발 및 브레이크아웃 보드는 배선을 확장하고 기능을 추가할 수 있으며, 종종 ESP32 모듈 보드를 기반으로 하여 개발 목적으로, 특히 브레드보드와 함께 사용하기 쉽도록 만들어진다.

† ESP32 SoC가 개발 보드에 직접 통합됨; 모듈 보드는 사용되지 않음.

 프로그래밍 
ESP32 프로그래밍에 사용되는 프로그래밍 언어, 프레임워크, 플랫폼 및 환경:

 ESP-IDF – ESP32, ESP32-S, ESP32-C 및 ESP32-H 시리즈 SoC를 위한 에스프레시프의 공식 IoT 개발 프레임워크.
 아두이노-ESP32 – ESP32, ESP32-S2, ESP32-S3 및 ESP32-C3를 위한 아두이노 코어.
 ESP32forth – ESP32를 위한 FORTH 구현
 에스프루이노 – Node.js를 밀접하게 에뮬레이트하는 JavaScript SDK 및 펌웨어
 마이크로파이썬 (및 CircuitPython) – 마이크로컨트롤러를 위한 파이썬 3의 간결한 구현
 Mongoose OS – 마이크로컨트롤러의 연결된 제품을 위한 운영체제; JavaScript 또는 C로 프로그래밍 가능. 에스프레시프 시스템즈, AWS IoT, Google Cloud IoT에서 권장하는 플랫폼.
 ESP32를 위한 mruby
 ESP32를 위한 님
 NodeMCU – Lua 기반 펌웨어
 러스트
 스위프트
 공식적으로 지원되는 Espressif 통합 개발 프레임워크 (ESP-IDF) 확장 프로그램을 포함한 비주얼 스튜디오 코드
 Zerynth – ESP32를 포함한 사물인터넷 및 마이크로컨트롤러를 위한 파이썬
 Matlab 시뮬링크

 수용 및 사용 
ESP32의 상업적, 산업적, 학문적 사용:

 상업용 장치에서의 사용 
 알리바바 그룹의 IoT LED 손목 밴드, 2017년 그룹 연례 모임 참가자들이 사용. 각 손목 밴드는 "픽셀"로 작동하며, 조율된 LED 조명 제어 명령을 수신하여 "라이브 무선" 화면을 형성할 수 있도록 한다.
 딩톡의 M1, 생체 인식 출퇴근 기록 시스템.
 Pium, 가정용 향수 및 아로마테라피 장치.
 하드커널의 오드로이드 고, 오드로이드 10주년을 기념하여 제작된 ESP32 기반 휴대용 게임 장치 키트.
 플레이데이트, 패닉 Inc.와 틴에이지 엔지니어링이 공동 개발한 휴대용 비디오 게임 콘솔.
 Octopus Energy Mini, ESP32-C6 기반 실시간 에너지 모니터.
 Mysa 스마트 온도 조절기, ESP32-WROOM 기반.

 산업 장치에서의 사용 
 TECHBASE의 Moduino X 시리즈 X1 및 X2 모듈은 산업 자동화 및 모니터링을 위한 ESP32-WROVER / ESP32-WROVER-B 기반 컴퓨터로, 디지털 입출력, 아날로그 입력 및 다양한 컴퓨터 네트워킹 인터페이스를 지원한다.
 NORVI IIOT 산업 장치는 산업 자동화 및 모니터링을 위한 ESP32-WROVER / ESP32-WROVER-B SOC를 갖추고 있으며, 디지털 입력, 아날로그 입력, 릴레이 출력 및 여러 통신 인터페이스를 제공한다. 확장 모듈로 LoRa 및 Nb-IoT를 지원한다.

 학문적 사용 
 ESP32 장치는 교육 환경 및 학술 연구 프로젝트에 활용된다. 예를 들어, 이 장치들은 다른 전기 가전제품의 현재 소비량과 계약된 전력 용량을 고려하여 전기차 충전을 모니터링하고 제어하도록 설계된 스마트 홈 시스템을 개발하는 데 사용되었다. 또한 ESP32는 저렴한 드론 제작과 같은 DIY 프로젝트에도 사용된다.

 ESP32의 문서화되지 않은 HCI 명령어 

2025년 3월, Tarlogic Security의 연구원들은 ESP32 블루투스 펌웨어에서 문서화되지 않은 HCI(Host Controller Interface) 명령어를 발견했으며, 이는 그 기능과 잠재적 영향에 대한 논의를 촉발했다. 이 발견은 2025년 3월 6일 RootedCON 컨퍼런스에서 Tarlogic Security 팀에 의해 발표되었다.

식별된 명령어(예: Write Memory (0xFC02))는 주로 디버깅 및 테스트 목적으로 사용되는 공급업체별 HCI 명령어이다. 이러한 유형의 명령어는 개발 및 문제 해결에 도움을 주기 위해 블루투스 컨트롤러 구현에서 흔히 사용된다. 이들은 표준 HCI 명령어 세트의 일부가 아니며 일반적으로 통제된 환경에서 사용된다. 처음에는 "백도어"로 묘사되었지만, 추가 설명에서는 "문서화되지 않은 디버깅 기능"으로 분류되었다. 이 명령어는 표준 블루투스 연결을 통해 원격으로 접근할 수 없지만, 개체가 장치에 물리적으로 접근하거나 HCI-UART 구성으로 작동하는 경우 상호 작용할 수 있다.

에스프레시프 시스템즈는 이 명령어에 대해 명확하게 설명하며, 이들은 디버깅을 위한 것이며 정상 작동 조건에서는 보안 위험을 초래하지 않는다고 밝혔다. 회사는 이 명령어들이 원격으로 트리거될 수 없으며 표준 블루투스 작업에서 사용되지 않는다고 강조했다. 이 명령어들은 ESP32 칩에만 존재하며, ESP32-C, ESP32-S, ESP32-H 시리즈에는 포함되어 있지 않다. 보안 커뮤니티에서 제기된 우려를 해소하기 위해 에스프레시프는 향후 ESP-IDF 버전에 이 디버깅 명령어에 대한 접근을 제한하고 공급업체별 HCI 명령어에 대한 문서화를 개선하는 업데이트를 포함할 것이라고 발표했다. 이러한 조치는 투명성을 높이고 개발자들이 사용 가능한 기능에 대해 잘 알 수 있도록 하는 것을 목표로 한다.

 같이 보기 
 사물인터넷
 최신 ESP32 프로젝트 모음

 각주 

 외부 링크 
 에스프레시프 ESP32 개요
 에스프레시프 ESP32 자료
 에스프레시프 ESP-IDF 프로그래밍 가이드
 에스프레시프 ESP32 포럼
 https://gist.github.com/sekcompsci/2bf39e715d5fe47579fa184fa819f421

분류:마이크로컨트롤러