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

아두이노 ESP8266 GPIO 와이파이 쉴드를 사용해서 DHT11 온습도 센서로 웹으로 실내 온습도 확인해 보기

by 오마이엔지니어 2019. 9. 26.
반응형

 

아두이노 ESP8266 GPIO 와이파이 쉴드를 사용해서 DHT11 온습도 센서를 연결해서
웹으로 실내 온습도를 확인해 보는 프로젝트 입니다

 

프로젝트를 진행하기 전에 먼저 꼭알아 두어야 할 사항은 ESP8266 WIFI Shield 는 아두이노에 장착한다고 해서
디지털 핀과 아날로그 핀을 아두이노와 동일한 핀으로 사용할 수 없다는 것 입니다
대신에 위 이미지 처럼 ESP8266 GPIO 핀을 사용해서 디지털 테스트, ADC1, ADC2 핀을 사용해서 아날로그 테스트를 할 수 있습니다 

먼저 아두이노 ESP8266 GPIO 와이파이 쉴드 (ESP8266 GPIO WIFI Shield)의 사용법을 알아보겠습니다

 

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

 


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


 


테스트방법
기본적으로 통신을 위해서 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 예제 테스트해 보기


이어서 DHT11 온습도 센서를 사용해서 웹서버로 실내 온습도를 확인해 보기 보는 프로젝트를 진행해 보겠습니다

편의상 아두이노 우노에 장착해서 테스트 하였습니다 (아두이노에 장착해서 통신하는 방법은 포스팅 상단 부분을 확인합시다)

 

 

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

점퍼케이블
DHT11 온습도 센서
미니 브래드보드

구성 배선도

사용된 예제파일

ESP8266_DHT11.txt

 

사용된 라이브러리

DHT.zip


라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요

예제코드를 살펴보면
#include <ESP8266WiFi.h>
#include "DHT.h"
위 2가지 라이브러리를 사용합니다


const char* ssid = "YOUR_NETWORK_NAME";
const char* password = "YOUR_NETWORK_PASSWORD";
이 부분 자신의 WIFI 이름과 비밀번호로 수정해 줍니다


WiFiServer server(80);
WIFI 웹서버 포트 80 입니다

const int DHTPin = 5;
DHT11 온습도 센서의 핀은 5번 세팅 이므로 ESP8266 의 GPIO5 번에 연결합니다


ESP-12E 핀맵을 확인해 보면 GPIO5 핀이 오른쪽 위에서 3번째 인것을 알 수 있습니다 (위 첨부된 배선도 참조해서 배선 합시다)

void setup() {
  Serial.begin(115200);
  delay(10);
통신속도는 115200 입니다

server.begin();
  Serial.println("Web server running. Waiting for the ESP IP...");
  delay(10000);
시리얼 모니터로 연결 된 IP를 출력하며, 보정타임이 너무 길다고 생각 된다면 10000 이 숫자를 조정합시다 


스케치 수정이 끝났으면 점퍼를 플래시모드로 설정 후 스케치를 컴파일 및 업로드해 줍니다
스케치 업로드가 정상적으로 끝나면 점퍼를 다시 통신 모드로 변경 후 시리얼 모니터를 켜고 쉴드의 ESP RST 버튼을 눌러 줍니다


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

 


시리얼 모니터의 통신이 무반응 일때는 UART 통신 모듈의 전원을 제거하고 쉴드의 스위치 모드 재검점 후 다시 전원을 인가해 줍니다

(종종 통신이 원활하지 않을때가 있는데 위와 같은 방법으로 계속 시도해 주면 성공합니다)
WIFI 와 연결 된 IP주소 192.168.0.X 을 확인 할 수 있습니다

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

웹으로 실내 온습도가 출력 됩니다, 여름에 선풍기만 약간 틀고 있었더니 29도 가까이 나왔습니다 ㅜㅜ
가지고 있는 온습도계와 비교해 보면 됩니다, 물론 WIFI 만 연결되어 있다면 스마트폰 웹 브라우저로도 확인 가능합니다



프로젝트 동영상-웹으로 실내 온습도 확인해 보기

 

주의! 만약 아래와 같은 메세지가 나오거나 에러가 나면서 업로드가 안된다면?
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 커뮤니티를 최신 버전을 설치하면

아두이노 IDE에서 스케치 컴파일이 끝나고 업로드로 변경되는 타이밍에 맞춰서 아두이노의 리셋버튼을 누르고

업로드가 100% 완료될 때까지 계속 눌러주고 있어야 하는 번거로움이 있습니다 ㅜㅜ
이런 번거로움이 없이 사용하려면 아두이노 IDE 보드 매니저에서 ESP8266 커뮤니티를 2.0.0 버전으로 설치하면 됩니다
(UART 모듈을 사용하는 경우는 커뮤니티 버전에 관계없이 무난하게 업로드 가능합니다)
버전이 너무 낮다고 생각된다면 2.3.0 버전까지는 설치해도 무난하게 테스트 가능합니다

 

 


프로젝트 동영상-아두이노에 장착해서 테스트 방법 IDE 2.3.0 버전 사용

 
DHT.zip
0.01MB
 
ESP8266_DHT11.txt
0.0MB
반응형

댓글