아두이노프로세싱 프로그래밍

아두이노NodeMCU에서 DHT11 센서 를 적용한 온습도 모니터링 II

coding art 2017. 2. 6. 18:26
728x90


NodeMCU가 와이파이 모듈이지만 일단 초보적인 시리얼 모니터링 단계를 확인할 필요가 있음을 지적하자.

그림은 가변저항이 부착된 NodeMCU 시스템에 11온습도 측정 센서가 추가된 상황이다. DTH11이나 가변저항 모두 3.3V 3V3 핀에서 전원 공급을 받아 작동할 수 있으며 NodeMCU에는 4개의3V3 핀들이 있음에 유의하자.

특히 가변저항은 아날로그 입력 단 A0 핀을 사용하므로 데이터 핀을 사용하는 DHT11센서와 중복이 없어 앞으로의 사용을 위해서 그대로 두기로 한다.

 

NodeMCU 프로그래밍은 몇 가지 주의할 점만 빼고 아두이노 우노와 거의 유사하다.

 

아래에서처럼 아두이노 편집기에서 보드 종류 지정, 프로그램에서 핀 번호 지정과 통신 속도 지정, 시리얼 창에서 통신 속도 지정에 차이가 있을 수 있다.

 

아두이노 우노 아두이노 NodeMCU

보드 지정:        Arduino Uno/Genuino     NodeMCU1.0(ESP12-E Module)

핀 번호 지정:    int pin=5;                       int pin=D5;

통신속도 지정:  Serial.begin(9600);          Serial.begin(115200);

시리얼 모니터:  9600 보(드)레이트                  115200 보(드)레이트

 

DHT11 센서는 규격에 의하면 디지털 핀에서 digitalReading 즉 샘플링 속도가 1Hz 1초란 점 외에는 자체 센서가 아닌 외부의 모듈과의 통신 속도와 아무런 제약이 없다. NodeMCU의 경우는 일반적으로 아두이노 NodeMCUESP12-E 또는 PC의 시리얼 모니터 창 간의 통신속도 즉 115200을 사용하므로 DHT11 온습도 측정 프로그램에서도 9600보다는 115200을 사용을 권장한다. 시리얼 모니터링의 경우에는 9600이든 115200이든 둘 다 문제는 없다. 하지만 앞으로 WiFi 통신에 의한 프로그램 수정 시 통신 속도 9600 지정에 의해 별도의 에러 사인 없이 먹통이 되는 것을 사전에 방지하기 위한 주의 차원이다.

측정 결과는 아두이노 우노와 거의 같아야 하며 각자 이를 확인하기 바란다.


NodeMCU_DHT11_01

 

#include <DHT11.h> //라이브러리 불러오기

int pin=D4; //Signal 이 연결된 NodeMCU의 핀번호

// GPIO 2번 이므로 int pin = 2;로 코딩 가능

 

DHT11 dht11(pin);

void setup()

{

Serial.begin(115200); //통신속도 설정

}

void loop()

{

int err;

float temp, humi;

if((err=dht11.read(humi, temp))==0)

{

Serial.print("temperature:");

Serial.print(temp);

Serial.print(" humidity:");

Serial.print(humi);

Serial.println();

}

else

{

Serial.println();

Serial.print("Error No :");

Serial.print(err);

Serial.println();

}

delay(5000);

}//프로그램 끝