DHT11 온습도 센서와 블링크(Blynk)로 원격 모니터링하기 - 아두이노 단계별 튜토리얼
부품 및 소모품
| 부품 | 수량 |
| DHT11 온도/습도 센서 (4핀) | 1 |
| 점퍼 와이어 (범용) | 1 |
| Arduino UNO | 1 |
| 안드로이드 기기 | 1 |
앱 및 온라인 서비스
- Arduino IDE
- Blynk (iOS/Android 앱)
프로젝트 개요
이 프로젝트에서는 DHT11 센서로 온도와 습도를 읽고 블링크(Blynk) 앱으로 원격 모니터링하는 방법을 배웁니다. 리눅스에서 아두이노-컴퓨터 연결 방법을 모른다면 이 프로젝트(LED 추가 제외)를 참고하세요.
주의: 블링크에 LED 버튼 추가하거나 해당 프로젝트 코드 업로드하지 마세요! 아래 코드 섹션의 코드를 업로드해야 합니다. DHT11-아두이노 연결 방법은 회로도 섹션 참조.
블링크(Blynk) 설정
아래대로 따라 하면 '온라인' 상태가 뜹니다. 이제 게이지 위젯 2개를 추가하고 다음과 같이 설정하세요.
원하면 히스토리 그래프도 추가:
최종 화면:
모든 단계가 잘 됐다면 이렇게 보입니다:
이제 실행해 보세요!
결과
게이지에 온도와 습도가 표시되고, 히스토리 그래프에 변화 추이가 저장됩니다. 단순하지만 유용한 프로젝트입니다. 마음에 들면 프로젝트 추천과 팔로우 부탁드려요!
P.S. 재미있게 하세요! (가장 중요한 규칙!)
코드
DHT11용 코드 (C/C++)
/**************************************************************
Blynk는 아두이노, 라즈베리파이 등을 인터넷으로 제어하는 iOS/Android 플랫폼입니다.
위젯 드래그앤드롭으로 그래픽 인터페이스 쉽게 구성.
다운로드, 문서, 튜토리얼: https://www.blynk.cc
Blynk 커뮤니티: https://community.blynk.cc
SNS: https://www.fb.com/blynkapp, https://twitter.com/blynk_app
Blynk 라이브러리는 MIT 라이선스. 이 예제 코드는 퍼블릭 도메인.
**************************************************************
일반 아두이노 시리얼로 블링크 연결 예제. 다른 예제에도 적용 가능. 간단함!
**************************************************************
USB 연결 방법: https://tiny.cc/BlynkUSB
**************************************************************/
// 하드웨어 시리얼 여분 있는 보드(메가 등)에선 그걸 써도 됨
#include
SoftwareSerial DebugSerial(2, 3); // RX, TX
#define BLYNK_PRINT DebugSerial
#include
#include
#include
#define DHTPIN 5 // 연결된 디지털 핀
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21 // DHT 21, AM2301
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
// 블링크 앱 프로젝트 설정(너트 아이콘)에서 Auth Token 받기
char auth[] = "YourAuthToken";
// 1초마다 가상 핀(V5, V6)으로 데이터 전송
// 앱에서 위젯 읽기 주기를 PUSH로 설정해야 함 (전송 주기 코드에서 제어)
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature(); // 화씨는 dht.readTemperature(true)
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 초당 10회 이상 전송 금지
Blynk.virtualWrite(V5, h); // 습도 → V5
Blynk.virtualWrite(V6, t); // 온도 → V6
}
void setup() {
// 디버그 콘솔
DebugSerial.begin(9600);
// 블링크는 하드웨어 시리얼 통해 작동
// 스케치에서 이 시리얼 직접 읽기/쓰기 금지
Serial.begin(9600);
Blynk.begin(Serial, auth);
// 1초마다 sendSensor 호출
timer.setInterval(1000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run(); // SimpleTimer 실행
}
회로도
DHT11 파츠를 못 찾아 TMP36을 DHT11로 이름 바꿔 대체함.
Fritzing 파일: dht11_JqQomro2Tj.fzz