본문 바로가기
프로그래밍/ESP8266 Tutorial

ESP8266 보드를 위한 개발 환경 만들기

by choies1 2016. 2. 9.

1. ESP8266 보드란?

ESP8266 칩은 저가의 WiFi SoC이다. 이 EPS8266 SoC를 이용한 보드(모듈)는 다양하게 팔리고 있다. 다른 WiFi 보드들이 $30 정도에 팔리는데 비하여 이 보드는 $1짜리도 있다. 가격이 저가지만 웬만한 기능을 수행이 가능하다. TCP/IP로 Web Server 역할도 수행이 가능하며, 간단한 H/W 제어도 가능하다. 

개발환경은 Arduino 보드 등 다른 보드와 연결(Uart, Serial로 연결)해서 사용도 가능하고, 독자적으로도 사용이 가능하다. 독자적으로 사용할 때는 Arduino IDE를 사용할 수도 있고, Lua 기반의 Script와 MicroPython 기반의 Script 명령도 동작한다.

[다양한 개발 환경에 대해서는 아래를 참조한다.]

http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_esp&wr_id=1


ESP8266 활용 가이드 목차

 

2. 개발 보드

ESP8266 SoC 기반이지만, RAM 사이즈나 GPIO 개수 등에 따라서 다양한 보드가 존재한다. 

http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2498


esp


HTB1A6JQIXXXXXbcXVXXq6xXFXXXh

가능하면 RAM 사이즈가 큰 esp-12나 esp-12e로 개발을 시작하는 것이 좋다.

esp-12e 칩기반 보드가 몇개 있지만 대표적인 것으로는 아래와 같다.


(Adafruit HUZZAH)

images

(LoLin V3 NodeMCU Lua Dev board)

NodeMcu Lua WIFI Internet-2


https://www.google.co.kr/search?q=lolin+nodemcu&newwindow=1&espv=2&biw=1366&bih=662&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwjSy-6lu4zPAhUFEpQKHeNMAvMQsAQIIw#imgrc=j6vjtPtKoL826M%3A





(WeMos D1 보드)

wemos

(WeMos D1 mini 보드)

esp8266 wemos d1 mini에 대한 이미지 검색결과


(ESP8266 Development board)

esp8266-development-board


위 보드는 인터페이스만 다르고 코드 개발 방법은 유사하다. 여기서는 어쩌다가 구한 보드가 WeMos D1 보드를 기준으로 설명합니다.


wemos





3. 개발환경 설정

여기서 알아볼 개발 환경은 NodeMCU Lua 개발환경입니다.


1) Lua Firmware 다운로드

소스를 받아서 빌드해도 되지만, 툴체인드을 설치하고 해야 되기 때문에 이것은 귀찮은 작업이다. 그래서 그냥 이미 빌드된 Firmware를 다운로드 하는 것으로 진행했다.

https://github.com/nodemcu/nodemcu-firmware/releases

여기서 'nodemcu_float_0.9.6-dev_20150704.bin'을 다운로드 받아서 올리면된다.

(이 Firmware는 9600bps로 통신된다)

누군가 만들어 놓은 시리얼 통신속도가 115200bps로 되어있는 펌웨어 바이너리 파일 (여기를 클릭)도 있다.

다운로드 받는 구체적인 방법은 아래 참조

-  http://arsviator.blogspot.kr/2015/02/nodemcu-lua-on-esp8266.html



만약 정 필요하다면 온라인으로 컴파일하고, 컴파일 결과를 이메일로 보내주는 곳이 있다.

(단, Baudrate는 9600bps이다.)

http://nodemcu-build.com/


비공식적이지만, Windows에서 ESP8266 빌드 환경을 제공하기도 한다. Windows에서 빌드 환경을 구축하기 위해서는 많은 과정을 거쳐야 되는데 이것을 한번에 설치할 수 있도록 해준다. 

http://programs74.ru/udkew-en.html



2) Firmware 다운로드 툴 설치는 아래를 참조한다.

http://www.14core.com/downloads-2/

NodeMCU Flasher for Windows
NodeMCU flasher is a firmware programmer for NodeMCU Development Kit
| Manual | Source Code | Zip | win32 exe | win64 exe |

3) Lua 스크립트 개발을 위한 ESPlorer 설치

- ESPlorer 및 Java sdk 다운로드 후 설치

http://www.14core.com/downloads-2/


ESP8266 / NodeMCU / MicroPhython IDE
Developer Essential for Multiple platform tools for any ESP8266 Developer including NodeMCU and MicroPython AT Command are Supported | Installation Guide  | Source Code | ESPlorer Zip |
(Requires JAVA(SE Version 7 and Above)


4. 툴을 이용하여 Lua Firmware 보드에 다운로드

(일반적으로 ESP8266 모듈의 경우는 GPIO0를 GND에 연결해야 되는데, WeMos D1 보드의 경우는 이러한 작업을 하지 않아도 된다. 다운로드 시에 자동적으로 다운로드 모드로 변경된다.)

nodemcu-flasher를 이용하여 'nodemcu_float_0.9.6-dev_20150704.bin' 을 다운로드 받는다.

다운로드 완료 후에 보드의 리셋 버튼을 누른다.


5. Firmware 동작 확인

다음의 사이트를 참조해서 자신의 ESPlorer (Windows 배치파일)를 실행한다. 만약 실행이 안된다면, Java SDK가 설치가 안된 것이므로 설치한 후에 다시 실행한다.

http://www.14core.com/how-to-install-esplorer-ide-in-multiple-platform/

http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_esp&wr_id=33


이제 ESPlorer에서 Comport(여기서는 COM6)와 Baudrate (9600)를 확인한 후에 Open 아이콘을 누른 후에 연결이 되면 보드의 reset 버튼을 한번 더 누른다. 그러면 아래와 같은 화면이 나올 것이다. 글자가 깨진다면 Baudrate를 조절하면 된다. 9600 아니면 115200이로 변경해 봐라. 


이제 기본적인 설치 환경은 완성이 되었다. 실제 보드를 동작시켜 보자.


5. GPIO 제어

(http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_esp&wr_id=33 를 참조하여 ESPlorer 사용법을 익힌다.) 

ESPlorer 를 이용하여 아래의 코드를 작성한 후에 'Send to ESP' 버튼을 누른다. 그러면 보드내에 있는 LED 칩이 깜빡인다.

----------------------

gpio.mode(4, gpio.OUTPUT)


while 1 do

  gpio.write(4, gpio.HIGH)

  tmr.delay(1000000) -- wait 1,000,000 us = 1 second

  gpio.write(4, gpio.LOW)

  tmr.delay(1000000) -- wait 1,000,000 us = 1 second

end

--------------------

https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua

주의할 것이 있는데, 바로 포트 넘버다. Lua에서 사용하는 GPIO 넘버와, ESP8266에서 사용하는 GPIO 번호가 다르다. 핀 번호 관계는 는 아래를 참조하면 된다. Lua 스크립트에서 GPIO 핀번호 설정 시에 참고하면 된다.

http://arsviator.blogspot.kr/2015/03/esp8266-test-board-2.html


Lua IO indexESP8266 pinIO indexESP8266 pin
0 [*]GPIO168GPIO15
1GPIO59GPIO3
2

GPIO4

10GPIO1
3GPIO011GPIO9
4GPIO2, 내장 LED12GPIO10
5GPIO14
6GPIO12
7GPIO13


아래는 H/W적으로 핀을 연결할 때, 참조할 수 있는 Pin Map이다. 위 표와 아래 표의 기준은 ESP8266 Pin 번호다.

WeMos D1 보드 Pin Map

PinFunction

ESP8266 Pin

D0RXGPIO3
D1TXGPIO1
D2IOGPIO16
D3(D15)IO,SCLGPIO5
D4(D14)IO,SDAGPIO4
D5(D13)IO,SCKGPIO14
D6(D12)IO,MISOGPIO12
D7(D11)IO,MOSIGPIO13
D8IO,Pull-upGPIO0
D9IO,pull-up, BUILTIN_LEDGPIO2
D10IO,pull-down,SSGPIO15
A0Analog InputA0

*All IO have interrupt/pwm/I2C/one-wire supported(except D2)


6. 보드 리셋 후에 바로 코드 실행하기

보드 리셋 후에 바로 코드를 실행하기 위해서는 ESPlorer에서 스크립트를 init.lua로 저장하면되다. 그러면 PC에 코드가 저장이된 후에 ESP8266 보드로 전송이 되는데, init.lua는 리셋 후에 실행되는 코드이다.


7. 인터넷 연결 및 GPIO 제어하기

아래를 참조하면 TCP/IP를 위한 무선 IP 설정 및 동작 확인이 가능하다. 무선 공유기에 접속하여 IP를 할당받은 후에 

https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua


아래는 인터넷 브라우져로 연결하여 WeMos D1 보드(ESP8266)에 연결하여 GPIO를 제어하는 방법을 설명한다.

http://www.14core.com/build-your-own-esp8266-web-server-tutorial/