TechPartner

← Quay lại Blog
Khóa lập trình Arduino ESP32 cơ bản — IoT từ Blink đến SmartNode · Phần 4 / 8

Lập trình ESP32 (4/8): ADC — cảm biến analog & DHT22

Đọc ADC 12-bit, chia áp, biến trở; thư viện DHT — nhiệt độ/độ ẩm cho SmartNode.

· 1 min read

Khóa lập trình Arduino ESP32 cơ bản — IoT từ Blink đến SmartNode · Phần 4/8
  1. 1Cài đặt & Blink
  2. 2GPIO digital
  3. 3PWM & servo
  4. 4ADC & cảm biến
  5. 5WiFi Station
  6. 6HTTP client
  7. 7Web server
  8. 8Capstone SmartNode
Mục lục
  1. Đọc biến trở (ADC1)
  2. DHT22

Phần 4/8 (~35 phút) · Phần 3 · Phần 5 — WiFi

Đọc biến trở (ADC1)

const int POT_PIN = 34; // input only

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);
}

void loop() {
  int raw = analogRead(POT_PIN);
  float volts = raw * (3.3 / 4095.0);
  Serial.printf("raw=%d  V=%.2f\n", raw, volts);
  delay(200);
}

Lưu ý: Khi WiFi bật, tránh ADC2 (GPIO 0,2,4,12–15,25–27). Dùng ADC1: 32–39.

DHT22

Thư viện DHT sensor library + Adafruit Unified Sensor.

#include <DHT.h>
#define DHT_PIN 32
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(t)) Serial.println("DHT fail");
  else Serial.printf("T=%.1f C  H=%.0f%%\n", t, h);
  delay(2000);
}

SmartNode gửi t, h lên server ở phần 6.

Điều hướng seri: ← Phần 3 · Phần 5 →

Câu hỏi thường gặp

ADC ESP32 tối đa bao nhiêu volt?

Khoảng 0–3.3 V trên hầu hết chân ADC. Đo 5 V sensor cần chia áp (ví dụ 2:1) hoặc cảm biến 3.3 V.

Startup của bạn cần tech partner?

Trao đổi miễn phí về MVP, timeline và mô hình chia lợi nhuận phù hợp.