Material
- ESP32 DevKit
- Sensor DHT22 (AM2302)
- Resistor 10 kΩ
- Kabel jumper, breadboard
- Kabel USB, catu daya 5V
Langkah-langkah
- Instal Arduino IDE, tambahkan board ESP32 (Espressif) dan library "DHT sensor library" dari Adafruit.
- Sambungkan DHT22: pin 1 → 3V3, pin 2 (DATA) → GPIO4 dan resistor pull-up 10 kΩ ke 3V3, pin 4 → GND.
- Buka kode sumber, isi nama WiFi dan kata sandi pada TEN_WIFI, MAT_KHAU.
- Unggah kode, buka Serial Monitor (115200) untuk melihat alamat IP.
- Buka browser ponsel (di WiFi yang sama) ke alamat IP tersebut: halaman otomatis diperbarui setiap 10 detik.
Kode sumber
// 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
#include
#include
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 = ""
"Trạm đo "
""
"Trạm đo OctaX
";
if (isnan(nhietDo)) h += "Chưa đọc được cảm biến — kiểm tra dây DATA và điện trở kéo lên.
";
else h += "" + String(nhietDo, 1) + " °C
"
"" + String(doAm, 0) + " %
";
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; }
}
}


