사물인터넷(IoT)2016. 6. 30. 12:17

저가의 IoT 솔루션으로 각광받고 있는 Espressif 사의 와이파이 모듈인 ESP8266 에는 32비트 MCU가 달려 있습니다. 그래서 아두이노 없이 모듈 단독으로 프로그램을 업로드하여 용도에 맞게 사용이 가능합다. 아두이노의 8Bit 보다 성능이 좋은 MCU가 달려 있는 셈입니다. ESP8266을 단독으로 사용하는 방법에는 여러가지 방법이 있지만 NodeMCU 라는 IoT 플랫폼을 이용하는 방법이 각광을 받고 있습니다. NodeMCU는 Lua 라는 스크립트 언어를 사용합니다. 이번에는 ESP8266 을 위한 NodeMCU 개발환경을 만들어 보겠습니다. 개발환경을 구성하는 방법은 크게 2단계 입니다. NodeMCU 펌웨어 설치, NodeMCU Lua 개발환경 설치 입니다.


연결

PC와의 통신을 위해 FTDI FT232RL 칩을 사용한 USB UART 모듈과 ESP8266 을 연결하고 PC 의 USB 단자에 연결했습니다. ESP8266(ESP-01) 모듈에 대한 자세한 사항은 [이전 포스팅] 을 참조 하면 됩니다.


ESP8266 PINOUT 단자

ESP8266 (ESP-01) 모듈 입니다. 핀 배열은 위와 같습니다.


FTDI사의 FT232RL 칩을 사용한 USB UART 모듈 입니다. 이것 말고 CH340 칩을 이용한 좀 더 저렴한 모듈을 이용해서 설치를 해 보려고 했으나 펌웨어 까지는 정상적으로 설치가 되는 것 같은데 개발툴인 Esplorer 에서 인식하지 못하는 문제가 있었습니다. 약간 비싸지만 이 모듈을 사용해서 개발을 진행하는 것이 안정적일 것 같습니다. 이 모듈의 출력전압은 전압선택 점퍼를 통해서 결정 됩니다. ESP8266 은 3.3V 에서 동작하기 때문에 3.3V 쪽으로 점퍼를 끼워주어야 됩니다.


■ FTDI FT232RL USB UART 모듈 드라이버 설치

http://deneb21.tistory.com/393

 

USB UART

ESP8266 (ESP-01)

VCC (3.3V)

VCC

VCC (3.3V)

CH_PD

GND

GND 

GND

GPIO0 (펌웨어 설치에만 사용)

TXD

RX

RXD

TX








위와 같이 USB UART 와 ESP-01 을 연결하면 됩니다. 여기서 주의할 사항이 있는데 펌웨어 업데이트 시에만 GPIO0 단자가 연결되고 Esplorer 등으로 개발할 경우에는 GPIO0 단자를 빼야 한다는 것입니다. 


그림으로 그려보면 위와 같이 됩니다. 펌웨어 업데이트 시에는 위와 같이 연결하고 개발 시에는 GPIO0 연결을 끊어주면 되는 것입니다.




1. ESP8266에 NodeMCU 펌웨어 설치하기

NodeMCU 펌웨어 설치를 위해서는 펌웨어와 펌웨어를 ESP8266에 올릴 수 있는 Flasher 프로그램이 필요 합니다. 두 가지 소프트웨어를 다운로드 받습니다.


■ 펌웨어 : https://github.com/nodemcu/nodemcu-firmware/releases 에서 nodemcu_integer_0.9.6-dev_20150704.bin 를 다운로드 받았습니다.

nodemcu_integer_0.9.6-dev_20150704.bin



■ 펌웨어 Flasher : https://github.com/nodemcu/nodemcu-flasher 에서 Download Zip 을 클릭해서 다운로드 받았습니다.

nodemcu-flasher-master.zip




NodeMCU 펌웨어 설치를 위한 준비는 끝났습니다.


이제 펌웨어를 설치해야 합니다. ESP-01 이 연결괸 USB UART를 PC에 연결 합니다.


다운로드 받은 NodeMCU Flasher 의 압축을 풀면 Win32, Win64 폴더가 나오는데 자신의 윈도우 OS 버전에 맞는 파일을 실행하면 됩니다. 저는 64비트 버전의 윈도우라 Win64 안에 있는 ESP8266Flasher.exe 를 실행했습니다.


우선 USB To TTL 이 연결된 PC의 COM 포트를 알아야 합니다. 장치관리자에서 확인 COM6 포트로 연결됨


ESP8266Flasher.exe 를 실행했습니다. COM6 포트로 연결 되었습니다. 자동으로 포트가 잡히지만 맞는지 확인해 봅니다.


Config 탭을 눌러서 위에서 다운로드 받은 펌웨어 파일을 선택해 줍니다. 톱니바퀴 모양을 누르면 펌웨어 선택창이 뜹니다.


Operation 탭으로 돌아와서 Flash 버튼을 클릭 합니다. ESP8266에 펌웨어가 설치 됩니다. 


잠시 후 펌웨어 설치가 완료 됩니다.




2. NodeMCU 개발환경(Esplorer) 설치하기

NodeMCU 개발도구는 Esplorer 입니다. Java 로 작성되어 있기 때문에 실행을 위해서는 Java 가 설치되어 있어야 합니다. 설치되어 있지 않다면 아래의 링크를 클릭해서 설치해 주세요. 그리고 잊지 말아야 할 것이 펌웨어 설치 시 의 연결에서 USB UART 모듈과 연결된 GPIO0 의 연결을 끊어주어야 개발툴과 통신이 됩니다.


■ Esplorer 다운로드 : http://esp8266.ru/esplorer/#download 사이트에서 다운로드 받을 수 있습니다. 

ESPlorer.zip


■ Java 다운로드 : https://java.com/ko/download/


Esplorer 의 실행은 ESPlorer.bat 를 실행하면 됩니다. 아무런 반응이 없으면 Java 가 설치되지 않은 것이

므로 위의 Java 설치 링크를 클릭해서 설치해 줍니다.


ESP8266 은 펌웨어 업데이트 후 USB 단자에서 뽑아서 GPIO0 연결을 제거하고 다시 PC에 연결 합니다. 그리고 Esplorer 를 실행 합니다. Esplorer.jar 를 실행해도 상관은 없습니다.


Esplorer 에서 Open 을 클릭 합니다. ESP8266 과 연결하는 단계 입니다.


포트가 연결되고 MCU 와 연결을 시도 합니다. NodeMCU 펌웨어가 발견 되었다고 나옵니다. Esplorer와 ESP8266 모듈이 연결된 것입니다.


아래 Heap, Chip Info, Chip ID 등을 눌러보니 정보를 제대로 가지고 옵니다. 이제 왼쪽 프로그램 소스 입력창에 프로그램을 작성하고 ESP8266 으로 보내면 되는 것입니다.


이상으로 ESP8266(ESP-01)에 NodeMCU 펌웨어를 설치하고 개발환경을 구성해 보았습니다. 이제 어떻게 개발하는지 공부하는 일만 남았군요. NodeMCU 개발에 대해서는 저도 자세한 것은 모르는데 앞으로 익혀가면서 포스팅할 예정 입니다.



※ 추가내용(2016.06.30) : 위와 같이 개발환경을 설치하고 Lua 에 대해서 알아 보던 중 이상한 현상이 발생 하네요. ESplorer 에서 Lua 로 와이파이 연결을 테스트 하던 중 PC에서 장치의 인식이 끊기면서 (장치 관리자에서 사라짐) 통신이 되지 않는 사태가 발생 합니다. 저의 생각으로는 ESP8266 이 전류를 많이 잡아 먹어서 발생하는 문제 같기도 하고 그렇습니다. 그런데 이게 참 열 받는게 어떤 때는 또 잘 되기도 합니다. 장치의 인식이 끊기면 모듈에서 엄청난 열이 발생 합니다. 열을 식히고 다시 연결하면 잘 되기도 합니다. 아무래도 ESP-01 모듈은 아두이노와 연결해서 AT Command 기반의 프로그래밍을 하는게 맞는 것 같고 ESplorer 개발은 전용 개발보드를 이용하는게 좋을 것 같습니다. 


사실 전용보드를 구입했거든요. ^^



※ 추가내용 (2018.09.05) : http://deneb21.tistory.com/591 에 아두이노 IDE에 개발환경 만드는 방법을 올렸다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 포스팅 잘 읽었습니다. lua 관련해서 근래에 관심이 있어 책하나사서 보고있는데 좋은포스팅이네요. 하드웨어모듈에 lua를 이용해서 interface를 시키고싶어서 배우고 있습니다. esp8266은 지난해 사용해보고 보드도 떠보곤했었는데 lua를 이용하는법도 있군요... 한번 포스팅보면서 배워보면 lua를 좀더 잘 이해할 수있는 계기가 될것 같네요..나머지 포스팅도 좀 읽어보아야겠습니다. 소중한 포스팅 감사합니다.

    2016.07.25 00:34 [ ADDR : EDIT/ DEL : REPLY ]
    • 제 포스팅이 도움이 될지 안될지 모르겠네요. 사실 언어적 측면에서의 lua 자체에 대한 글은 아직 별로 없거든요. 저도 배우면서 하는거라... 아무튼 조금이라도 도움이 되셨길 바랍니다.

      2016.07.25 12:20 신고 [ ADDR : EDIT/ DEL ]
  2. 1

    esp-01모듈의 ch_pd핀이 NodeMCU esp-12e 모듈의 어느 핀인가요??
    NodeMCU esp-12e 모듈 핀맵에는 ch_pd핀이 나와있지 않네요..

    2017.02.09 21:03 [ ADDR : EDIT/ DEL : REPLY ]
    • https://www.google.co.kr/search?site=&source=hp&ei=JPGdWI3vDsqz0ATzrrbgCg&q=esp-12e+pinout&oq=esp-12e+pin&gs_l=mobile-gws-hp.1.0.0.1453.10805.0.11433.13.10.1.2.2.0.527.2358.0j4j1j3j0j1.9.0....0...1c.1j4.64.mobile-gws-hp..2.11.1876.3..5j35i39k1j0i131k1j0i30k1j0i5i10i30k1.9NjC-Vtll1g#imgrc=7b0s8FPGnVYO3M:


      대신 구글링 해 드렸습니다.

      2017.02.11 02:01 신고 [ ADDR : EDIT/ DEL ]