ESP8266

섬네일|Ai-Thinker의 ESP8266EX SoC가 장착된 ESP-01 모듈

**ESP8266**은 중국 상하이의 Espressif Systems에서 생산된 저비용 와이파이마이크로칩으로, 내장된 TCP/IP 네트워킹 소프트웨어와 마이크로컨트롤러 기능을 갖추고 있다.

이 칩은 2014년 8월, 타사 제조업체 Ai-Thinker가 만든 **ESP-01** 모듈을 통해 영어권 메이커 커뮤니티에서 인기를 얻었다. 이 작은 모듈은 마이크로컨트롤러가 와이파이 네트워크에 연결하고 헤이즈 스타일 명령을 사용하여 간단한 TCP/IP 연결을 할 수 있도록 한다. 그러나 처음에는 이 칩과 칩이 수용하는 명령에 대한 영어 문서가 거의 없었다. 매우 낮은 가격과 모듈에 외부 부품이 거의 없다는 사실은 대량 생산 시 매우 저렴해질 수 있음을 시사하며, 많은 해커들이 모듈, 칩 및 소프트웨어를 탐구하고 중국어 문서를 번역하도록 이끌었다.

**ESP8285**는 1 MiB 플래시 메모리가 내장된 유사한 칩으로, 와이파이를 통해 연결할 수 있는 단일 칩 장치를 설계할 수 있도록 한다.

이 마이크로컨트롤러 칩들은 ESP32 제품군에 의해 계승되었다.

## 특징
섬네일|ESP-01 모듈 와이어프레임 도면
* 프로세서: 80 또는 160 MHz에서 작동하는 Tensilica Diamond Standard 106Micro 기반의 L106 32비트 RISC 마이크로프로세서 코어
* 160 Kbytes의 RAM 메모리는 다음으로 분할된다.
** 32 KB 명령어 RAM (iRAM)
** 32 KB 명령어 캐시 RAM
** 96 KB의 dRAM은 SDK 및 힙 메모리용 80 KB dRAM과 ROM용 16 KB로 분할됨
* 외부 QSPI 플래시: 최대 16 MiB 지원 (일반적으로 512 KiB ~ 4 MiB 포함)
* IEEE 802.11 b/g/n 와이파이
** 통합 TR 스위치, 발룬, LNA, 전력 증폭기 및 매칭 네트워크
** WEP 또는 WPA/WPA2 인증 또는 개방형 네트워크
* 17 GPIO 핀
* SPI
* I²C (소프트웨어 구현)
* DMA가 있는 I²S 인터페이스 (GPIO와 핀 공유)
* 전용 핀의 UART 및 GPIO2에서 송신 전용 UART 활성화 가능
* 10비트 ADC (축차 근사 ADC)

## ESP-01 핀 배열
섬네일|ESP-01 모듈 핀 배열
일반적인 ESP-01 모듈의 핀 배열은 다음과 같다:
# GND, 접지 (0 V)
# GPIO 2, 범용 입출력 2번
# GPIO 0, 범용 입출력 0번
# RX, 수신 데이터 입력, 또한 GPIO3
# VCC, 전압 (+3.3 V; 최대 3.6 V까지 처리 가능)
# RST, 리셋
# CH_PD, 칩 전원 차단
# TX, 송신 데이터 출력, 또한 GPIO1

섬네일|ESP8266 다이샷

## SDK
2014년 10월, Espressif Systems는 칩을 직접 프로그래밍할 수 있는 SDK를 출시하여 별도의 마이크로컨트롤러가 필요 없게 되었다. 그 이후로 Espressif는 여러 공식 SDK 릴리스를 발표했으며, Espressif는 두 가지 버전의 SDK를 유지하고 있다. 하나는 FreeRTOS 기반이고 다른 하나는 콜백 기반이다.

Espressif의 공식 SDK 외의 대안으로는 Max Filippov가 유지 관리하는 GCC 툴체인 기반의 오픈 소스 ESP-Open-SDK가 있다. 또 다른 대안은 Mikhail Grigorev의 "비공식 개발 키트"이다.

주로 오픈 소스인 다른 SDK는 다음과 같다.
* 아두이노 — C++ 기반 펌웨어. 이 코어로 ESP8266 CPU와 와이파이 구성 요소를 다른 아두이노 장치처럼 프로그래밍할 수 있다. ESP8266 아두이노 코어는 깃허브를 통해 이용할 수 있다.
* ESP8266 BASIC — 특히 사물인터넷(IoT)에 맞춰진 오픈 소스 베이직 유사 인터프리터. 자체 호스팅 브라우저 기반 개발 환경.
* ESP Easy — 가정 자동화 애호가들이 개발.
* ESPHome — ESPHome은 간단하면서도 강력한 구성 파일로 ESP8266/ESP32를 제어하고 가정 자동화 시스템을 통해 원격으로 제어하는 시스템이다.
* Tasmota - 가정 자동화를 위한 오픈 소스 펌웨어.
* ESP-Open-RTOS — 오픈 소스 FreeRTOS 기반 ESP8266 소프트웨어 프레임워크.
* ESP-Open-SDK — ESP8266/ESP8285 칩용으로 가능한 한 자유롭고 개방적인 통합 SDK.
* Espruino — Node.js를 밀접하게 모방한 활발히 유지 관리되는 자바스크립트 SDK 및 펌웨어. ESP8266을 포함한 몇몇 MCU를 지원.
* ESPurna — 오픈 소스 ESP8285/ESP8266 펌웨어.
* Forthright — 존스 포스(Jones Forth)의 ESP8266 마이크로컨트롤러 포트.
* MicroPython — ESP8266 플랫폼으로 마이크로파이썬(임베디드 장치용 파이썬 구현)을 포팅한 것.
* Moddable SDK — ESP8266용 자바스크립트 언어 및 라이브러리 지원 포함
* Mongoose OS — 연결된 제품을 위한 오픈 소스 운영 체제. ESP8266 및 ESP32 지원. C 또는 자바스크립트로 개발.
* NodeMCU — Lua 기반 펌웨어.
* PlatformIO — 아두이노 코드 및 라이브러리 위에 있는 크로스 플랫폼 IDE 및 통합 디버거.
* Punyforth — ESP8266용 포스(Forth)에서 영감을 받은 프로그래밍 언어.
* Sming — 뛰어난 성능과 다양한 네트워크 기능을 갖춘 활발히 개발 중인 비동기 C/C++ 프레임워크.
* uLisp — 제한된 RAM을 가진 프로세서에서 실행되도록 특별히 설계된 리스프 프로그래밍 언어 버전.
* ZBasic for ESP8266 — 널리 사용되는 마이크로소프트 비주얼 베이직 6의 서브셋으로, ZX 마이크로컨트롤러 제품군 및 ESP8266의 제어 언어로 채택되었다.
* Zerynth — 파이썬으로 ESP8266 및 기타 마이크로컨트롤러를 프로그래밍하기 위한 IoT 프레임워크.
* EspOS 웹 서버, 쉬운 IoT 솔루션.

## Espressif 모듈
섬네일|ESP-WROOM-02
다음은 Espressif에서 만든 ESP8266 기반 모듈 시리즈이다.

위 표(및 이어지는 두 표)에서 "활성 핀"은 외부 장치를 ESP8266 MCU에 연결할 수 있는 GPIO 및 ADC 핀을 포함한다. "피치"는 ESP8266 모듈의 핀 간 간격으로, 장치를 브레드보드에 사용할 경우 알아야 할 중요한 정보다. "폼 팩터"는 "2 × 9 DIL"과 같이 모듈 패키징을 설명하는데, 이는 DIP IC의 핀처럼 "듀얼 인 라인"으로 배열된 9개 핀의 두 줄을 의미한다. 많은 ESP-xx 모듈에는 작은 온보드 LED가 포함되어 있어 깜빡이도록 프로그래밍하여 활동을 나타낼 수 있다. ESP-xx 보드에는 트레이스 안테나, 온보드 세라믹 안테나, 외부 Wi-Fi 안테나를 연결할 수 있는 외부 커넥터 등 여러 안테나 옵션이 있다. Wi-Fi 통신은 많은 RFI(무선 주파수 간섭)를 발생시키므로, FCC와 같은 정부 기관은 다른 장치와의 간섭을 최소화하기 위해 차폐된 전자 장치를 선호한다. 일부 ESP-xx 모듈은 FCC 승인 스탬프가 찍힌 금속 상자에 들어 있다. 선진국 시장에서는 FCC 승인 및 차폐된 Wi-Fi 장치가 요구될 가능성이 높다.

## Ai-Thinker 모듈
alt=ESP-01 모듈|섬네일|Ai-Thinker ESP8266 모듈(ESP-12F, 검은색)이 브레이크아웃 보드(흰색)에 납땜되어 있다
다음은 타사 제조업체 Ai-Thinker가 ESP8266으로 만든 첫 번째 모듈 시리즈이며 가장 널리 사용된다. 이들은 총칭하여 "ESP-xx 모듈"이라고 불린다. 작동 가능한 개발 시스템을 구축하려면 추가 구성 요소, 특히 직렬 TTL-USB 어댑터(때로는 USB-UART 브리지라고도 함)와 외부 3.3V 전원 공급 장치가 필요하다. 초보 ESP8266 개발자는 USB-UART 브리지와 3.3V 전압 레귤레이터가 보드에 내장된 마이크로 USB 커넥터가 포함된 NodeMCU와 같은 대형 ESP8266 Wi-Fi 개발 보드를 고려하는 것이 좋다. 프로젝트 개발이 완료되면 이러한 구성 요소는 필요하지 않으며, 이러한 저렴한 ESP-xx 모듈은 생산 실행을 위한 저전력, 소형 풋프린트 옵션이다.

참고 열에서 플래시 메모리 크기는 주어진 모듈과 표의 모든 하위 모듈에 적용된다. 단일 모듈에 적용되는 예외는 괄호 안에 표시된다.

## 기타 보드
[섬네일|[SparkFun ESP8266 Thing]]
이 보드들이 초기 ESP-xx 모듈보다 인기가 있는 이유는 온보드 USB-UART 브리지(Silicon Labs의 CP2102 또는 WCH CH340G 등)와 마이크로 USB 커넥터가 포함되어 있기 때문이다. 이들은 3.3V 레귤레이터와 결합되어 보드에 전원을 공급하고 호스트(소프트웨어 개발) 컴퓨터, 즉 콘솔과 연결성을 제공하여 쉬운 개발 플랫폼이 된다. 초기 ESP-xx 모듈에서는 이 두 가지 항목(USB-직렬 어댑터 및 레귤레이터)을 별도로 구매하여 ESP-xx 회로에 연결해야 했다. NodeMCU와 같은 최신 ESP8266 보드는 작업하기 더 쉽고 더 많은 GPIO 핀을 제공한다. 여기에 나열된 대부분의 보드는 ESP-12E 모듈을 기반으로 하지만, 새로운 모듈이 몇 달마다 계속해서 출시되고 있는 것처럼 보인다.

## ESP32-C3
2020년, Espressif는 ESP8266과 핀 호환이 되는 새로운 칩인 ESP32-C3를 발표했다. 이 칩은 최대 160 MHz의 클럭 속도를 가진 단일 코어 RISC-V 32비트 CPU를 기반으로 하며, 400 KiB의 SRAM과 384 KiB의 ROM 저장 공간이 내장되어 있다.

## 같이 보기
* ESP32 – Espressif의 후속 제품
* 사물인터넷
* MCU (마이크로컨트롤러 유닛)

## 각주

## 외부 링크

* 아두이노 IDE용 ESP8266 코어

분류:마이크로컨트롤러
분류:사물인터넷
분류:2014년 설립