ESP32 이해
ESP32 SoC 이해
- ESP32 SoC 란?
- ESP32 SoC 특징
- ESP32는 소형 IoT기기에 탑재하기 위한 무선 통신 컨트롤러 장치
- Wi-Fi와 Bluetooth가 통합된 SoC모듈
- 주로 모바일, 웨어러블 디바이스 및 IoT통신 제품에 탑재하기 위해 설계됨
- HW spec.
- Processor : Xtensa® single-/dual-core 32-bit LX6 microprocessor(s),
up to 600 MIPS (200 MIPS for ESP32-S0WD, 400 MIPS for ESP32-D2WD)
- Memory: 448 KB ROM, 520 KB SRAM, 16 KB SRAM in RTC
- 2.4 GHz Wi-Fi & Bluetooth
- Peripherals : Capacitive touch sensors, Hall sensor, SD card interface, Ethernet, high-speed SPI, UART, I2S and I2C
- Ultra-low-power
ESP32 SoC
- 소형 IoT기기에 탑재하기 위한 무선 통신 컨트롤러 장치
- Wi-Fi와 Bluetooth 통합
- 모바일, 웨어러블 디바이스 및 IoT 통신 제품에 탑재
ESP32 SoC 구조
- 단일 칩으로 구성
- 칩 내부에 CPU를 비롯한 네트워크 및 IO 디바이스 Integration
단일 칩 구성
ESP32 : CPU & On-Chip Memory
- CPU(Processor)
- Xtensa® single-/dual-core 32-bit LX6 microprocessor(s)
- up to 600 MIPS (200 MIPS for ESP32-S0WD, 400 MIPS for ESP32-D2WD)
- On-Chip Memory
- 448 KB ROM
- 520 KB SRAM
- 16 KB SRAM in RTC
- ESP32-D0WDR2-V3 provides 2 MB PSRAM
ESP32: WiFi
- 802.11 b/g/n
- 802.11 n (2.4 GHz), up to 150 Mbps
- WMM
- TX/RX A-MPDU, RX A-MSDU
- Immediate Block ACK
- Defragmentation
- Automatic Beacon monitoring (hardware TSF)
- 4 × virtual Wi-Fi interfaces
- Antenna diversity
802.11 b/g/n (무선랜)
ESP32: Bluetooth
- Bluetooth v4.2, BLE
- Class-1, Class-2, Class-3
- +12 dBm transmitting power
- NZIF receiver with –97 dBm BLE sensitivity
- Adaptive Frequency Hopping (AFH)
- Standard HCI based on SDIO/SPI/UART
- High-speed UART HCI, up to 4 Mbps
- Bluetooth 4.2 BR/EDR BLE dual mode controller
- Synchronous Connection-Oriented/Extended (SCO/eSCO)
- CVSD and SBC for audio codec
- Bluetooth Piconet and Scatternet
- Multi-connections in Classic BT and BLE
- Simultaneous advertising and scanning
ESP32: Peripheral
- 34 × programmable GPIOs
- 12-bit SAR ADC up to 18 channels
- 2 × 8-bit DAC
- 10 × touch sensors
- 4 × SPI
- 2 × I²S
- 2 × I²C
- 3 × UART
- 1 host (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Ethernet MAC interface with dedicated DMA and IEEE 1588 support
- CAN 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM up to 16 channels
- Hall sensor
ESP32: Security
- Secure boot
- Flash encryption
- 1024-bit OTP, up to 768-bit for customers
- Cryptographic hardware acceleration (AES, Hash, RSA, ECC)
- Random Number Generator (RNG)
ESP32: RTC & Low Power Management
- RTC (Real Time Clock)
- PMU (Power Management Unit)
- ULP(Ultra Low Power) co-processor
- ULP RISC-V co-processor
- ULP FSM co-processor
ESP32 모듈
- ESP32 SoC를 이용하여 사용자가 사용하기 쉽게 모듈화 설계
- ESP32 SoC와 외부 연결이 용이하도록 설계
- WiFi/BT RF 특성 튜닝 된 안테나 제공
- ESP32 WROOM
- 2.4 GHz Wi-Fi + Bluetooth® + Bluetooth LE module
- Built ESP32 series of SoCs, Xtensa® dual-core 32-bit LX6 microprocessor 4/8/16 MB flash
- 26 GPIOs, rich set of peripherals
- On-board PCB antenna or external antenna connector
- ESP32-WROVER
- ESP32 + SPI PSRAM
- Higher level application
ESP32-WROOM
- ESP32를 이용한 임베디드 보드 개발시 대부분 ESP32 모듈 사용
- ESP32 모듈 사용시 장점
- 즉시 제품화 가능하도록 대부분의 하드웨어 설계 완료 됨
- 일부 필요한 센서 등 IO 장치만 추가로 설계하여 사용 가능
- WiFi/BT 안테나 회로 구현
- 별도로 안테나 성능을 높이기 위한 RF 설계 불필요
- 제품화에 필요한 RF 인증시험 완료된 모듈 사용하여 제품화 용이
- ESP32-WROOM
ESP32 보드 개발 -> 대부분 ESP32 모듈 사용
즉시 제품화 가능
WiFi/BT RF 설계 불필요
- ESP32-WROOM 모듈의 I/O interface는 제공된 datasheet을 통하여 확인 가능
- esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf
ESP32-WROOM : Pin Description
Kepler-ESP A Board
Overview
- Kepler-ESP A의 주요 구성은 ESP32 프로세서가 탑재된 메인 보드 1종, 센서 보드 1종, 인터페이스 보드 2종, 릴레이 보드 1종과 다양한 센서 모듈로 구성
Main board layout
Block Diagram
회로 : ESP32-WROOM
- 제공된 schematic(회로도)을 이용하여 회로 설계 내용 확인
- KEPLER-ESP-A_DUAL_BLUE_3.0V.pdf
- ESP32-WROOM 모듈을 이용한 회로도 설계
- 모듈의 I/O interface는 제공된 datasheet을 통하여 확인 가능
- esp32-wroom-32d_esp32-wroom 32u_datasheet_en.pdf
회로 : Power
- Power
- 동작 전압범위는 2.3V~3.6V
- 단일 전원 공급 장치 사용할 경우 권장 전압은 3.3V, 500mA이상
- 전원 공급
- 2개의 USB장치(USB1, USB2)중 하나를 통해 공급이 가능
- 기본적으로 USB1(Debug USB)장치를 통해 전원입력 및 UART 통신
- 소비전력이 큰 경우(약 500mA이상) USB2에 별도의 USB Adapter(1000mA이상)를 이용
- 전원 공급 회로
- USB장치에서 공급받은 5V전원은 레귤레이터(Regulator)를 통해 3.3V 전원 생성
- 외부확장인터페이스(Connector Interface)의 경우 3.3V~5V전압의 입출력장치를 연결하기 위해서 Power Enable된 5V전압을 확장인터페이스로 인가
확인하기
회로 : Debug (USB/UART)
- USB/UART I/F (USB1)
- Power USB, Debug USB(Power겸용)로 구성
- Debug USB / UART0
- USB to UART(FT232)장치를 통해 RS232통신 규격 제공
- ESP32의 UART0포트를 통해 데이터 신호 입출력
- RTS(request To Send)와 DTR(Data Terminal Ready)을 통한 하드웨어 통신제어
회로 : Blink LED/RGB LED
ESP32 개발 환경
소프트웨어 개발 환경
- 교차 개발 환경 (Cross Development Platform)
- 소프트웨어를 개발하는 시스템(컴퓨터)과 실제 실행하는 시스템이 서로 다른 개발 환경
- 호스트(Host) 시스템과 타깃(Target) 시스템
- 호스트 시스템 : 개발환경을 가지고 소프트웨어를 개발하고 빌드하는 컴퓨터 (PC)
- Windows, Linux, Mac OS 등 다양한 환경 구성 가능
- 타깃 시스템 : 개발하고자 하는 임베디드 시스템 (Kepler -ESP32 A )
- 교차 개발 환경 구성 요소
- 크로스 컴파일러 / 툴체인
- 디버거, 에디터 등
- 통합개발환경(IDE)
교차 개발 환경
호스트 시스템과 타깃 시스템
ESP32 개발 환경 설정
- 소스코드 편집기 : VSCode, Eclipse, VI 에디터
- ESP32 툴체인 : 어셈블러, 컴파일러, 링커, 디버거 등
- SDK 형태로 툴체인을 포함하여 API, Library, 샘플 소스코드를 포함한 툴체인 사용
- SDK : Software Development Kit
- API : Application Programming Interface
- ESP32-IDF, ESP32 Arduino, NodeMCU, MicroPython 등 다양함
- Arduino is an open-source electronics platform based on easy-to-use hardware and software
- Basic structure
- read inputs (sensor) turn it into an output (actuator)
- What to be done by board between sensing and actuating
- a set of instructions to the microcontroller on the board
- Started from AVR, now extended to various microcontrollers
(e.g., ARM Cortex M-series)
- Reference :
- Arduino는 사용하기 쉬운 하드웨어와 소프트웨어를 기반으로 하는 오픈 소스 전자 플랫폼이다.
- 기본 구조
- 읽기 inputs(sensor)을 output(actuator)으로 바꾼다.
- 감지와 작동 사이에서 보드별로 수행할 작업
- AVR에서 시작하여 이제 다양한 마이크로컨트롤러로 확장됨
(예: ARM Cortex M 시리즈)
- 참조:
Arduino Programming
- Based on C/C++
- Arduino IDE
- Basic structure of Arduino Programming
Arduino ESP32
- Arduino API를 ESP32에서 사용 가능하도록 구성
- IDE 지원
- Arduino ESP32 IDE Install
- Community
Arduino API Reference
Low level 정보 없이 쉽게 프로그래밍할 수 있다.