ပစ္စည်းများ
- ESP32 DevKit
- DHT22 sensor (AM2302)
- Resistor 10 kΩ
- Jumper wire၊ breadboard
- USB ကေဘယ်၊ 5V ပါဝါ
အဆင့်များ
- Arduino IDE ကို install လုပ်ပြီး ESP32 board (Espressif) နှင့် Adafruit ၏ "DHT sensor library" library ကို ထည့်ပါ။
- DHT22 ကို ဆက်ပါ- pin 1 → 3V3၊ pin 2 (DATA) → GPIO4 နှင့် 3V3 သို့ 10 kΩ pull-up resistor၊ pin 4 → GND။
- Source code ကို ဖွင့်ပြီး WiFi အမည်နှင့် စကားဝှက်ကို TEN_WIFI၊ MAT_KHAU တွင် ဖြည့်ပါ။
- Code ကို upload လုပ်ပြီး IP လိပ်စာ ကြည့်ရန် Serial Monitor (115200) ကို ဖွင့်ပါ။
- ဖုန်း browser (WiFi တူ) ကို ဖွင့်ပြီး ထို IP လိပ်စာသို့ သွားပါ- စာမျက်နှာသည် 10 စက္ကန့်တိုင်း အလိုအလျောက် refresh ဖြစ်ပါသည်။
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; }
}
}


