본문 바로가기
Arduino(아두이노) 키트 강좌

Step.27-Arduino Uno 로 ESP8266 Wifi 모듈을 사용해 AT커맨드 통신하기

by 오마이엔지니어 2016. 6. 11.
반응형

Arduino Uno 로 ESP8266 Wifi 모듈을 사용해 시리얼 모니터로 AT 커맨드 통신을 해보는 프로젝트 입니다
ESP8266 은 32Bit ARM-core 기반의 Wifi 모듈로 ADC, I2C, UART 등의 기능을 할수있는 MCU가 탑재되어
아두이노 (Arduino) 와 같은 마이크로 컨트롤 보드와 연결해 사용하거나 독립적으로 프로그래밍이 가능합니다
ATcommand를 통해 아두이노 시리얼 모니터에서 명령어를 전송하여 Wifi통신을 제어할 수 있습니다
그밖의 다양한 무선 Wifi 프로젝트를 테스트 해 보는데 유용합니다



ESP8266 모듈은 프로세서 GPIO 핀의 갯수 또는 SMD & DIP 타입 등의 차이에 따라 위 이미지 처럼 여러가지 종류가 있습니다
사양을 확인해서 각자의 프로젝트와 개발환경에 맞춰서 제품을 선택해서 사용하면 됩니다
본 프로젝트에서는 가장 기본적인 ESP-01 모듈을 사용하였습니다


<ESP8266 (ESP-01) 이미지>



테스트를 진행하기 전에 먼저 ESP8266 모듈은 기본 통신 속도가 115000bps 이므로
아두이노와 연결해 시리얼 통신을 하기 위해서 통신 속도를 9600bps 로 설정해 주어야 합니다

<사실 꼭 통신 속도를 9600bps 로 사용해야만 하는것은 아닙니다 아두이노 IDE 의 시리얼 모니터에서 통신속도를 115200 으로
설정하고 통신을 해도 상관없습니다, 다만 대부분의 아두이노 레퍼런스들이 9600을 기본으로 했기 때문에

이를 토대로 테스트 하는것일 뿐입니다 하지만 ESP8266 ESP-12E 가 탑재된 Wemos 보드 라던가 Nodemcu Lua WIFI 모듈은
라이브러리의 레퍼런스가 115200 통신속도를 기반으로 하고 있습니다 펌웨어 업데이트 없이 115200으로 통신해도 상관없습니다>

본 테스트에서는 펌웨어 업데이트 후 아두이노와 연결하여 테스트를 하도록 합니다
펌웨어 업데이트를 하기 위해서는 USB to UART 또는 USB to TTL 모듈이 필요합니다

아두이노와 직접 연결하여 업데이트 하는 방법도 있지만 ESP8266 모듈은 기본적으로 3.3V 로 동작하지만
아두이노의 TX, RX 출력은 고정 5V 출력 이기때문에 잘못하면 ESP8266 모듈은 물론 아두이노 보드에 손상이 갈수 있는

위험이 따르므로 USB to TTL 모듈로 안전하게 펌웨어 업데이트를 하도록 하는게 좋겠습니다

본 프로젝트에서는 USB to TTL 모듈 을 사용하였습니다


ESP8266 펌웨어 업데이트 프로그램

ESP8266_flasher_V00170901_00_Cloud Update Ready.zip


ESP8266 펌웨어 업데이트 파일

ESP8266_AT_V00180902_02_baudrate watchdog added.zip

펌웨어 업데이트 동영상


펌웨어 업데이트를 시작하면 모듈에 파란불이 깜박입니다 펌웨어 업데이트가 정상적으로 끝나면 파란불이 꺼집니다

펌웨어 업데이트가 끝났으면 아래와 같은 방법으로 AT커맨드 테스트를 해봅니다

<AT커맨드 테스트 하기>

기본적으로 펌웨어 업데이트가 되어 있어야 합니다

1.아두이노 우노에 일단 Arduino IDE를 실행시킨후 파일->예제->Basic->Blink 스케치를 업로드 해 줍니다

이때 ESP8266 모듈과 아두이노 우노는 연결하지 않고 업로드 합니다

업로드 중 에러가 날수 있습니다


2.Blink 스케치 업로드가 끝나면 하단 구성 배선도를 참조해서 배선합니다

펌웨어가 정상적으로 업로드 된 상태라면 배선이 완료되면 무선 WIFI 에 ESPXXX 식의 이름이 뜹니다


WIFI를 선택해서 연결시켜 줍니다


3.Arduino IDE 실행후 시리얼 모니터를 열고 하단 이미지와 같이 Both NL & CR 그리고 9600 보드레이트로 설정합니다


AT 커맨드를 보냈을 때 OK 메시지가 나오면 ESP8266 Wifi 모듈의 펌웨어가 제대로 업데이트 된것입니다
AT 커맨드가 잘 된다면 펌웨어의 버전을 확인하는 AT+GMR 명령을 입력하면 이미지와 같이
펌웨어 버전정보를 ESP8266 에서 보내주게 됩니다


AT커맨드 정리 사이트

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



사용된 부품

Arduino Uno R3 (Italy)

ESP8266 (ESP-01) 모듈

미니 브래드 보드

점퍼케이블

 

사용된 키트

Arduino Starter kit (클릭)


구성 배선도 


 

 

사용된 예제소스 

(Blink) Arduino IDE를 실행시킨후 파일->예제->Basic->Blink 스케치를 업로드


주의사항

Blink 스케치 업로드시 ESP8266 모듈과 아두이노 우노는 연결하지 않고 업로드 합니다

업로드 중 에러가 날수 있습니다

Arduino IDE 실행후 시리얼 모니터를 열고 Both NL & CR 그리고 9600 보드레이트 설정합니다

 

프로젝트 동영상



펌웨어 업로드 없이 AT커맨드 만으로도 통신 속도를 9600bps
으로 변경할 수 있습니다

ESP-01 모듈 경우 생산업체에 따라서 출고될 때 마다 안에 들어있는 펌웨어가 다른 경우를 확인할 수 있습니다
모듈에 AI-Cloud 마킹이 안되어 있는 ESP-01 제품 같은 경우 안에 Farylink 펌웨어가 업로드 되어 출고 되고 있습니다


배선은 위의 구성배선도와 동일하게 배선하고 시리얼 모니터 에서
AT+GMR를 쳐보면 펌웨어를 확인할 수 있습니다


Farylink 는 기본 통신속도가 115200bps 로 잡혀 있는데 9600bps 으로 바꾸고 싶다면 위 이미지 처럼 

AT+UART_DEF=9600,8,1,0,0

을 입력해 주면 통신 속도가 9600 으로 변경 됩니다 (OK 가 나오면 성공 ERROR 가 나오면 실패 입니다)


위 이미지 처럼

AT+UART_DEF=9600,8,1,0,0 입력해 주고 변경을 완료한 것을 확인할 수 있습니다
하지만 펌웨어에 따라서 위 명령어로 변경을 할 수 없을수도 있습니다
이 경우 AT+UART=9600,1,0,0 을 입력해 보거나 펌웨어 정보를 확인해서 변경을 시도해야 합니다

프로젝트 동영상-ESP-01 모듈을 사용해서 AT커맨드로 통신속도 조정해 보기


ESP8266_flasher_V00170901_00_Cloud Update Ready.zip
8.63MB
ESP8266_AT_V00180902_02_baudrate watchdog added.zip
0.13MB
반응형

댓글