본문 바로가기

Arduino/ESP8266 Arduino IDE

ESP8266 Arduino IDE setup

ESP8266 Arduino IDE 설치 및 테스트



ESP8266 펌웨어를 개발하기 위한 가장 간편한 방법은 Arduino IDE를 이용하는 것이다. 아두이노를 개발하는 것과 같은 방법으로 ESP8266 펌웨어를 개발하고 업로드하면 된다


아두이노 IDE 1.6.x 버전부터는 32비트 콘트롤러를 지원하며 1.6.5 보다 나중 버전에서는 업로드에 문제가 있다고 알려져 있다. 그러나 1.6.9 버전에서 테스트해본 결과 별 문제는 없는 것 같고 업로드 후에 LED를 점멸하는 기능도 제대로 실행되는 것을 확인할 수 있었다



테스트 환경

Windows 7

ESP8266-01(네로마트에서 구입), USB to TTL 모듈(네로마트에서 구입)

Arduino IDE 1.6.9

네로마트에서 구입한 USB to TTL 모듈의 드라이버는 Window7에서는 문제가 없지만 Windows 8, 10에서는 제대로 작동하지 않는다고 한다. 사실 이 문제로 많은 시간을 허비한 후에 알게 되었다.



아두이노 IDE 다운로드 및 설치

https://www.arduino.cc/en/Main/Software

설치파일을 더블클릭하여 설치를 완료한다



아두이노 IDE 실행 및 ESP8266 라이브러리 설치 https://github.com/esp8266/Arduino

아두이노 IDE를 실행하고 [ 파일 > 환경설정 ] 을 선택하고 [추가적인 보드 매니저 URL's] 입력란에 다음과 같은 URL을 입력하고 화면 하단의 [확인] 버튼을 누른다

http://arduino.esp8266.com/stable/package_esp8266com_index.json

[툴 > 보드 > 보드 매니저] 를 선택하고 보드 매니저 화면에서 [타입]란에 All, 검색란에 'esp8266' 을 입력하면 esp8266 관련항목이 검색결과 리스트에 'esp8266 by ESP8266 Community' 항목이 나타나고 그 항목을 클릭하여 [설치] 버튼을 누르면 esp8266 관련 라이브러리가 설치되는 상황이 화면 하단의 진행바에 표시된다

설치가 완료되면 보드 매니저 화면을 닫는다



ESP8266 보드 선택 및 예제 코드 컴파일

[툴 > 보드] 에 마우스를 올려보면 팝업메뉴 하단에 ESP8266 보드들이 보이는데 여기서는 ESP8266-01 모듈에 펌웨어를 업로드할 것이므로 [Generic ESP8266 Module]을 선택한다. 선택하는 순간 에디터의 상단에 #include <ESP8266WiFi.h> 행이 자동으로 추가된다

[툴 > 포트] 를 선택하여 현재 ESP8266 모듈이 USB to TTL 모듈을 통해 PC에 연결된 포트를 선택한다

[파일 > 예제 > ESP8266 > Blink] 를 선택하여 에디터에 소스코드를 연다(열린 소스코드는 다른 이름으로 원하는 곳에 저장할 수도 있다)

[스케치 > 확인/컴파일] 을 선택, 혹은 툴바에서 컴파일 아이콘(체크)을 클릭하여 Blink 소스코드를 컴파일한다

[스케치 > 업로드] 를 선택, 혹은 툴바에서 업로드 아이콘(우측 화살표)을 클릭하여 ESP8266 모듈에 펌웨어를 업로드한다



펌웨어 업로드 후 Running Mode로 설정 및 작동상태 확인

펌웨어가 업로드된 후에는 Flashing (Programming) Mode 연결을 변경하여 Running Mode로 연결해주고 모듈 내에 포함된 파란 LED가 점멸하는지 확인한다



예제로 사용된 Blink 의 내용

/*
 ESP8266 Blink by Simon Peter
 Blink the blue LED on the ESP-01 module
 This example code is in the public domain
 
 The blue LED on the ESP-01 module is connected to GPIO1 
 (which is also the TXD pin; so we cannot use Serial.print() at the same time)
 
 Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
*/

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                    // but actually the LED is on; this is because 
                                    // it is acive low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}

ESP8266 모듈 내에 내장된 파란색 LED는 GPIO01 핀에 연결되어 있으며 GPIO01핀은 TXD 용도로 사용되기도 하므로 위와 같이 LED를 켜면서 동시에 시리얼 통신기능을 할 수는 없다. 위에서 사용된 LED_BUILTIN 대신에 다른 핀번호를 사용하면 해당 핀에 LED를 연결하여 테스트할 수 있다



펌웨어 업로드시 USB to TTL 모듈과 연결법 (Flashing(Programming) Mode)




펌웨어 업로드 후 모듈 운용시 연결법 (Running Mode)



프로그래밍시 주의사항 (실행 모드 <-> 프로그래밍 모드 전환과 관련한 오류)

위의 연결도에서 확인할 수 있는 것처럼 프로그래밍 모드와 실행 모드의 차이점은 GPIO0 핀에 GND를 연결하면 프로그래밍 모드이고 제거하면 실행 모드이다. 펌웨어를 작성하여 ESP8266에 업로드하려면 프로그래밍 모드로 설정하고 업로드하며 업로드에 성공하면 업로드된 프로그램이 자동으로 실행된다. 그러나 GPIO0핀에 GND가 여전히 연결된 상태라면 전원을 다시 켰을 때는 프로그래밍 모드로 되돌아 가게 된다. 그러므로 업로드 후에 실행모드로 계속 사용하려면  GPIO0핀에 연결했던 GND 선을 해제하면 된다. 주의할 점은 실행 모드에서 다시 프로그램을 업로드하려면 GPIO0 핀에 GND를 연결하여 프로그래밍 모드로 설정하는 것은 물론이고 ESP8266의 전원을 다시 껐다 켜야만 프로그래밍 모드로 진입한다는 것이다. 

현재 운용 모드에서 프로그래밍 모드로 전환이 안된 상태에서 코드를 업로드하면 다음과 같은 오류가 발생하면서 업로드 작업이 멈춘다

warning: espcomm_sync failed

error: espcomm_open failed

error: espcomm_upload_mem failed



ESP8266 펌웨어 업로드시 전원부족으로 인한 업로드 실패

이 경우에는 외부전원을 사용해야 한다. 외부전원을 ESP8266에 연결할 때는 ESP8266의 GND와 USB to TTL 모듈의 GND 는 외부전원의 GND에 전기적으로 연결되어야 한다