សម្ភារៈ
- ESP32 DevKit
- ឧបករណ៍ចាប់សញ្ញា DHT22 (AM2302)
- រេស៊ីស្តង់ 10 kΩ
- ខ្សែភ្ជាប់ បន្ទះសៀគ្វីសាកល្បង
- ខ្សែ USB ប្រភពថាមពល 5V
ជំហាន
- ដំឡើង Arduino IDE បន្ថែមបន្ទះ ESP32 (Espressif) និងបណ្ណាល័យ "DHT sensor library" របស់ Adafruit។
- ភ្ជាប់ DHT22៖ ជើង 1 → 3V3, ជើង 2 (DATA) → GPIO4 និងរេស៊ីស្តង់ទាញឡើង 10 kΩ ទៅ 3V3, ជើង 4 → GND។
- បើកកូដប្រភព បំពេញឈ្មោះ Wi-Fi និងពាក្យសម្ងាត់ក្នុង TEN_WIFI, MAT_KHAU។
- បញ្ចូលកូដ បើក Serial Monitor (115200) ដើម្បីមើលអាសយដ្ឋាន IP។
- បើកកម្មវិធីរុករកលើទូរស័ព្ទ (Wi-Fi តែមួយ) ចូលទៅអាសយដ្ឋាន IP នោះ៖ ទំព័រផ្ទុកឡើងវិញដោយស្វ័យប្រវត្តិរៀងរាល់ 10 វិនាទី។
កូដប្រភព
// 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; }
}
}


