Khi nguồn điện được cấp (áp 3.3 – 5.5 VDC), trong giây đầu tiên không gửi bất kỳ tín hiệu nào đến sensor để bỏ qua trạng thái khởi động. Nên chèn 1 cảm tụ 100nF giữa VCC và GND để lọc hài.
Tín hiệu truyền thông và giao tiếp:
Dữ liệu truyền thông giữa vi xử lý (MCU) và DHT22 là dữ liệu trên một bus, cấu trúc dữ liệu DHT22 gửi về cho MCU có độ dài 40 bit có cấu trúc như sau:
DATA = 16 bit RH + 16 bit nhiệt độ + 8 bit check-sum
Ví dụ:
- Data = 0000 00101000 1100 0000 0001 0101 1111 1110 1110
- Khi đó ta chuyển bin sang dec với hệ số 0.1 là được giá trị thực: RH = 0000 0010 1000 1100 = 652/10 = 65.2%
Nhiệt độ = 0000 0001 0101 1111 = 351/10 = 35.1 oC
Check-sum = 0000 0010 + 1000 1100 + 0000 0001 + 0101 1111 = 1110 1110
Khi MCU gửi tín hiệu khởi động, DHT22 chuyển trạng thái nghỉ sang làm việc. Khi MCU ngưng gửi tín hiệu khởi động, DHT22 sẽ gửi dữ liệu về độ ẩm và nhiệt độ 40-bit về cho MCU. Nếu MCU không gửi tín hiệu khởi động, DHT22 sẽ chuyển về trạng thái nghỉ. Sau đây là minh họa chi tiết giao thức truyền thông giữa MCU và DHT22 (Hình 3.26, 3.27):
- Bước 1: MCU gửi tín hiệu khởi động cho DHT22 và DHT22 gửi tín hiệu
phản hồi cho MCU.
Ở trạng thái tự do, bus dữ liệu được thả ở mức cao, MCU sẽ kéo mức tín hiệu xuống thấp khoảng dưới 20 ms để đảm bảo DHT22 nhận được tín hiệu sau đó MCU đẩy mức tín hiệu lên cao và đợi 20-40μs để chờ DHT22 phản hồi.
Khi DHT22 nhận được tín hiệu khởi động, DHT22 sẽ kéo mức tín hiệu xuống 80μs để phản hồi, sau đó kéo lên mức cao 80μs nữa để chuẩn bị gửi dữ liệu.