본문 바로가기

IoT/Firmware Update

ESP8266 Firmware Update

ESP8266 (WiFi 통신모듈) 펌웨어 업데이트 성공기


ESP8266 모듈은 아두이노와 연결하여 사용하려면 먼저 펌웨어를 업데이트해야 한다. 기본으로 내장된 펌웨어는 시리얼통신의 속도가 115200bps 로 설정되어 있기 때문에 아두이노와 통신하기 위해서는 9600bps 속도를 지원하는 펌웨어를 사용해야하기 때문이라고 한다. 여기서는 USB to TTL모듈과 ESP8266 모듈을 연결하여 무리 없이 펌웨어를 업데이트하는 방법을 알아보고자 한다


ESP8266_Specifications_English.pdf



테스트 환경

Windows 10

ESP8266-01 모듈(http://neromart.co.kr/goods/view?no=13094)


USB TO TTL 모듈(http://neromart.co.kr/goods/view?no=11110)

[RJ Tech] USB to TTL 모듈 (PL2303HX IC 탑재)


USB TO TTL (PL2303HX) 드라이버 다운로드 http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41


업데이트용 소프트웨어    

esp8266_flasher.exe

업데이트할 펌웨어

v0.9.2.2 AT Firmware.bin



[Failed to Connect], [Invalid head of packet]

ESP8266 모듈의 펌웨어 업데이트를 시도하면서 이런 오류들과 며칠간(테스트 시작부터 테스트에 성공한 지금까지 1주일도 넘었다) 씨름하면서 별 생각이 다 들었다. 먼저 개발용 컴퓨터가 문제가 있는지 의심스러워서 이번 기회에 아예 Windows 10으로 업그레이드하기로 했다. 또 가지고 있던 FTDI232 모듈과 ESP8266-01 모듈이 모두 잘 못된 것은 아닌지 의심이 들었다.


결국 네로마트의 ESP8266-01 제품설명에 나와 있는 펌웨어 업데이트 방법을 그대로 따라서 하기로 결정하고 전화로 해당 부품을 문의하여 네로마트 사이트에서 그대로 부품을 주문했다. 결과적으로 ESP8266의 펌웨어 업데이트에 성공했다


ESP8266 모듈에 문제가 있는지 의심이 되어 한개를 새로 주문했고 모듈에 연결될 USB to TTL 모듈도 함께 주문했다. 네로마트에 상담전화를 해서 사이트에 올려져 있는 바로 그 USB to TTL을 주문하려고 하니 그 부품을 알려 달라고 해서 주문을 했다.

상담을 해주시는 분의 설명은 ESP8266을 제조한 업체에서 만든 USB to TTL 모듈이니만큼 잘 연결될 것이라고 했다.



ESP8266 모듈과 USB to TTL 모듈의 연결

주문한 물건이 도착하고 퇴근 후 밤에 기대에 부풀어 포장을 해제하고 ESP8266과 USB to TTL을 점퍼선으로 연결했다

연결방법은 아래 그림과 같다



USB to TTL 모듈의 드라이버 설치

개발용 PC에 네로마트의 USB to TTL 구매 페이지에서 드라이버를 다운로드해서 압축을 해제하고 실행파일을 더블클릭하여 USB to TTL 모듈의 드라이버 설치를 마쳤다. 



업데이트용 소프트웨어와 업데이트할 펌웨어 다운로드

아두이노와 ESP8266 모듈을 연결하여 사용할 예정이므로 ESP8266의 펌웨어를 업데이트해야 한다

네로마트의 ESP8266 구매 페이지에 첨부된 압축파일을 다운로드하고 압축을 해제하면 그 안에 모두 포함되어 있다. 

ESP8266과 USB to TTL 모듈을 연결하고 PC의 USB포트에 연결했다

esp8266_flasher.exe 파일을 관리자 권한으로 실행한다

혹시 될까하는 급한 마음에 이 상태에서 업데이트를 시도했으나 익숙한 [ Failed to Connect] 메시지만 메아리처럼 돌아왔다

드라이버를 설치한 후 리부팅을 안해서 그런가 하고 시스템을 다시 부팅하기로 했다. 다른 방법이 떠오르지 않았기 때문이었다



UST to TTL의 드라이버 업데이트

시스템을 리부팅한 후에도 ESP8266의 펌웨어 업데이트 시도는 계속 실패했다. 밤은 늦어가고 퇴근 후 피곤한 몸으로 USB to TTL 모듈의 드라이버를 장치관리자에서 업데이트 해보려고 작업을 걸어놓고 지켜 보다가 그만 눈을 떠보니 아침이 되어 있었다. 절전 모드에 들어가 있었던 PC를 다시 깨우고 새로 로그인한 후에 아직까지 USB 포트에 연결되어 있는 ESP8266모듈의 펌웨어를 업데이트해보기로 했다



장치관리자에서 USB to TTL 모듈이 연결된 포트 확인

장치관리자의 포트 부분에서 USB to TTL 이 연결된 포트를 확인한다

확인을 해보니 아무런 오류도 없이 COM11 으로 설정되어 있는 것을 확인할 수 있었다. 반갑기도 했지만 이게 왠일일까? USB to TTL 모듈의 드라이버를 설치하고 시스템을 리부팅한 것이 효과를 본 것이라고 생각했다. 여러번의 테스트를 통해 나중에 안 것이지만 PC를 리부팅할 때 USB에 ESP8266을 연결한 상태에서 리부팅하면 장치관리자에서 포트를 확인했을 때 아무런 문제도 없이 장치가 잘 인식되었지만 부팅한 후에 ESP8266을 연결하면 장치가 제대로 인식되지 않는 문제가 있었다. Windows10과 드라이버가 제대로 호환되지 않는 문제라는 생각이 들었다



ESP8266 펌웨어 업데이트 실행

esp8266_flasher.exe 파일을 관리자 권한으로 실행한다

PORT : 위에서 확인한 COM11을 입력한다

BIN : 네로마트에서 다운로드한 v0.9.2.2 AT Firmware.bin 을 선택한다

Download 버튼을 눌렀다

결과는 놀랍게도 아래와 같이 ESP8266 펌웨어 업데이트에 성공이었다



새로 구입한 ESP8266 모듈의 펌웨어 업데이트에 성공하자 이미 가지고 있었으나 펌웨어 업데이트에 계속 실패만 해서 미운 털이 박힌 3개의 ESP8266을 이번에 확실히 검증해서 의심을 정리하기로 하고 위에서 성공한 ESP8266을 제거하고 그 자리에 다른 모듈을 연결했다

동일한 방법으로 업데이트를 시도하고 가지고 있던 3개의 ESP8266은 모두 펌웨어 업데이트 성공 소식을 전해 주었다.



마치며......

ESP8266 모듈에 USB to Serial 모듈을 사용하여 펌웨어를 업데이트하는 것이 안전하고 확실한 방법이라는 것은 알았지만 USB to Serial 모듈도 아무거나 사용하면 안된다는 것은 모르고 있었다. 지금까지 테스트해 왔던 USB to Serial  모듈은 FTDI232 모듈이었는데 이 연결에 문제가 있었다는 것을 알게 되었다. 반복된 테스트의 실패 덕분에 결국 ESP8266 모듈 4개와 USB to Serial(FTDI232) 모듈 2개 그리고 USB to TTL 모듈이 수중에 들어 오게 되었다. 이런 일로 시간을 소비한다는 것은 나를 위해서나 사회를 위해서나 결코 생산적이지 않다고 생각하며 저와 같은 문제로 마음이 상한 누군가가 또 있을지 모르기에 이 글이 조금이나마 그런 분들의 마음을 달래주길 바라는 마음으로 올립니다.