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 모듈에 위와 같이 파란불이 깜빡이면서 업데이트가 진행이 된다. 업데이트가 끝나면 파란불이 꺼진다.
ESP8266 작동 확인
펌웨어 업데이트가 완료 되었으면 기본적인 통신체크를 해서 정상적으로 통신이 되는지 확인한다. 먼저 아두이노의 전원을 뽑아서 전원을 꺼준다. 펌웨어 업데이트(업데이트 모드 진입)를 위하여 임시로 연결했던 GPIO0을 빼준다. 안빼면 통신이 안된다. 다시 아두이노를 PC와 연결한다.
위와 같이 AT 커맨드를 보냈을 때 OK 메시지가 나오면 펌웨어가 제대로 업데이트 되고 모든 것이 정상적으로 동작한다는 것을 의미한다.
AT 커맨드가 잘 된다면 펌웨어의 버전을 확인하는 AT+GMR 명령을 입력하면 위와 같이 펌웨어 버전정보를 ESP8266 에서 보내주게 된다.