ESP8266 활용 가이드 목차

.

ESP8266 모듈은 2014년에 혜성처럼 등장해서 불과 1년 만에 WiFi 통신모듈 시장을 평정했습니다. 이미 DIY, 피지컬 컴퓨팅을 즐겨오던 분이라면 사용해 본 경험이 있거나, 적어도 들어본 경험은 있을 겁니다. 짧은 시간안에 이렇게 두터운 유저와 개발자를 확보하며 카테고리 킬러로 등극한 사례는 흔치 않은데 과거 아두이노나 라즈베리 파이의 확산을 보는 느낌이랄까요.

ESP8266 모듈의 최고 미덕은 바로 가격입니다. 최소한의 회로만 갖춘 ESP-01 모듈의 경우 2~3$ 정도에 구입이 가능하며, 개선된 모듈들도 5$ 안팎에 구매가 가능합니다. 특수용도로 적합하게끔 기능이 추가된 보드들도 10$ 정도면 구할 수 있습니다. 아두이노 공식 WiFi 실드의 국내 판매가격이 10만원 안팎이었던 점을 고려하면 놀라운 가격이 아닐 수 없습니다.

그리고 ESP8266 모듈에 올라갈 펌웨어를 직접 개발할 수 있도록 SDK(Software Development Kit)도 제작사인 ESPRESSIF 사에서 오픈소스로 제공합니다. PC와 통신할 수 있도록 FTDI 모듈만 추가로 구매하면 펌웨어를 입맛에 맞게 수정할 수 있습니다.

이런 점이 전세계 개발자들의 심금을 울린 것 같습니다. 다양한 작업이 가능하도록 펌웨어와 진보된 SDK를 제공하기 위해 개발자들이 뛰어든걸 보면요. 짧은 시간이었지만 이제 ESP8266 모듈은 다양한 오픈소스 커뮤니티의 지원을 받는 IoT 플랫폼으로 격상되었습니다.

하지만 짧은 시간에 성장한 탓인지 그에 상응하는 단점들도 꽤 있습니다. 수 많은 프로젝트들이 진행중이지만 아직 베타 버전인 경우가 많고 일부 프로젝트들은 업데이트가 뜸하기도 합니다. 가장 큰 문제는 이런 정보들을 아우르는 온라인 가이드, 체계적인 문서화가 부족하다는 겁니다. 특히나 한글로 된 자료는 프로젝트 예시, 기본 사용법 소개 정도에 그치는 경우가 많을 뿐 ESP8266 모듈의 활용 정보 전반을 정리하진 못하고 있습니다.

이 가이드를 작성하는 이유가 여기에 있습니다. 각광받는 ESP8266 모듈의 사용법, 활용법 전반을 소개함으로써 자신이 원하는 목적에 맞는 정보들을 선택할 수 있도록 돕기 위함입니다. 그리고 가능하다면 ESP8266 을 지원하는 오픈소스 프로젝트에 직접 참여하시길 기대합니다.

[ESP8266 모듈 활용 가이드 – Overview] 편에서는 ESP8266 모듈 종류와 특징, 구매 가이드, 사용법, 주의사항, 활용 가능한 SDK 종류와 특징 등을 나열할 것입니다. 이 문서에서 다루기엔 내용이 많은 경우 별도의 문서로 작성해서 링크를 걸어두겠습니다.

이 문서와 링크로 연결된 문서들은 2016년 1월 12일 기준으로 최초 업데이트가 되었으며, 변경 사항이 있을 때 수시로 업데이트 될 것입니다. 문서에 틀린 내용이 있거나 추가할 내용이 있는 경우 godstale@hotmail.com 으로 연락을 주시거나 HardCopyWorld.com자유게시판을 이용해주세요.

.

ESP8266 모듈 소개

Atmel 사의 Atmega 시리즈 칩을 장착한 일련의 보드와 이를 활용할 수 있도록 개발환경(IDE)을 제공하는 프로젝트가 아두이노 입니다. 잘 아시다시피 Digital 제어(GPIO 제어), Analog 입력(ADC), SPI, I2C, UART 통신을 지원하는 대표적인 피지컬 컴퓨팅(하드웨어 제어) 플랫폼이죠. 하지만 여기에는 중요한 기능 하나가 빠져 있는데, 바로 네트워킹 – 특히 인터넷 연결입니다. 물론 라즈베리 파이가 떠오르실 수도 있겠지만 LED 하나 켜자고 리눅스 장치를 굴리는 건 닭 잡는데 소 잡는 칼 쓰는 격입니다.

ESP8266 모듈이 바로 닭 잡는 칼입니다. WiFi 네트워킹을 지원하는 통신 모듈이며, 하드웨어 제어 기능도 상당부분 수행할 수 있습니다. 아두이노 보다도 저렴한 가격으로요. 잘만 사용하면 사물인터넷(IoT) 구현을 위한 아두이노 역할을 해낼 수 있습니다. 전 세계 개발자들이 참여하는 관련 프로젝트 상당수가 바로 ESP8266 모듈을 IoT 플랫폼처럼 사용할 수 있도록 해주는 도구들입니다.

ESP8266 은 Espressif Systems 라는 상하이 소재 중국 회사에서 디자인 한 마이크로 컨트롤러입니다. 2014년 초까지는 큰 판매 볼륨을 생성하진 못했는데 이후 서드파티 OEM 업체들이 breakout board 들을 찍어내면서 취미 개발자도 쉽게 구매, 개발 할 수 있는 여건이 마련되었습니다. 우리가 일반적으로 구매하는, ESP-xx 모델명의 보드들이 바로 서드파티 OEM 업체들이 만든 breakout board 들 입니다.

esp

즉, Espressif Systems 는 ESP8266 프로세서와 펌웨어를 만들기 위한 SW 개발환경을 제공합니다. 여기에 서드파티 업체들은 동작하는데 필요한 회로를 추가해 ESP-xx 모듈을 만들어 판매합니다. ESP-xx 모듈을 다시 특정 목적에 맞게 변형해서, 추가해서 판매하기도 하죠.

일반적으로 [ESP8266] 이란 단어는 프로세서, breakout board, SW 개발환경(이하 SDK)까지 포함하는, 다의적이고 광범위한 표현이라고 보면 될 것 같습니다.

물리적으로 ESP8266 프로세서는 아래와 같은 스펙을 가지고 있습니다.

  • Voltage : 3.3V
  • Current consumption : 10uA – 170mA
  • Flash memory attachable : 16MB max (512K normal)
  • Processor : Tensilica L106 32 bit
  • Processor speed : 80-160MHz
  • RAM : 32K + 80K
  • GPIOs : 17 (multiplexed with other functions)
  • ADC(Analog to Digital) : 1 input with 1024 step resolution
  • 802.11 support : b/g/n/d/e/i/k/r
  • Maximum concurrent TCP connections : 5

눈여겨 봐야할 특징들은 아래와 같습니다.

  • ESP8266 모듈은 3.3V 동작 전압을 가지고 있습니다. 많은 수의 ESP-xx 모듈이 3.3V에서만 동작하므로 3.3V 전원이 필요합니다. UART 통신 라인도 3.3V로 동작하므로 아두이노 5V 동작전압의 보드들과 연동하려면 level converter 모듈을 이용하거나 저항을 이용해서 전압 분배 회로를 구성해줘야 합니다.
  • WiFi 통신을 할 때 소모전류가 170mA를 넘는 것으로 알려져 있습니다.(약 250mA 정도?) 아두이노의 3.3V 전원핀이나 PC의 USB 전원으로는 모자랄 수도 있다고하니 어댑터 등을 이용한 외부 전원을 이용하는 것이 좋습니다. 그렇지 않은 경우 통신할 때 오동작이 발생할 수 있습니다.
  • ESP8266 프로세서는 Flash 메모리를 가변적으로 붙일 수 있습니다. 판매되는 ESP-xx 모듈마다 플래시 메모리 용량에 차이가 있습니다. 예로 ESP-01 모듈은 512KB, ESP-12 모듈은 4MB flash 메모리를 가지고 있습니다. 플래시 메모리 사이즈에 따라 펌웨어 업로드 할 때 차이가 발생할 수 있습니다.
  • GPIO(General Purpose Input Output) 는 아두이노의 핀처럼 ESP8266 모듈이 제어할 수 있는 핀입니다. ESP-xx 모듈마다 사용할 수 있는 핀 수와 위치가 틀립니다.

.

ESP8266 모듈의 종류와 선택 방법

앞서 언급한 것 처럼 ESP8266 프로세서를 이용해 서드파티 업체들이 다양한 보드를 만들어 판매합니다. 일반적으로 ESP-xx 라는 모델명으로 판매합니다.

HTB1A6JQIXXXXXbcXVXXq6xXFXXXh

굉장히 종류가 많은데 자주 사용되는 것은 ESP-01, ESP-12(E) 입니다.

SP-WRL13678 (ESP-01)

ESP-01은 최소한의 회로만 갖춘 소형 모듈로 저렴한 가격이 장점입니다.(3$ 이내) 하지만 브레드보드에 붙여 사용하기도 힘들고 부가적인 회로를 구성해 줘야하며, 사용할 수 있는 핀(GPIO)이 하나 뿐이라 활용성이 떨어집니다. 오로지 통신 목적으로 모듈을 사용할 때 (그리고 돈이 없을 때;;;) 유용합니다. 물론 이 모듈로도 여기서 소개하는 대부분은 개발 환경을 실행해 볼 수는 있습니다만 추천하지는 않습니다.

esp8266-esp-12e-wifi-soc-module-breakout-board-fully-assembled-pier-1507-24-PIER@1 (ESP-12E)

ESP-12, ESP-12E(개선판) 모듈은 전파 특성이나 플래시 메모리 등 성능이 향상된 버전 정도로 보시면 됩니다. 사용가능한 핀(GPIO)도 넉넉히 제공합니다. ESP-xx 모듈을 이용해서 특수 목적의 보드들을 생산하기도 하는데 이때 보통 ESP-12 모듈을 이용합니다. 테스트를 위해 ESP-12 모듈만 구매할 때는 위 이미지처럼 Adapter plate가 달린 것을 구매하는 것이 편합니다.

images(Adafruit HUZZAH)

Adafruit HUZZAH 는 ESP-12 모듈을 기반으로 쓰기 편하게 각종 회로를 구성해 놓은 보드입니다. 리셋 및 Flashing 모드 버튼 탑재, 5V 전원입력 지원(UART 핀 포함), 3.3V 500mA 레귤레이터 내장, 테스트용 LED 내장 등의 특징이 있습니다. 다만 PC와 통신하기 위해 FTDI 모듈은 외부에 별도로 달아줘야 합니다. 업그레이드 버전인 Adafruit Feather HUZZAH 보드는 LiPo 배터리와 USB 충전을 지원하고 FTDI 모듈까지 탑재한 완전체입니다.

NodeMcu Lua WIFI Internet-2(NodeMCU Lua Dev board)

NodeMCU Lua development board 는 ESP-12 모듈을 기반으로 만든 custom 보드로 Adafruit HUZZAH 와 유사한데 FTDI 칩까지 탑재한 점이 틀립니다. 이 가이드에 소개된 대부분의 개발환경을 사용할 수 있지만 특히 NodeMCU 개발환경에 맞도록 특화시킨 보드입니다. 아두이노 나노처럼 USB 연결만으로 개발, 테스트가 가능해서 사용하기 무척 편합니다. 가격도 적절해서 강력 추천합니다.

wemos(WeMos D1)

WeMos D1 보드는 ESP-12(E) 모듈을 이용해서 아두이노 보드처럼 만든겁니다. 아두이노 UNO 보드와 생김새는 같지만 핵심이 되는 Atmega 칩 대신 ESP-12(E)를 사용한거죠. 왜 이런 보드가 나왔냐면.. 아두이노 개발 환경을 이용해서 ESP8266 펌웨어를 만들 수 있기 때문입니다. 추후 관련 내용을 다시 언급할 것입니다. 가격이 좀 비싸도 익숙한 모양이기도하고 쓰기도 편합니다.

s-l225 (WeMos D1 mini)

WeMos D1 mini 보드는 WeMos D1 보드를 작게 축소시킨겁니다. 아두이노 UNO-Nano 보드의 관계라 보시면 될 듯. 실사용에 필요한 기능은 다 갖추고도 크기가 작기 때문에 추천할만한 보드입니다.

esp8266-development-board(ESP8266 Development board)

ESP8266 Development board : ESP-201 모듈을 이용해서 개발, 테스트에 적합하도록 만든 보드입니다. ESP-201 모듈의 Flash 사이즈가 512KB 인걸 제외하고는 개발용으로 쓸만합니다. LED, Relay, DHT11 온습도 센서, 버저 등이 달려있지만… 그닥 유용하진 않습니다.

이외에도 다양한 모듈, 보드, 악세사리가 판매됩니다만 일단 위에 언급된 보드로 테스트 해보시고 추후 취사선택 하시는걸 추천합니다.

.

테스트를 위한 준비물

ESP 모듈

가이드에 나오는 내용은 거의 대부분의 ESP8266 모듈에 적용할 수 있습니다. 가장 많이 사용되는 모듈인 ESP-12(E) 모듈 혹은 NodeMCU board, ESP201+Dev Kit, WeMos 보드 중 하나를 선택하세요. 단 모듈에 따라 flashing(펌웨어 업데이트) 모드에 들어가는 방법이 조금씩 틀리므로 이 부분은 미리 확인해둬야 합니다.

FTDI (USB to UART converters)

HT1o.P2FTBaXXagOFbX9

ESP8266 모듈과 PC가 USB로 연결되어 통신하기 위해서는 FTDI 모듈이 필요합니다. FTDI 모듈 대신 아두이노 보드를 이용해서 통신하는 방법도 있지만 연결 과정이 더 복잡하고 몇 가지 문제의 소지가 있으니 처음 접하실때는 FTDI 모듈을 사용하시길 권합니다.

FTDI 모듈은 대부분 3.3V/5V 점퍼를 가지고 있으며, 반드시 3.3V로 점퍼 세팅을 해둬야 합니다. 2개 이상의 FTDI 모듈이 준비되면 더 좋습니다. 왜냐면 ESP8266 모듈은 UART0 TX, RX 핀을 통해 펌웨어 업데이트 또는 기본 통신을 처리합니다. 그리고 모듈이 동작하면서 생성하는 디버깅 메시지 출력을 위한 UART1 TX(GPIO2) 핀도 별도로 가지고 있습니다. 따라서 2개의 FTDI 모듈을 사용하면 디버깅이 더 편해집니다. FTDI 모듈은 종류가 몇 개 있는데, 자신의 FTDI 칩에 맞는 드라이버를 미리 PC에 설치해줘야 합니다.

브레드보드용 전원 공급장치 (MB102 breadboard power supplies)

$T2eC16hHJIMFHJDhLo(4BRym44QpS!--60_35

ESP 모듈은 통신할 때 소모전류가 높으므로 안정적으로 3.3V 전원을 충분히 공급해주는 것이 중요합니다. 이를 위해 MB102 전원공급기를 사용하면 좋습니다. MB102는 외부 어댑터나 USB 전원을 입력받아 브레드보드에 3.3V, 5V를 넣어줄 수 있습니다.

기타 부품들

브레드보드, 점퍼선, GPIO 테스트를 위한 저항(460, 1K, 10K), LED, 버튼 등을 준비합니다. 경우에 따라 커패시터, 납땜 환경이 필요할 수도 있습니다.

.

기본 연결 방법

ESP 모듈을 처음부터 아두이노와 함께 사용하는 방법은 추천하지 않습니다. 아두이노 우노 같은 5V 보드들은 동작전압이 틀려 추가 회로를 구성해줘야 하고 당장 필요한 것도 아닙니다. FTDI 모듈과 ESP8266 모듈만으로 구성해서 테스트 해보는 것이 편합니다. 여기서는 ESP-01, ESP-12 모듈의 사용법만을 살펴보겟습니다.

ESP-01 모듈의 핀 구성은 아래와 같습니다.

3

처음 ESP8266 모듈을 받으면 펌웨어 버전을 확인한 뒤 펌웨어 업데이트를 해줍니다. 펌웨어 업데이트를 하기 위해서는 FTDI 모듈에 아래처럼 연결해줘야 합니다.

esp8266-reflash-firmware

GPIO0 핀과 CH_PD 핀이 중요합니다.

ESP8266 모듈은 펌웨어 업데이트를 위해 flashing 모드로 들어가려면 아래 조건을 만족해야 합니다. ESP8266 모듈은 GPIO0, GPIO15, CH_PD

  • GPIO0(IO0) : GND로 연결
  • GPIO15(IO15) : GND로 연결
  • CH_PD(CHIP) : 3.3V (HIGH)로 연결

그래서 위 이미지처럼 연결한 것입니다. (ESP-01 모듈은 GPIO15는 신경 안써도 됨) 이 상태에서 펌웨어 업데이트가 끝났다고 하죠. 그럼 정상모드로 동작하도록 연결을 살짝 바꿔줘야 합니다. 아래처럼 바꿔주면 됩니다.

  • GPIO0(IO0) : 3.3V로 연결 (+10k 저항)
  • GPIO15(IO15) : GND로 연결
  • CH_PD(CHIP) : 3.3V (HIGH)로 연결

즉, GPIO0 핀만 저항을 통해 3.3V 핀으로 연결해주면 됩니다. 그럼 정상모드에서 업데이트 된 펌웨어가 동작할 것입니다.

ESP-12E 모듈의 핀 구성은 아래와 같습니다. 앞선 ESP-01 모듈과 같은 방법으로 펌웨어 업데이트를 할 수 있습니다. 단, ESP-12E  모듈은 GPIO15 핀이 제공되므로 이 핀을 항상 GND로 연결해줘야 합니다.

ESP8266-serial-WIFI-model-ESP-12E-Authenticity-Guaranteed-Upgraded-version

.

펌웨어 업데이트 도구들

ESP8266 모듈의 flash 메모리에 펌웨어를 써주는 툴을 이용해서 펌웨어 업데이트가 가능합니다. 종류가 굉장히 많은데 대부분 기능이 동일하므로 맘에 드는걸 사용하세요. 주요한 업데이트 도구들은 아래와 같습니다.

.

ESP8266 활용법

AT 커맨드를 이용한 제어

ESP-NN 모듈을 구매하면 대부분 AT-Command 펌웨어가 올라가 있습니다. 개발사인 ESPRESSIF에서 제공한 개발환경(SDK)과 소스코드로 빌드한 펌웨어입니다. 이 펌웨어는 UART(Serial) 통신으로 특정 데이터(AT+ 로 시작하는 명령어 문자열)를 받으면 해당하는 동작을 수행하도록 되어 있는데, 이때 사용하는 문자열을 AT Command라 부릅니다.

즉, 아두이노 같은 컨트롤러에 붙여 Serial 통신으로 AT 커맨드를 전송하면 ESP8266 모듈의 동작을 제어할 수 있는거죠. 통신 모듈로서 동작시킬 때, 특별한 설정 없이 사용할 수 있는 기본 방법입니다.
구매하는 모듈에 따라 AT-Command 펌웨어 버전이 틀리고 사용가능한 커맨드도 다릅니다. 따라서 구형 버전인 경우 펌웨어 업데이트를 한번 해주고 사용하는 것이 좋습니다.

펌웨어 업데이트 및 AT 커맨드를 이용한 테스트 방법은 아래 링크를 사용하시기 바랍니다.

ESP8266 SDK 를 이용한 개발

가장 기본적인 펌웨어 개발 방법입니다. ESPRESSIF 사에서 SDK와 소스코드를 제공하기 때문에 Eclipse 같은 툴과 연동해서 C/C++ 언어로 개발을 할 수 있습니다. ESP8266을 제어하는 가장 원초적인 방법이기 때문에 추후 소개되는 개발환경들이 모두 ESP8266 SDK, 소스코드에 기반하고 있습니다.

13_eclipse_open_projects_esp8266_flash

개발을 위해서는 조금 복잡한 개발 환경설정 작업을 해줘야 하는데 OS 별로 이 방법이 조금씩 틀립니다. 그래서 간편하게 개발환경을 맞춰주는 방법이 고안되었는데 Lubuntu 이미지를 이용하는 방법입니다.

이 방법은 윈도우 OS 에 버추얼 머신으로 lubuntu 이미지를 가상으로 돌리고, 우분투 리눅스에서 개발하는 겁니다. 빌드 환경이 갖추어진 lubuntu 이미지를 사용하기 때문에 간단하게 개발 환경을 만들 수 있는 장점이 있어 애용되는듯 합니다.

Sming framework 을 이용한 개발 (추천!!)

ESP8266 SDK를 쓰기 쉽게 만든 개발환경이 Sming 입니다. 아두이노 스타일의 코딩이 가능하고 아두이노 라이브러리도 (일부를 제외하고) 호환됩니다. 그리고 네트워크 관련 모듈들을 제공하기 때문에 훨씬 쉽게 네트웍 기능들을 구현할 수 있는 생산성 높은 개발환경입니다. 일단 이클립스 기반 Sming 개발환경 설정만 되고나면 이후부터는 펌웨어 개발이 더 쉬워지기 때문에 Sming 개발환경을 사용하시길 추천합니다. Sming 활용을 위한 가이드 문서를 제작하였으니 참고하세요.

ESP8266 Arduino IDE 를 이용한 개발

오픈소스인 아두이노 개발환경(IDE)의 경우 1.6.x 버전부터 32bit 프로세서를 탑재한 보드들을 지원합니다. 여기에 ESP8266 보드를 지원할 수 있도록 수정한 프로젝트가 ESP8266 Arduino IDE 프로젝트입니다.

ESP8266_Arduino

쉽게 말해서 아두이노 개발환경을 이용해서 ESP8266 모듈을 아두이노 보드처럼 인식하고 코드를 개발 할 수 있게 해줍니다. 기존의 (익숙한) 아두이노 스케치 코드를 그대로 사용할 뿐 아니라 라이브러리들도 가져와 쓸 수 있는 어마어마한 장점이 있습니다.

wemos

여기에 발맞춰 아두이노 우노 보드처럼 생긴 ESP8266 WeMos 보드도 판매중이라 더욱 매력적입니다. 마치 WiFi 모듈을 내장한 아두이노 보드를 개발하는 느낌을 낼 수 있습니다. 펌웨어 개발이라하면 왠지 어렵게 느껴지는데, 이런 심리적/실질적 장벽을 많이 낮춰줍니다.

일반적인 아두이노 개발처럼 아두이노 IDE에서 스케치 작성하고 보드, 포트를 선택한 뒤 업로드를 하면 자동으로 펌웨어를 만들어 올려줍니다.

재미로라도 한번 시도해 볼만한 프로젝트이며 ESP8266 세계에서 가장 활발히 업데이트 되는 프로젝트 중 하나입니다.

NodeMCU : Lua 스크립트를 이용한 개발

Lua 스크립트를 이용해 Node.js 스타일로 WiFi/GPIO 를 제어할 수 있도록 지원하는 오픈소스 프로젝트가 NodeMCU Lua 입니다. 프로젝트가 제공하는 NodeMCU 펌웨어를 ESP8266 모듈에 올리면 이후 PC에서 터미널 프로그램(Putty 등등)으로 연결해서 사용할 수 있습니다.

NodeMCU 펌웨어엔 ESP8266 core 와 Lua 스크립트 해석기가 탑재되어 있기 때문에 실시간으로 Lua 스크립트를 전송하면 처리해서 결과를 알려줍니다. 그리고 Lua 스크립트를 파일로 만들어서 ESP8266 모듈에 저장하고, 자동으로 실행되도록 설정할 수도 있습니다!!

esplorer_bitcoin_price

ESPlorer 라는 상당히 괜찮은 개발툴을 제공하기 때문에 GUI 환경에서 개발, 모듈 제어가 가능한 것도 큰 장점입니다. NodeMCU Studio 라는 심플한 개발환경도 있으나 ESPlorer를 추천합니다.

다른 개발 환경도 마찬가지지만 ESP8266 모듈을 HTTP 서버, 클라이언트로 동작시킬 수도 있고 AP로 만들어서 1:N 통신중계도 가능합니다. 물론 GPIO 컨트롤이 가능하기 때문에 하드웨어 제어를 연동할 수도 있죠.

NodeMCU Lua 프로젝트는 ESP8266 Arduino IDE 프로젝트와 함께 가장 활성화 된 프로젝트 중 하나입니다. 앞서 소개한 Adafruit HUZZAH, ESP8266-NodeMCU 보드들이 이 펌웨어를 기본 탑재하고 판매됩니다.

.

JavaScript를 이용한 개발 : Espruino, Smart.js

JavaScript는 근래들어 가장 각광받는 개발 언어 중 하나가 되었습니다. 그러다보니 당연히 임베디드 환경에서 JavaScript를 사용할 수 있게 하려는 노력도 있어왔습니다. Smart.js 가 그 중 하나입니다.
Smart.js 자체는 GPIO 제어부터 I2C, SPI, WiFi, File system 까지 지원할 정도로 완성도 높은 프로젝트지만 ESP8266 모듈로의 이식은 더딘듯 합니다. 문서화된 자료가 별로 없습니다.

반면에 비슷한 임베디드용 JavaScript 엔진인 Espruino 프로젝트는 ESP8266 연동이 훨씬 잘 되어 있습니다. 공유되고 있는 문서의 양도 상대적으로 많고 커뮤니티도 활발합니다.

front_main_ide

Espruino 프로젝트의 놀라운 점은 웹 개발환경(Web IDE)을 지원한다는 겁니다. 크롬 앱 형태로 설치해서 사용할 수 있기 때문에 다양한 OS에서 실행이 가능합니다. 게다가 스크래치처럼 블록을 조립하는 형태의 GUI 프로그래밍 방식도 지원합니다.

Espruino, Smart.js 모두 NodeMCU 처럼 해당 펌웨어를 올려서 사용하면 됩니다.

ESP8266 MicroPython 프로젝트

임베디드 시스템에 올릴 수 있도록 개발된 파이썬 언어(해석기, 인터프리터)의 소형화 버전이 MicroPython 입니다. 이미 마이크로 파이썬 전용 테스트 보드가 판매되고 있는데 ESP8266 도 지원하기 위해 개발이 진행되고 있습니다. 완성도있게 ESP8266 을 지원하기 위해선 갈 길이 멀지만, 파이썬 언어의 범용성을 생각해 볼 때 꼭 마무리 잘 되었으면 합니다.

2202-micro-python

펌웨어를 올려서 동작하는 방식이 NodeMCU 프로젝트와 거의 유사합니다. 언어만 바뀌었을 뿐.

그 외의 개발환경, 펌웨어

ESP8266 Basic : PC를 사용한 경험이 꽤 오래된 분은 Basic이라는 언어가 생각나실겁니다. Basic 언어 해석기를 ESP8266용 펌웨어로 만든 프로젝트도 있습니다. 응답하라 19xx 처럼 추억에 빠져보고 싶다면 한번 해보시길.

Frankenstein : Console 로 제어할 수 있도록 다양한 도구 모음을 갖춘 펌웨어. 원격 리눅스 서버에 터미널 프로그램으로 접속해서 제어하듯 ESP8266 모듈에 (COM포트로) 접속해서 제어하도록 해줌. GitHub 페이지, 포럼 참고

.

참고자료

ESP8266 펌웨어 업데이트

ESP8266 모듈을 아두이노 IDE 로 개발하기 (GPIO 제어 + WiFi 통신)

NodeMCU Lua 스크립트를 이용해 프로그래밍하기

ESP8266 BASIC 스크립트로 개발

ESP8266 Espruino

기타 펌웨어

기타 개발환경

기타자료