[목차] [clearfix] == 개요 == ESP8266(또는 ESP8266EX)은 [[Wi-Fi]] 무선 통신 기능을 탑재한 저전력 [[마이크로컨트롤러]]로, [[중국]] [[상하이]]에 소재한 에스프레시프 시스템즈(Espressif Systems/乐鑫信息科技)사에서 2014년에 출시하였다.[* [[https://www.espressif.com/en/company/about-us/milestones|Espressif Systems - Milestones]]] 같은 회사에서 개발한 후속 제품인 [[ESP32]][* 8266은 wifi만 지원하는 데 반해 ESP32는 wifi + 블루투스까지 지원하나 체급 자체가 다른 제품군인데다 보통 블루투스 지원 제품은 노르딕 사의 nRF제품군이 최우선으로 고려되기 때문에 덜 유명하다.]와 함께, 저렴한 가격에 [[IoT]] 시나리오를 구현할 수 있는 마이크로컨트롤러로 널리 사용되고 있다. 현재는 나온지도 좀 된데다 추가적인 제품 업데이트도 없어서 제조사 측에서도 [[https://www.espressif.com/en/products/socs/esp32-c2|ESP32-C2]]제품으로 옮겨갈것을 권장하고 있다. == 사양 == 현재 나오는 모든 제품들은 전부 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) 프로토콜[* \[ESP8266 Arduino Core\] ESP8266WiFi library[[https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html]]] || || I/O(pinout) || 17[* 이중 6핀은 프로그래밍용 플래시/ROM용으로 고정되어 있어 실제로는 사용이 제한된다.] || || 메모리(RAM) || 160KB(iRAM64KB,dRAM96KB) [* \[espressif\] ESP8266 Non-OS SDK API Reference[[https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf#page=20]]] || || 메모리(SRAM) || 1KB || || 외장플래쉬 || 512KB(최소사양),OTA(on the air)최소사양(1MB)~16MB까지 지원[* ESP8266칩 자체는 플래시가 없는데 내장된 플래시가 없으면 프로그래밍에 지장이 있기 때문에 실제로 쓰는 WROOM모듈의 경우에는 아무리 낮아도 1MB의 플래시가 같이 장착되며 때문에 모듈은 17개의 I/O중에 6핀이 플래시용으로 떨어져 나간다. 공식 데이타시트에서는 1MB(OTA지원시) 또는 512KB이상(OTA(over the air)미지원)을 권장하고 있다.][* ESP8266EX Datasheet Version 6.8 ,Espressif Systems [[https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf]]] || == 특징 == 제품이 처음 출시된 2014년 당시에는 개발사가 영세한 업체였던지라, [[영어]]로 된 데이터시트 하나가 없을 정도였다. 하지만 Wi-Fi, TCP/IP 스택을 한꺼번에 처리 가능한 칩을 중국에서 말도 안 되는 가격에 풀고 있다더라... 라는 [[https://hackaday.com/2014/08/26/new-chip-alert-the-esp8266-wifi-module-its-5/|입소문]]을 타고 세계적으로 인기를 끌기 시작했고, 개발사는 일약 스타덤에 올랐다. 현재는 제조사에서 공식적으로 [[https://github.com/espressif/ESP8266_NONOS_SDK|Non-OS SDK]]와 [[https://github.com/espressif/ESP8266_RTOS_SDK|FreeRTOS SDK]]를 제공한다. 그 외에도 커뮤니티에서 개발한 [[https://github.com/esp8266/Arduino|아두이노 코어 호환 SDK]]를 사용하면 [[아두이노]] 호환 보드처럼 사용할 수 있고, [[https://github.com/nodemcu/nodemcu-firmware|NodeMCU]]를 이용해 [[Lua]] 언어로 개발할 수도 있다. (둘 다 Non-OS SDK 기반) 매우 저렴하게 Wi-Fi를 쓸 수 있다는 점 때문에 와이파이를 지원하지 않는 보드와 조합하여 시리얼 Wi-Fi 어댑터 용도로도 쓰기도 한다. 예를 들어 [[Arduino]] UNO Wi-Fi 보드는 [[https://docs.arduino.cc/retired/getting-started-guides/ArduinoUnoWiFi|우노에다가 ESP8266을 달아놓는 식으로 구현되었다.]] 단점은 I/O 성능이 좀 많이 모자르다. 전체 핀 개수가 32개이긴 하나 이중 유저가 실제로 사용 가능한 I/O는 17개인데 이중에서 6개는 상위 문단에서 설명한것처럼 프로그램용 외장 플래시용으로 할당되어 있기 때문에 실제로는 11개만 사용가능하며 주변기능도 4채널밖에 없는 PWM과 1채널짜리인 ADC등 많이 빈약하다. == 모듈 및 개발 보드 == 시장에는 ESP8266 칩과 무선 안테나, SPI 플래시 등을 조합하여 구성된 [[반제품]] 모듈과 개발 보드가 여럿 존재한다. 이 중 반제품 모듈로 많이 팔리는 ESP-xx 시리즈는 서드파티 제조사인 Ai-Thinker(安信可科技)에서 개발한 것이고, ESP-WROOM 시리즈는 Espressif에서 직접 제작한 것이다. ESP-xx 시리즈의 경우 히트스프레더에 Ai 로고가 찍혀 있지 않은 것들은 짝퉁이다. 다만 원체 구조가 단순하기 때문에 짝퉁이라도 작동에 별 문제는 없다. 그 외에도 NodeMCU DevKit, SparkFun ESP8266 Thing 등의 서드파티 모듈이 존재한다. === ESP-01 모듈 === || [[파일:ESP8266_ESP01.svg|width=200px]] || || ESP8266을 SMD 장착한 아두이노 WiFi모듈(ESP-01)의 그래픽 예시 || ESP8266은 와이파이 모드(mode)에서는 AP(다이렉트 WiFi),STA(무선업로드OTA) 그리고 AP및STA동시동작 모드를 지원하고 있다. [* \[ESP8266 Arduino Core\] WiFi(ESP8266WiFi library) [[http://arduino.esp8266.com/Arduino/versions/2.1.0-rc1/doc/libraries.html]]][* arduino.cc(아두이노 공식사이트 포럼) ESP8266 WIFI_AP_STA with internet[[https://forum.arduino.cc/t/esp8266-wifi_ap_sta-with-internet/673601]]] [* (깃허브) esp8266/Arduino 라이브러리[[https://github.com/esp8266/Arduino]]] ESP-01 모듈은 다음과 같은 라이브러리들을 사용해 아두이노 언어로도 프로래밍할 수 있도록 지원하고 있다. >#include >#include >#include === ESP-05 === ESP-05는 ESP 8266 시리즈중에서 유일하게 프로그래밍이 지원되지 않는 통신모듈이다. [* \[Makey\]ESP-05 와의 UDP 첫 걸음 [[https://time2love.tistory.com/17]]][* Espressif Systems - ESP8266 [[https://www.espressif.com/en/products/socs/esp8266ex/resources/]]] 추가적으로 방향형 안테나를 물리적으로 지원하고 있으며 [[AT커맨드]]를 사용해 중계 및 확장이 가능하다.[* \[Espressif Systems\] ESP-AT User Guide [[https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-at/en/release-v2.2.0.0_esp8266/pdf/]]] === Lolin WeMos D1 시리즈 === Lolin이라는 서드파티 브랜드 제품으로, ESP8266의 Arduino SDK 호환성에 주목하여 Wi-Fi 통신이 가능한 아두이노 호환품이라는 컨셉으로 제작된 제품군이다. 물론 근본적으로는 Pinout만 아두이노처럼 해 놓은 ESP8266 보드이기 때문에 꼭 아두이노 SDK를 쓰지 않아도 작동은 한다. 후속작으로 ESP32 MCU를 사용한 WeMos D32가 있다. === NodeMCU Devkit === [[https://github.com/vowstar|Vowstar]]라는 아이디를 쓰는 중국인 개발자 황루이(黄锐)등이 제작한 ESP8266 보드. 오픈소스 하드웨어로, [[GitHub]]에 [[https://github.com/nodemcu/nodemcu-devkit-v1.0|설계도]] 파일이 올라와 있어서 많은 제조사에서 찍어내고 있다. 조립 시 ESP-12E 모듈을 이용한다. [[Lua]] 언어로 ESP8266 프로그래밍이 가능하도록 해 주는 NodeMCU 펌웨어는, 초기 개발 당시 이 보드에 쓸 것을 상정하고 만들어졌기 때문에 같은 이름이 붙었다. 다만 현 시점에서는 NodeMCU Devkit을 쓴다고 NodeMCU 펌웨어를 꼭 이용해야 하는 것은 아니고, 그 반대의 경우도 마찬가지이다. == 여담 == 수천원대의 엄청난 가성비와 성능 덕분에 다양한 용도로 널리 사용되고 있으며, 최근에는 레트로 게임쪽에서도 여러가지로 활용되고 있는 추세. ESP8266은 가성비 업스캔 컨버터로 인기를 얻은 [[https://ramapcsx2.github.io/gbs-control/|GBS-C]]의 개조 펌웨어 탑재용으로 사용되었으며, ESP32는 다수의 레트로 콘솔에 블루투스 컨트롤러를 지원시켜주는 [[https://github.com/darthcloud/BlueRetro|Blue Retro]]에 활용되었다. == 관련 문서 == * [[ESP32]] * [[Nucleus RTOS]] [[분류:마이크로컨트롤러]]