안녕하세요 땜블리 입니다.
아두이노를 이용한 DHT11센서 온습도 실습을 진행 하겠습니다.
DHT11 모듈은 보정된 디지털 신호 출력이 있는 온도 및 습도 센서입니다
온도 측정을 위한 NTC와 습도 측정을 위한 저항식 습도 측정 부품이 포함되어 있습니다.
다음은 DHT11 회로도입니다.
DHT11 1선 통신 프로토콜
단일 버스 데이터 형식은 MCU와 DHT11 센서 간의 통신 및 동기화에 사용됩니다.
하나의 통신 프로세스는 약 4ms입니다.
데이터는 소수 부분과 정수 부분으로 구성됩니다.
완전한 데이터 전송은 40비트이며 센서는 상위 데이터 비트를 먼저 전송합니다. 데이터 형식은 다음과 같습니다:
8비트 적분 RH 데이터 + 8비트 십진수 RH 데이터 + 8비트 적분 T 데이터 + 8비트 십진수 T 데이터 + 8비트 체크섬. 데이터 전송이 맞다면 체크섬은 "8bit 적분 RH 데이터 + 8bit 십진수 RH 데이터 + 8bit 적분 T 데이터 + 8bit 십진수 T 데이터"의 마지막 8bit 여야 합니다.
MCU가 시작 신호를 보내면 DHT11은 저전력 소모 모드에서 실행 모드로 변경되어 MCU가 시작 신호를 완료하기를 기다립니다.
완료되면 DHT11은 상대 습도 및 온도 정보가 포함된 40비트 데이터의 응답 신호를 MCU로 보냅니다. 사용자는 일부 데이터를 수집(읽기)하도록 선택할 수 있습니다.
MCU로부터 시작 신호가 없으면 DHT11은 MCU에 응답 신호를 주지 않습니다.
데이터가 수집되면 DHT11은 MCU에서 다시 시작 신호를 받을 때까지 저전력 모드로 변경됩니다.
DHT11 1선 통신 프로토콜
위의 이미지는 통신 타이밍 다이어그램을 보여줍니다.
아두이노와 DHT11 연결 방법
연결은 매우 간단하며 세 개의 전선만 필요합니다. 모듈의 VCC와 GND를 아두이노의 5V와 GND 핀에 연결합니다. 그런 다음 DATA 핀을 Arduino의 디지털 핀 2에 연결합니다. 이 핀을 통해 DHT11과 통신합니다.
DHT11 센서를 동작하기 위한 코드를 살펴보겠습니다. 이를 위해 먼저 라이브러리 관리자를 통해 Adafruit의 DHT 센서 라이브러리 와 Adafruit 통합 센서 드라이버를 설치합니다.
그런 다음 빈 스케치를 만들고 이 문서 끝에 있는 코드를 여기에 붙여 넣습니다.
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTTYPE DHT11 // DHT 11
#define DHTPIN 2
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(9600);
dht.begin();
sensor_t sensor;
delayMS = sensor.min_delay / 1000;
}
void loop()
{
sensors_event_t event;
dht.temperature().getEvent(&event);
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
dht.humidity().getEvent(&event);
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
delay(delayMS);
}
'프로젝트' 카테고리의 다른 글
라즈베리파이 피코와 베이스 보드를 이용한 타이머 구동 (0) | 2023.04.20 |
---|---|
라즈베리파이 피코와 베이스보드를 이용한 카운터기 (0) | 2023.04.19 |
IoT 모니터링 adafruit IO 클라우드 서비스 이용 (0) | 2023.04.18 |
IoT 조명 프로젝트 (0) | 2023.03.23 |
IoT 콘센트 & 스위치 (0) | 2023.03.22 |
댓글