최근 수정 시각 : 2023-10-03 18:07:22

ESP8266

1. 개요2. 사양3. 특징4. 모듈 및 개발 보드
4.1. ESP-01 모듈4.2. ESP-054.3. Lolin WeMos D1 시리즈4.4. NodeMCU Devkit
5. 여담6. 관련 문서

[clearfix]

1. 개요

ESP8266(또는 ESP8266EX)은 Wi-Fi 무선 통신 기능을 탑재한 저전력 마이크로컨트롤러로, 중국 상하이에 소재한 에스프레시프 시스템즈(Espressif Systems/乐鑫信息科技)사에서 2014년에 출시하였다.[1] 같은 회사에서 개발한 후속 제품인 ESP32[2]와 함께, 저렴한 가격에 IoT 시나리오를 구현할 수 있는 마이크로컨트롤러로 널리 사용되고 있다.

현재는 나온지도 좀 된데다 추가적인 제품 업데이트도 없어서 제조사 측에서도 ESP32-C2제품으로 옮겨갈것을 권장하고 있다.

2. 사양

현재 나오는 모든 제품들은 전부 ESP8266EX 베이스다
하드웨어 스펙
CPU Tensilica Xtensa® L106(Diamond Standard 106Micro) @80/160MHz (32-bit RISC)
동작전압 2.7V~3.6V
Wi-Fi(MODE) 802.11 b/g/n(HT20) 프로토콜[3]
I/O(pinout) 17[4]
메모리(RAM) 160KB(iRAM64KB,dRAM96KB) [5]
메모리(SRAM) 1KB
외장플래쉬 512KB(최소사양),OTA(on the air)최소사양(1MB)~16MB까지 지원[6][7]

3. 특징

제품이 처음 출시된 2014년 당시에는 개발사가 영세한 업체였던지라, 영어로 된 데이터시트 하나가 없을 정도였다. 하지만 Wi-Fi, TCP/IP 스택을 한꺼번에 처리 가능한 칩을 중국에서 말도 안 되는 가격에 풀고 있다더라... 라는 입소문을 타고 세계적으로 인기를 끌기 시작했고, 개발사는 일약 스타덤에 올랐다.

현재는 제조사에서 공식적으로 Non-OS SDK FreeRTOS SDK를 제공한다. 그 외에도 커뮤니티에서 개발한 아두이노 코어 호환 SDK를 사용하면 아두이노 호환 보드처럼 사용할 수 있고, NodeMCU를 이용해 Lua 언어로 개발할 수도 있다. (둘 다 Non-OS SDK 기반)

매우 저렴하게 Wi-Fi를 쓸 수 있다는 점 때문에 와이파이를 지원하지 않는 보드와 조합하여 시리얼 Wi-Fi 어댑터 용도로도 쓰기도 한다. 예를 들어 Arduino UNO Wi-Fi 보드는 우노에다가 ESP8266을 달아놓는 식으로 구현되었다.

단점은 I/O 성능이 좀 많이 모자르다. 전체 핀 개수가 32개이긴 하나 이중 유저가 실제로 사용 가능한 I/O는 17개인데 이중에서 6개는 상위 문단에서 설명한것처럼 프로그램용 외장 플래시용으로 할당되어 있기 때문에 실제로는 11개만 사용가능하며 주변기능도 4채널밖에 없는 PWM과 1채널짜리인 ADC등 많이 빈약하다.

4. 모듈 및 개발 보드

시장에는 ESP8266 칩과 무선 안테나, SPI 플래시 등을 조합하여 구성된 반제품 모듈과 개발 보드가 여럿 존재한다. 이 중 반제품 모듈로 많이 팔리는 ESP-xx 시리즈는 서드파티 제조사인 Ai-Thinker(安信可科技)에서 개발한 것이고, ESP-WROOM 시리즈는 Espressif에서 직접 제작한 것이다.

ESP-xx 시리즈의 경우 히트스프레더에 Ai 로고가 찍혀 있지 않은 것들은 짝퉁이다. 다만 원체 구조가 단순하기 때문에 짝퉁이라도 작동에 별 문제는 없다.

그 외에도 NodeMCU DevKit, SparkFun ESP8266 Thing 등의 서드파티 모듈이 존재한다.

4.1. ESP-01 모듈

파일:ESP8266_ESP01.svg
ESP8266을 SMD 장착한 아두이노 WiFi모듈(ESP-01)의 그래픽 예시
ESP8266은 와이파이 모드(mode)에서는 AP(다이렉트 WiFi),STA(무선업로드OTA) 그리고 AP및STA동시동작 모드를 지원하고 있다. [8][9] [10]
ESP-01 모듈은 다음과 같은 라이브러리들을 사용해 아두이노 언어로도 프로래밍할 수 있도록 지원하고 있다.
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ESP8266HTTPClient.h>

4.2. ESP-05

ESP-05는 ESP 8266 시리즈중에서 유일하게 프로그래밍이 지원되지 않는 통신모듈이다. [11][12]
추가적으로 방향형 안테나를 물리적으로 지원하고 있으며 AT커맨드를 사용해 중계 및 확장이 가능하다.[13]

4.3. Lolin WeMos D1 시리즈

Lolin이라는 서드파티 브랜드 제품으로, ESP8266의 Arduino SDK 호환성에 주목하여 Wi-Fi 통신이 가능한 아두이노 호환품이라는 컨셉으로 제작된 제품군이다. 물론 근본적으로는 Pinout만 아두이노처럼 해 놓은 ESP8266 보드이기 때문에 꼭 아두이노 SDK를 쓰지 않아도 작동은 한다.

후속작으로 ESP32 MCU를 사용한 WeMos D32가 있다.

4.4. NodeMCU Devkit

Vowstar라는 아이디를 쓰는 중국인 개발자 황루이(黄锐)등이 제작한 ESP8266 보드. 오픈소스 하드웨어로, GitHub 설계도 파일이 올라와 있어서 많은 제조사에서 찍어내고 있다. 조립 시 ESP-12E 모듈을 이용한다.

Lua 언어로 ESP8266 프로그래밍이 가능하도록 해 주는 NodeMCU 펌웨어는, 초기 개발 당시 이 보드에 쓸 것을 상정하고 만들어졌기 때문에 같은 이름이 붙었다. 다만 현 시점에서는 NodeMCU Devkit을 쓴다고 NodeMCU 펌웨어를 꼭 이용해야 하는 것은 아니고, 그 반대의 경우도 마찬가지이다.

5. 여담

수천원대의 엄청난 가성비와 성능 덕분에 다양한 용도로 널리 사용되고 있으며, 최근에는 레트로 게임쪽에서도 여러가지로 활용되고 있는 추세. ESP8266은 가성비 업스캔 컨버터로 인기를 얻은 GBS-C의 개조 펌웨어 탑재용으로 사용되었으며, ESP32는 다수의 레트로 콘솔에 블루투스 컨트롤러를 지원시켜주는 Blue Retro에 활용되었다.

6. 관련 문서


[1] Espressif Systems - Milestones [2] 8266은 wifi만 지원하는 데 반해 ESP32는 wifi + 블루투스까지 지원하나 체급 자체가 다른 제품군인데다 보통 블루투스 지원 제품은 노르딕 사의 nRF제품군이 최우선으로 고려되기 때문에 덜 유명하다. [3] \[ESP8266 Arduino Core\] ESP8266WiFi library https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html [4] 이중 6핀은 프로그래밍용 플래시/ROM용으로 고정되어 있어 실제로는 사용이 제한된다. [5] \[espressif\] ESP8266 Non-OS SDK API Reference https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf [6] ESP8266칩 자체는 플래시가 없는데 내장된 플래시가 없으면 프로그래밍에 지장이 있기 때문에 실제로 쓰는 WROOM모듈의 경우에는 아무리 낮아도 1MB의 플래시가 같이 장착되며 때문에 모듈은 17개의 I/O중에 6핀이 플래시용으로 떨어져 나간다. 공식 데이타시트에서는 1MB(OTA지원시) 또는 512KB이상(OTA(over the air)미지원)을 권장하고 있다. [7] ESP8266EX Datasheet Version 6.8 ,Espressif Systems https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf [8] \[ESP8266 Arduino Core\] WiFi(ESP8266WiFi library) http://arduino.esp8266.com/Arduino/versions/2.1.0-rc1/doc/libraries.html [9] arduino.cc(아두이노 공식사이트 포럼) ESP8266 WIFI_AP_STA with internet https://forum.arduino.cc/t/esp8266-wifi_ap_sta-with-internet/673601 [10] (깃허브) esp8266/Arduino 라이브러리 https://github.com/esp8266/Arduino [11] \[Makey\]ESP-05 와의 UDP 첫 걸음 https://time2love.tistory.com/17 [12] Espressif Systems - ESP8266 https://www.espressif.com/en/products/socs/esp8266ex/resources/ [13] \[Espressif Systems\] ESP-AT User Guide https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-at/en/release-v2.2.0.0_esp8266/pdf/