반응형

ESP8266 은 가장 저렴하게 사용할 수 있는 아두이노를 위한 와이파이 모듈(?)이다. 아니, 아두이노를 위한다고는 썼지만 자체적으로도 CPU(32비트), 메모리, 입출력핀을 내장하고 있어서 아두이노 없이도 독립적으로 프로그래밍하여 작동이 가능하다. 간단하게 와이파이 연결을 위한 SoC 칩 이라고 보면 될 것 같다. 



ESP8266 모듈은 많은 종류가 있다. 가장 기본적인 ESP-01이 있고 메모리, 프로세서, GPIO핀의 갯수 등에 따라 다양한 종류가 있다. 스펙을 살펴보고 자신이 필요로 하는 용도의 것을 선택하면 된다. 이 글에서는 ESP-01을 이용한다. GPIO 단자가 2개 이기 때문에 와이파이를 통하여 다양한 제어를 원한다면 ESP-12E를 이용하면 된다.


하지만 아두이노 연결을 위해서는 소프트웨어 시리얼로 연결을 하는데 이는 Baud Rate를 19200bps 까지만 지원을 한다. 반면 ESP8266은 기본 115000bps로 통신을 한다. 물론 그대로도 사용할 수 있지만 사용하기가 까다롭다. 아두이노 소프트웨어 시리얼과의 원활한 연결을 위하여 ESP8266의 Baud Rate를 낮추어야 한다. 이는 펌웨어의 업그레이드로 가능하다. 


펌웨어 업데이트는 두 가지의 방법이 있는데 첫번째는 USB to UART 보드를 이용해서 펌웨어를 업데이트 하는 방법이 있고 ESP8266 이외에도 컴퓨터의 USB 포트에 꼽아 쓰는 UART 보드가 하나 더 필요하다. 두번째 방법은 아두이노와 직접 연결하여 업데이트 하는 방법이다. 하지만 여기에는 하나의 위험사항이 따른다. ESP8266은 기본적으로 3.3V 로 동작하지만 아두이노의 Tx, Rx 출력은 5V 출력이기 때문이다. 아두이노 우노에서는 3.3V, 5V 두가지 전원을 제공하지만 Tx, Rx 출력은 5V 고정이기 때문이다. 이 때문에 업데이트를 하려다 ESP8266 모듈이나 아두이노가 고장이 날 수도 있기 때문에 권장하고 싶지는 않다. USB to UART 모듈이 없는데 할 수 없이 고장의 위험을 감수하고 업데이트 하고 싶을때 하는 방법인 것이다.


하지만 이 글에서는 고장나면 하나 더 산다는 대인배(?)의 마음가짐으로 두 번째 방법으로 업데이트를 시도해 보려고 한다.(사실 구글링 해보면 바로 연결해서 업데이트 성공한 사람도 꽤 있고... 레벨 쉬프팅 회로를 구성하여 5V --> 3.3V로 신호를 다운시켜 안전빵으로 성공한 케이스도 많이 있다. 사실 이걸 권장) 보다 안전하게 업데이트를 하고 싶은 사람은 USB to UART 보드를 통한 첫번째 방법을 이용하길 바란다.


ESP8266 데이터시트(Datasheet)

ESP8266_Specifications_English.pdf



ESP8266 모듈(ESP-01)의 뒤면모습, 8개의 핀이 있다.


앞모습, 8개 핀의 각각의 기능은 위의 그림과 같다. 위와 같이 3.3V로 동작하며 GPIO Pin 2개, 통신을 위한 Tx, Rx 핀, RST(Reset), CH_PD(Chip Power Down) 핀으로 구성이 되어 있다.


아두이노와 ESP8266 과의 연결은 아래와 같이 한다.


Fritzing 파일

ESP8266Frimware_Update.fzz


연결

Arduino  /   ESP8266

Tx  ------- Tx

Rx  ------- Rx

GND ------ GND & GPIO 0 (GPIO0은 펌웨어 업데이트 시에만 꼽는다. 와이파이 테스트 시에는 뽑음)

3.3V ------ CH_PD & 3.3V (VCC)



하드웨어의 연결이 끝났으면 펌웨어를 ESP8266에 올리기 위한 프로그램을 다운로드 받고 펌웨어도 다운로드 받는다. 다음의 URL에서 다운로드 받거나 이 블로그에 올린 파일을 다운로드 받으면 된다.

프로그램 준비

1. 펌웨어 업데이트 툴 다운로드, 별도의 설치는 없으며 나의 경우엔 C 드라이브 바로 밑에 압축을 풀어주었다. 다운로드 폴더에서 바로 실행하면 안될 수 있음.

https://docs.google.com/file/d/0B3dUKfqzZnlwVGc1YnFyUjgxelE/edit

ESP8266_flasher_V00170901_00_Cloud Update Ready.zip


2. 펌웨어 다운로드, 압축을 풀어나오는 bin 파일을 업데이트 툴 풀어놓은 폴더에 같이 복사해 놓으면 된다.

https://docs.google.com/file/d/0B3dUKfqzZnlwdUJUc2hkZDUyVjA/edit

ESP8266_AT_V00180902_02_baudrate watchdog added.zip


3. ESP8266 개발 라이브러리(9600bps 전용), 아두이노 IDE Library 폴더에 복사

https://github.com/Diaoul/arduino-ESP8266

arduino-ESP8266-master.zip



펌웨어 업데이트는 다음의 순서대로 진행하면 된다.

펌웨어 업데이트 순서

1. 아두이노를 PC에 연결한다. 연결하면 PC의 몇 번 시리얼 포트에 연결되었는지 알기위해 나 같은 경우 아두이노 IDE를 실행하여 포트번호를 확인 하고 IDE를 닫았다. 나의 경우 COM3에 연결된 것을 확인.




2. 펌웨어 업데이트 프로그램(esp8266_flasher.exe)을 실행하고 Bin 버튼을 눌러 위에서 다운 받았던 펌웨어 파일을 선택해준다. COM 포트 번호가 잘 못 되었으면 고쳐준다.



3. Download 버튼을 누르면 펌웨어 업데이트가 진행된다. 맨 마지막에 'Leaving...' 메시지가 나오면 업데이트가 정상적으로 종료된 것이다.



펌웨어 업데이트 시 ESP8266 모듈에 위와 같이 파란불이 깜빡이면서 업데이트가 진행이 된다. 업데이트가 끝나면 파란불이 꺼진다.


ESP8266 작동 확인

펌웨어 업데이트가 완료 되었으면 기본적인 통신체크를 해서 정상적으로 통신이 되는지 확인한다. 먼저 아두이노의 전원을 뽑아서 전원을 꺼준다. 펌웨어 업데이트(업데이트 모드 진입)를 위하여 임시로 연결했던 GPIO0을 빼준다. 안빼면 통신이 안된다. 다시 아두이노를 PC와 연결한다.



위와 같이 AT 커맨드를 보냈을 때 OK 메시지가 나오면 펌웨어가 제대로 업데이트 되고 모든 것이 정상적으로 동작한다는 것을 의미한다.

AT 커맨드가 잘 된다면 펌웨어의 버전을 확인하는 AT+GMR 명령을 입력하면 위와 같이 펌웨어 버전정보를 ESP8266 에서 보내주게 된다.


참고, ESP8266 AT 커맨드 정리 사이트

http://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/#AT

ESP8266 - AT Command Reference.pdf



이것으로 ESP8266을 아두이노에 연결해서 사용하기 위한 펌웨어 업데이트 방법에 대해서 알아보았다. 다음 포스팅에서는 실제로 와이파이에 연결하여 활용하는 것을 해 보려고 한다.



■ 추가사항 (2016.11.25) : 이 글에 나오는 펌웨어 업데이트 방법 보다 아래 링크의 USB Serial 모듈을 이용해서 펌웨어를 업데이트 하는 것을 권장한다. 그리고 기왕 사려면 FT232RL 칩을 이용한 모듈을 추천한다.

[사물인터넷(IoT)] - ESP8266 와이파이 모듈 펌웨어 업데이트 (USB To TTL 모듈 이용)

[사물인터넷(IoT)] - ESP8266 에 NodeMCU 펌웨어 및 Lua 개발환경 설치하기


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

반응형

+ Recent posts