Mga materyales
- ESP32 DevKit
- DHT22 sensor (AM2302)
- 10 kΩ na resistor
- Jumper wire, breadboard
- USB cable, 5V power supply
Mga hakbang
- I-install ang Arduino IDE, idagdag ang ESP32 board (Espressif) at ang "DHT sensor library" ng Adafruit.
- Ikonekta ang DHT22: pin 1 → 3V3, pin 2 (DATA) → GPIO4 at 10 kΩ na pull-up resistor papuntang 3V3, pin 4 → GND.
- Buksan ang source code, ilagay ang pangalan ng WiFi at password sa TEN_WIFI, MAT_KHAU.
- I-upload ang code, buksan ang Serial Monitor (115200) para makita ang IP address.
- Buksan ang browser ng telepono (sa parehong WiFi) at pumunta sa IP address na iyon: kusang nagre-refresh ang pahina kada 10 segundo.
Source code
// 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; }
}
}


