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의 경우는 일반적으로 아두이노 NodeMCU와 ESP12-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);
}//프로그램 끝