본문 바로가기

IoT 자동화

ESP 01 와이파이 펌웨어 업그레이드 (꼭 해야 한다면 성공 방법으로)

센서 정보를 전달하기 위해 ESP 01로 무선공유기에 연결할 때는 불편한 점이 없었다. 하지만 불행히도 내가 가지고 있는 ESP 01이 특히 AT명령어 중 TCP, 특히 AP관련 명령어를 잘 받아들이지 않아 조사해 보니 펌웨어 버전이 낮아 에러가 발생하는 것을 발견했다. 이것만 아니면 아무런 문제가 없었는데...

 

암튼 펌웨어를 업그레이드하느라 고생을 좀 하다 보니, 나중에 기억나지 않아 고생할까 정리해 두기로 했다.

1. 문제의 시작

지금까지 개발하면서 아두이노를 client mode로 와이파이에 연결해서 사용하는 것은 문제가 없었다. iptime 리피터(익스텐더)에 연결할 때에는 약간의 문제가 생기기도 했지만, WPA2PSK + AES으로 인증 + 암호를 하더라도 AT+RST와 AT+RESTORE명령어를 사용해서 초기화 한 다음, 다시 처음부터 절차를 밝아 시도하다 보면 대부분 문제는 해결이 되었다.

 

하지만, 아두이노를 host(AP mode)로 사용하려는 순간 문제가 발생했다.

 

AT+CWIPAP="XXX.XXX.XXX.XXX","GW","MASK"

 

로 명령을 몇 번을 시도해도 ERROR만 나온다. 그래서 펌웨어 버전을 확인해 보니

 

AT+GMR

 

이 버전의 펌웨어에는 CIPAP명령어가 없단다. 헐, AT mode에서는 IP설정을 할 수 없다.

 

이전에 pfSense를 위한 8 Port Lan, 임베디드 컴퓨터를 구매하기 전에 Linksys AC라우터에 DD-WRT나 OpenWRT펌웨어를 올려서 사용하다가 버전 업그레이드를 하면서 펌웨어가 깨지는 바람에 고생한 적이 있어서, ESP 01은 손대지 않고 사용하려고 마음먹었는데 AP mode에서 IP설정을 하지 않으면 사용할 수 없어서 펌웨어를 업그레이드할 수밖에 없었다.

2. 준비하기

  • ESP 8266 어댑터 구매하기

앞으로 종종 해야 할지 모른다는 생각에 먼저 ESP 01 USB어댑터를 알리익스프레스에서 구매했다.

ESP 8266 어댑터, CH340G

ESP 01에 펌웨어를 넣기 위해서는 ESP 01을 프로그램 모드로 바꾸고 reset버튼을 눌러야 하는데 인터넷에 있는 회로도를 참조해서 만들었다.

 

  • 어댑터에 점퍼선 붙이기

출처: wolles-elektronikkiste.de

버튼을 달아도 되지만 마지막에 링크로 걸어 놓은 유튜브 동영상에 있는 인도친구가 점퍼를 연결하는 것을 소개했는데 나름 간편하고 덜 번거로운 것 같아 다음과 같이 만들었다.

 

 

  • Hercules SETUP Utility

한 번에 성공하지 않는다면 펌웨어를 업데이트하고 테스트하기 위해 아두이노에 연결해야 한다면 점퍼선을 연결하고 Arduino IDE를 연결하고 Serial Monitor를 열고 하는 일련의 작업들이 매우 번거로워진다. 나도 여러 번의 시도를 하고 나서야 방법을 알아내다 보니 어댑터에 연결된 상태로 테스트할 수 있는 프로그램을 찾게 되었다. Hercules SETUP Utlity는 펌웨어를 업데이트하고 나서 바로 테스트를 할 수 있어 설치해 놓으면 매우 편리하게 사용할 수 있다.

 

Hercules SETUP utility | HW-group.com

 

www.hw-group.com

  • Flash Download Tools

ESP 01 SoC (IC칩)의 제조사인 Espressif사의 아래 페이지에서 프로그램을 다운로드한다. 오래된 버전이 넣어야 할 내용이 적어서 쉬워 보일 수는 있지만 알고 나면 최신 버전이 기능도 좋고 사용하는 것도 편하다. 이제는 Espressif도 Micropython으로 펌웨어를 작성하면서 앞으로는 Esptool이라는 파이썬 프로그램을 사용해야 할 것 같다.

 

Tools | Espressif Systems

Quickly get Espressif's RF performance test tool, test firmware, test guide and certification test guide for ESP32, ESP32-C3, ESP32-S2, and ESP8266 series of product.

www.espressif.com

  • ESP 01 펌웨어

아래 제조사 페이지에 가서 꼼꼼히 읽어보면 내가 가지고 있는 AI Tech상의 ESP 01 1MB Flash를 어댑터를 사용해서 업데이트하는 경우는 중단된 (Deprecated) ESP8266 NonOS AT Bin을 사용하거나 개발용 Temporary build를 Archifact에서 찾아서 사용하도록 설명하고 있다. 심지어 중단된 버전을 다운로드하려면 기술팀에 문의하라고 화면이 뜬다. 그래서 내가 구매한 ESP 01를 제조한 Ai Thinker라는 중국회사가 만든 펌웨어 버전을 홈페이지에서 다운로드하여 사용하기로 했다.

 

Various AT firmware summary | 安信可科技

 

docs.ai-thinker.com

이제 준비가 되었으니 펌웨어를 업데이트해 본다.

3. ESP 01 펌웨어 업데이트

시작하기 전에 먼저 장치관리자를 실행하고 USB를 연결하면 포트(COM & LPT)에서 COM포트 번호를 확인할 수 있다.

 

  • 이제 IO0 (GPIO0) 핀과 GND를 연결하고 RST (Reset)와 GND를 연결한 다음 ESP 01을 연결한 어댑터를 컴퓨터의 USB에 꽂는다.

  • 연결된 두 선 중 RST와 GND의 연결을 끊으면 Reset이 된다.

  • 이제 START 버튼을 눌러 내 펌웨어의 정보를 확인한다.

 내가 가진 ESP 01은 QUAD 모드가 가능하고 (QIO), Crystal이 26 MHz인 것을 확인할 수 있다. 그래서 SPI SPEED를 안전하게 26.7 MHz로 선택했다. FINISH 버튼 옆에 있는 글자는 하드웨어 주소 (MAC Address)를 나타내는 것인데 적어 놓으면 편하긴 하지만, 나중에 AT+CIFSR 명령으로도 다시 확인할 수 있다.

 

  • 이제 다운로드한 펌웨어를 불러오고 메모리 주소를 0번으로 지정한다.

Ai Thinker의 펌웨어는 프로그램, 데이터, 부트로더가 분리되어 있지 않은 하나의 이미지이기 때문에 0번지부터 쓰기를 하면 된다. 만일 이미지가 분리되어 있다면 부트로더 0, 프로그램 xx, 데이터 xx, 중간중간에 blank.bin을 매뉴얼에 쓰인 주소대로 입력해야 한다. 입력이 잘못되어 펌웨어가 동작하지 않으면 주소를 수정하고 다시 쓰면 되니 부담 없이 작업해도 된다.

 

  • START버튼을 누르면 펌웨어가 써진다.

쓰기 작업이 끝나면 녹색 Download 버튼이 파란색 FINISH 버튼으로 바뀐다.

 

  • IO0과 GND연결을 끊고 RST와 GND를 연결했다 끊는다 (Reset 한다.)

이제 Hercules SETUP Utility를 실행한다.

 

  • Serial 탭을 선택하고 COM 포트를 바꾼 다음 Open 버튼을 누른다.

  • AT명령을 Send로 입력하고, AT+GMR로 버전을 확인하고, AT+CIPAP명령을 수행한 결과 잘 동작한다.

 

마지막으로 이 방법을 찾는데 도움이 되었던 곳은,