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▼
Mục lục▼
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.
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.
Bài đọc tiếp theo
Lập trình ESP32 (1/8): Giới thiệu board, cài Arduino IDE & Blink LED
Khóa Arduino ESP32 miễn phí — phần 1: chọn board ESP32-WROOM, cài core esp32 trên Arduino IDE 2.x, nạp Blink, hiểu Serial Monitor. Lộ trình: /blog/hoc-lap-trinh-arduino-esp32-tu-dau
Đọc tiếp →Lập trình ESP32 (2/8): GPIO digital, nút bấm & chống dội (debounce)
GPIO ESP32: digitalRead/Write, nút bấm pull-up nội, toggle LED, debounce phần mềm — nền tảng đọc cảm biến digital.
Đọc tiếp →Lập trình ESP32 (3/8): PWM — LED fade & điều khiển servo SG90
LEDC PWM trên ESP32, fade LED mượt, thư viện ESP32Servo — điều khiển góc servo 0–180°.
Đọc tiếp →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.