본문 바로가기
Arduino(아두이노) 활용 강좌

아두이노 ESP8266 GPIO 와이파이 쉴드 (ESP8266 GPIO WIFI Shield) 아두이노 MEGA2560 으로 사용하는 방법 알아보기

by 오마이엔지니어 2019. 3. 25.
반응형

 

아두이노 ESP8266 GPIO 와이파이 쉴드 (ESP8266 GPIO WIFI Shield)를 아두이노 MEGA2560 으로
사용하는 방법을 알아보는 프로젝트 입니다

먼저 아두이노 ESP8266 GPIO 와이파이 쉴드 (ESP8266 GPIO WIFI Shield)의 사용법을 알아보고
웹서버 테스트와 웹으로 LED를 제어해 보겠습니다

 

<아두이노 ESP8266 GPIO 와이파이 쉴드 이미지>
ESP-12E WIFI 모듈이 탑재 된 ESP8266 GPIO 와이파이 쉴드 입니다
아두이노 우노나 메가 2560 등의 마이크로 컨트롤 보드에 장착해서 사용할 수 있습니다
제품 특성상 통신을 위해서 FTDI 또는 UART 통신하는것을 권장합니다
(아두이노에 장착해서 사용하거나 아두이노 COM포트를 사용해서 통신하는 방법은 포스팅 하단 부분을 참조해 주세요)
Arduino IED 에서 ESP8266 패밀리 라이브러리 설치 후 NodeMCU 1.0 (ESP-12E Module) 로 설정 후 사용
플래시 모드 와 통신모드 에서 스위치 설정에 주의합니다

<아두이노 ESP8266 GPIO 와이파이 쉴드상세사양>


 

 

 

사용된 부품
아두이노 우노 (Italy)
아두이노 메가 2560 (호환보드)
아두이노 ESP8266 GPIO 와이파이 쉴드
Micro USB to TTL (CP2102)

점퍼케이블
미니 브래드보드
막대저항 220 Ohm
5mm LED 블루


구성 배선도

사용된 예제파일

Blink.txt

ESP8266_LED.txt


테스트방법
기본적으로 통신을 위해서 FTDI 또는 UART 통신 모듈이 필요합니다
본 테스트 에서는 Micro USB to TTL 모듈 (CP2102) 을 사용하였습니다

FTDI 또는 UART 통신 모듈과 배선 방법은 위와 같습니다


아두이노 우노와 연결해서 아두이노 COM포트로 통신하는 배선 방법은 위와 같습니다

주의!
아두이노 우노나 메가에 연결하거나 장착하기 전에 꼭 보드의 스케치를 디폴트로 초기화 해준후 장착해야 합니다!
스케치 디폴트 초기화 방법
아두이노 IDE에서 파일--->예제--->Basic--->BareMinimum 선택후 스케치 업로드

*참고*
아두이노 ESP8266 GPIO 와이파이 쉴드는 0번 핀과 1번핀이 아두이노 우노와 반대로 되어 있습니다
때문에 아두이노 우노에 그냥은 장착해서 사용할 수 없습니다 (그대로 장착해서 사용하면 COM포트가 먹통이 됩니다)
위 이미지 처럼 점퍼케이블로 아두이노 우노와 연결해서 사용하는 방법을 권장하며, 꼭 아두이노 우노에 장착해서 쉴드 형태로 사용하고 싶다면
ESP8266 GPIO 와이파이 쉴드의 0번핀과 1번핀을 끝까지 구부려 준 후 아두이노 우노에 장착한 다음 아두이노의 0번핀과 1번핀에 커넥터 같은것을 사용해서 점퍼케이블을 연결할 수 있게 핀을 따로 빼주는 작업을 해주어야 합니다, 핀을 따로 빼주는 작업이 되었다면

우노의 0번 RX 를 쉴드의 디버깅 핀 RXD에 아두이노 우노의 1번 TX 를 쉴드의 디버깅 핀 TXD 에 연결후 사용하면 사용 가능합니다


 

사전에 먼저 아두이노 IDE에 ESP8266 패밀리 라이브러리를 설치 해 주어야 합니다

 

환경설정에서 추가적인 보드매니저 URL에 http://arduino.esp8266.com/stable/package_esp8266com_index.json 

링크의 URL를 추가해 줍니다

 


보드
 매니저에서 타입을 "Contributed"로 선택해주면 ESP8266 Community  나오게 됩니다
설치를 눌러서 최신버전을 설치해 주면 됩니다


설치가 끝나면 툴--->보드--->NodeMCU 1.0 (ESP-12E Module) 순으로 클릭합니다 NodeMCU 1.0 (ESP-12E Module) 이 추가 되었습니다

먼제 쉴드의 WIFI 기능의 이상 유무도 확인할 겸 HelloServer 예제를 테스트 해 보겠습니다

파일--->예제--->ESP8266WebServer--->HelloServer 순으로 클릭합니다
스케치 코드에서 const char* ssid = "........"  const char* password = "........"
이 부분의 " "를 본인의 Wifi 아이디와 비밀번호 설정으로 수정해 준후 업로드 해 줍니다

스케치 업로드 전에 반드시 점퍼 설정을 확인해야 합니다

반드시 점퍼 설정은 FLASH 모드로 설정 후 스케치 업로드 해 줍니다
그리고 스케치 컴파일 및 업로드가 정상적으로 완료 되면 점퍼를 위 이미지 오른쪽 처럼 통신모드로 변경해 줍니다


시리얼 모니터를 켜고 쉴드의 ESP RST 버튼을 눌러 줍니다

이때 물론 반드시 시리얼 모니터의 보드레이트는 115200 으로 되어있어야 하는 점 주의 합시다

시리얼 모니터의 통신이 무반응 일때는 UART 통신 모듈의 전원을 제거하고 쉴드의 스위치 모드 재검점 후 다시 전원을 인가해 줍니다
(종종 통신이 원활하지 않을때가 있는데 위와 같은 방법으로 계속 시도해 주면 성공합니다)
WIFI 와 연결 된 IP주소 192.168.0.X 을 확인 할 수 있습니다

PC의 웹 브라우저를 열고 주소창에 192.168.0.X 를 입력합니다

웹상에 hello from esp8266! 메세지를 확인할 수 있습니다

프로젝트 동영상-Wepserver Hellosever 예제 테스트해 보기


프로젝트 동영상-아두이노 우노에 연결해서 Wepserver Hellosever 예제 테스트해 보기

 


프로젝트 동영상-아두이노 우노에 장착해서 Wepserver Hellosever 예제 테스트해 보기

이어서 웹서버로 LED를 제어해 보는 프로젝트를 진행해 보겠습니다

먼저 아두이노 우노에 쉴드를 장착하지는 말고  쉴드에 FTDI 또는 UART 통신 모듈만 기본 배선한 다음

위 첨부 된 ESP8266_LED 예제 파일을 복사해서 스케치 업로드 해 줍니다

#include <ESP8266WiFi.h>
위 라이브러리를 사용합니다

const char* ssid = "YourWifiNetworkName";
const char* password = "YourPassword";

위 부분 자신의 와이파이 아이디와 비밀번호로 수정해 줍니다

int ledPin = 14; // GPIO14
WiFiServer server(80);
LED핀 설정은 GPIO 14 번인것을 알 수 있습니다

ESP-12E 핀맵을 확인해 보면 GPIO14 가 밑에서 4번째 인것을 알 수 있습니다 (위 첨부된 배선도 참조해서 배선 합시다)

 

void setup() {
  Serial.begin(115200);
  delay(10);

 

통신속도는 115200 입니다

// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print(on");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn on </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />"); 
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

스케치 수정이 끝났으면 점퍼를 플래시모드로 설정 후 스케치를 컴파일 및 업로드해 줍니다
스케치 업로드가 정상적으로 끝나면 점퍼를 다시 통신 모드로 변경 후 아두이노 우노에 쉴드를 장착해 줍니다

시리얼 모니터를 켜고 쉴드의 ESP RST 버튼을 눌러 줍니다

 

이때 물론 반드시 시리얼 모니터의 보드레이트는 115200 으로 되어있어야 하는 점 주의 합시다

시리얼 모니터의 통신이 무반응 일때는 UART 통신 모듈의 전원을 제거하고 쉴드의 스위치 모드 재검점 후 다시 전원을 인가해 줍니다
(종종 통신이 원활하지 않을때가 있는데 위와 같은 방법으로 계속 시도해 주면 성공합니다)
WIFI 와 연결 된 IP주소 192.168.0.X 을 확인 할 수 있습니다

PC의 웹 브라우저나 스마트폰의 웹 브라우저를 열고 주소창에 192.168.0.X 를 입력합니다
Turn on 버튼을 누르면 LED가 켜지고, Turn Off 버튼을 누르면 LED가 꺼집니다

프로젝트 동영상-웹으로 LED 제어해 보기


Blink 예제 테스트는 위와 동일하기 때문에 추가로 설명하지 않겠습니다
위 첨부된 배선도 동일하게 참고해서 배선 후 위 첨부된 Blink 예제파일 복사후 스케치 업로드 해 주면 됩니다

프로젝트 동영상-Blink 예제 테스트해 보기



주의! 만약 아래와 같은 메세지가 나오거나 에러가 나면서 업로드가 안된다면?
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

 

스케치 업로드시 위와 같은 에러메세지가 나온다면 몇가지 사항을 검토해 보아야 합니다

1. 아두이노 우노에 스케치 초기화가 되어 있는지 확인 (포스팅 상단 아두이노 우노 스케치 초기화 방법 참조)
2. 배선 TX, RX 가 이상 없는지 확인 (포스팅 상단 아두이노 장착시 배선 참조)
3. 스위치 설정은 FLASH 모드로 잘 세팅되어 있는지 확인


1~3번 확인 후 아두이노의 USB 전원 케이블을 제거했다가 다시 연결해 주면 ESP8266 모듈의 파란색 LED가 깜박이는 것을 확인할수 있습니다
(USB 케이블로 전원 인가시 WIFI 쉴드의 ESP8266 모듈의 파란색 LED가 깜박여야 ESP8266 모듈의 업로드 준비가 된 것입니다)

만약, USB케이블로 전원을 재 인가했는데도 ESP8266 모듈의 파란색 LED가 깜박이지 않는다면?
이 경우 WIFI Shiled를 아두이노 보드에서 얀간의 간격을 두고 일정간격이 생길만큼 헐겁게 장착해 줍니다!

1. 깜박일때까지 WIFI 쉴드의 RST 리셋 버튼을 눌러 줍니다

2. 다시 전원을 재 인가해서 ESP8266 모듈의 파란색 LED가 깜박이는지 확인해 봅니다

1~2 번 과정을 반복하고, 최종적으로는

USB 케이블로 전원 인가시 WIFI 쉴드의

ESP8266 모듈의 파란색 LED가 깜박여야 ESP8266 모듈의 업로드 준비가 된 것입니다
준비가 끝났으면 스케치 업로들 진행해 주고 정상적으로 업로드 되는지 확인해 봅니다

연관 포스팅
아두이노 ESP8266 GPIO 와이파이 쉴드를 사용해서 웹으로 LED 제어해보고 조도센서 출력값 변화 확인해 보기

 

 


아두이노 ESP8266 GPIO 와이파이 쉴드 (ESP8266 GPIO WIFI Shield) 아두이노 MEGA2560 으로 사용하는 방법

MEGA2560으로 사용하는 방법은 전반적으로 우노로 사용하는 방법과 동일합니다

우노로 사용할때와 동일하게 MEGA2560 도 똑같이 배선해 주면 됩니다

Arduino Mega2560                           ESP8266 GPIO WIFI Shield
           5V -----------------------------------  5V
          GND ---------------------------------  GND

          0(RX) --------------------------------  RXD

          1(TX) --------------------------------- TXD

우노에 장착할때와 동일하게 MEGA2560에 장착할때도 R타입 점퍼케이블을 사용해서 배선해 주고 장착하면 됩니다
(물론 사전에 MEGA2560에는 스케치 디폴트 업로드가 되어 있어야 합니다_빈 스케치가 업로드 되어 있어야 한다는 의미 입니다)

Arduino Mega2560                           ESP8266 GPIO WIFI Shield

          0(RX) --------------------------------  RXD

          1(TX) --------------------------------- TXD

스위치 모드를 플래시 모드로 세팅해 주고 마지막으로
전원을 연결해 주면 ESP8266 모듈의 파란색 LED가 깜박이면서 점등 되어야 플래시 준비가 된것 입니다

여기 까지는 우노로 사용하는 방법과 동일하지만

아두이노 IDE에서 컴파일 업로드 버튼을 누르고 스케치가 컴파일이 끝나고 업로드가 시작되는 타이밍에 맞춰서
MEGA2560의 리셋버튼을 누르고 업로드가 100%가 될때까지 끝까지 계속 눌러주고 있어야 합니다
업로드가 끝나면 리셋버튼에서 손을 때고 스위치 설정을 통신모드로 변경후 IDE시리얼 모니터를 켜고 WIFI 통신 테스트를 하면 됩니다

리셋버튼을 눌러주는 타이밍이 맞지 않거나 리셋버튼을 눌러주지 않는다면 역시
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
위와 같은 컴파일 에러 메세지를 보게 될 것 입니다


Note 아두이노에 장착해서 테스트 하는 경우 ESP8266 최신 커뮤니티를 설치하면
업로드 타이밍에 RST리셋 버튼을 눌러주는 타이밍을 아주 잘 맞추어 주지 않으면 업로드 에러가 나는 경우가 종종 있습니다

RST 버튼을 눌러주는 타이밍을 맞추기가 너무 힘들거나 번거로운 경우 아두이노 IDE의 보드 매니저에서
ESP8266 커뮤니티를 2.0.0 버전 (버전이 너무 낮다고 생각 된다면 2.3.0 버전 까지는 무난하게 테스트 가능)
을 설치해
주면 리셋버튼 눌러주는 타이밍을 잡는것이 훨씬 수월해 집니다


프로젝트 동영상-Arduino Mega2560 으로 ESP8266 WIFI Shield 사용해 보기


프로젝트 동영상-Arduino Mega2560에 ESP8266 WIFI Shield 장착해서 사용해 보기

 

 
Blink.txt
0.0MB
 
ESP8266_LED.txt
0.0MB
반응형

댓글