Trạm đo nhiệt độ – độ ẩm WiFi (ESP32)
Miễn phíINO

Trạm đo nhiệt độ – độ ẩm WiFi (ESP32)

Tự làm trạm đo nhiệt độ, độ ẩm bằng ESP32 và DHT22, xem số đo trên điện thoại qua WiFi. Hướng dẫn từng bước, mã nguồn miễn phí.

Tệp tải về

Giấy phép CC BY 4.0 — dùng miễn phí, ghi nguồn “OctaX.vn”. Demo bản thật yêu cầu tài khoản miễn phí để tải.

Muốn sửa theo ý mình?

Trợ lý OctaX sửa kích thước, nội dung, thương hiệu theo yêu cầu — ước tính ≈ 4 credit.

✦ Tuỳ biến bằng AI

Vật tư

  • ESP32 DevKit
  • Cảm biến DHT22 (AM2302)
  • Điện trở 10 kΩ
  • Dây cắm, bảng mạch thử
  • Cáp USB, nguồn 5V

Các bước

  1. Cài Arduino IDE, thêm bo ESP32 (Espressif) và thư viện "DHT sensor library" của Adafruit.
  2. Nối DHT22: chân 1 → 3V3, chân 2 (DATA) → GPIO4 và điện trở kéo lên 10 kΩ về 3V3, chân 4 → GND.
  3. Mở mã nguồn, điền tên WiFi và mật khẩu vào TEN_WIFI, MAT_KHAU.
  4. Nạp mã, mở Serial Monitor (115200) để xem địa chỉ IP.
  5. Mở trình duyệt điện thoại (cùng WiFi) vào địa chỉ IP đó: trang tự làm mới mỗi 10 giây.

Mã nguồn

// Trạm đo nhiệt độ – độ ẩm WiFi — OctaX.vn (CC BY 4.0)
// Bo: ESP32. DHT22 DATA → GPIO4 (kéo lên 10 kΩ về 3V3). Cần thư viện "DHT sensor library" (Adafruit).
#include <WiFi.h>
#include <WebServer.h>
#include <DHT.h>

const char* TEN_WIFI = "ten-wifi";      // ← điền tên WiFi
const char* MAT_KHAU = "mat-khau-wifi"; // ← điền mật khẩu WiFi

DHT dht(4, DHT22);
WebServer may(80);
float nhietDo = NAN, doAm = NAN;
unsigned long lanDoTruoc = 0;

// Trang web gọn: tự làm mới mỗi 10 giây
void trangChu() {
  String h = "<!doctype html><meta charset=utf-8><meta name=viewport content='width=device-width'>"
             "<meta http-equiv=refresh content=10><title>Trạm đo</title>"
             "<body style='font-family:sans-serif;text-align:center;background:#0f172a;color:#e2e8f0'>"
             "<h2>Trạm đo OctaX</h2>";
  if (isnan(nhietDo)) h += "<p>Chưa đọc được cảm biến — kiểm tra dây DATA và điện trở kéo lên.</p>";
  else h += "<p style='font-size:48px;margin:10px'>" + String(nhietDo, 1) + " °C</p>"
            "<p style='font-size:32px;color:#60a5fa'>" + String(doAm, 0) + " %</p>";
  may.send(200, "text/html; charset=utf-8", h);
}

// Trả dữ liệu dạng JSON cho ứng dụng khác đọc (vd OctaX MiniApp)
void duLieu() {
  may.send(200, "application/json", "{\"nhietDo\":" + String(nhietDo, 1) + ",\"doAm\":" + String(doAm, 0) + "}");
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(TEN_WIFI, MAT_KHAU);
  while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
  Serial.print("\nMở trình duyệt vào: http://"); Serial.println(WiFi.localIP());
  may.on("/", trangChu);
  may.on("/du-lieu", duLieu);
  may.begin();
}

void loop() {
  may.handleClient();
  // DHT22 chỉ nên đọc tối đa 1 lần / 2 giây
  if (millis() - lanDoTruoc > 2500) {
    lanDoTruoc = millis();
    float t = dht.readTemperature(), a = dht.readHumidity();
    if (!isnan(t) && !isnan(a)) { nhietDo = t; doAm = a; }
  }
}

Mẫu cùng nhóm

Đèn ngủ tự bật khi có người (Arduino)
Miễn phíINO

Đèn ngủ tự bật khi có người (Arduino)

Tự làm đèn ngủ LED 5V tự bật khi có người đi qua trong bóng tối: Arduino Nano, cảm biến PIR, quang trở. Có mã nguồn miễn phí.

🛠️ DIY – Tự làm
Kệ sách gỗ treo tường 3 tầng
Miễn phíCSV

Kệ sách gỗ treo tường 3 tầng

Tự đóng kệ sách gỗ treo tường 3 tầng 800×600 mm: danh sách cắt ván, dụng cụ, từng bước lắp và treo chắc chắn. Tải CSV miễn phí.

🛠️ DIY – Tự làm