ESP 32 <--------------> DHT11
GPIO 26 <--------------> out/signal
VIN (5v) <--------------> +
GND <--------------> -
เปิด Arduino IDE
ไปที่ Tools -- > Manage Libraries เพื่อเข้าสู่ Library Manager
พิมพ์ค้นหาว่า "dht sensor library"
4. คลิก install ที่ library นี้
นำเข้า library ต่างๆ ดังนี้
2. โค้ด และใส่รายละเอียดการเชื่อมต่อไวไฟของเรา นั่นคือ ชื่อไวไฟ และ พาสเวิร์ด
3. กำหนดหมายเลข GPIO ที่เชื่อมต่อเซ็นเซอร์กับบอร์ด และระบุชนิดของเซนเซอร์
4. โค้ดที่เหลือ
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <DHT.h>
const char *ssid = "My-Network";
const char *password = "chaker123456";
WebServer server(80);
DHT dht(26, DHT11);
void handleRoot() {
char msg[1500];
snprintf(msg, 1500,
"<html>\
<head>\
<meta http-equiv='refresh' content='4'/>\
<meta name='viewport' content='width=device-width, initial-scale=1'>\
<link rel='stylesheet' href='https://use.fontawesome.com/releases/v5.7.2/css/all.css' integrity='sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr' crossorigin='anonymous'>\
<title>ESP32 DHT Server</title>\
<style>\
html { font-family: Arial; display: inline-block; margin: 0px auto; text-align: center;}\
h2 { font-size: 3.0rem; }\
p { font-size: 3.0rem; }\
.units { font-size: 1.2rem; }\
.dht-labels{ font-size: 1.5rem; vertical-align:middle; padding-bottom: 15px;}\
</style>\
</head>\
<body>\
<h2>ESP32 DHT Server!</h2>\
<p>\
<i class='fas fa-thermometer-half' style='color:#ca3517;'></i>\
<span class='dht-labels'>Temperature</span>\
<span>%.2f</span>\
<sup class='units'>°C</sup>\
</p>\
<p>\
<i class='fas fa-tint' style='color:#00add6;'></i>\
<span class='dht-labels'>Humidity</span>\
<span>%.2f</span>\
<sup class='units'>%</sup>\
</p>\
</body>\
</html>",
readDHTTemperature(), readDHTHumidity()
);
server.send(200, "text/html", msg);
}
void setup(void) {
Serial.begin(115200);
dht.begin();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp32")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
delay(2);//allow the cpu to switch to other tasks
}
float readDHTTemperature() {
// Sensor readings may also be up to 2 seconds
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return -1;
}
else {
Serial.println(t);
return t;
}
}
float readDHTHumidity() {
// Sensor readings may also be up to 2 seconds
float h = dht.readHumidity();
if (isnan(h)) {
Serial.println("Failed to read from DHT sensor!");
return -1;
}
else {
Serial.println(h);
return h;
}
}
5. เสียบสายเชื่อมต่อบอร์ด กับคอมพิวเตอร์
6. ที่ IDE เปิดเมนู Tool และเลือกชื่อบอร์ด และ พอร์ทที่บอร์ดเชื่อมต่ออยู่
7. กด upload โค้ด ไปยังบอร์ด
8. เมื่อ upload สำเร็จ ให้เปิด Serial Monitor ขึ้นมา ตรวจสอบหมายเลข baud rate ว่าเป็น 115200
9. และหากไม่มีข้อความใดๆ ให้กดปุ่ม reset ที่บอร์ด ให้เขาทำงานอีกครั้ง
10. ดูที่ Serial monitor เพื่อหา IP Address ของบอร์ด ESP32
10. คัดลอก IP Address ดังกล่าว ไปเปิด web browser และ นำ IP Address ไปวาง และกด enter
11. จะปรากฎหน้าเว็บ พร้อมค่าอุณหภูมิ และ ความชื้น ที่ส่งมาจากบอร์ด ESP32
12. โดยหน้าเว็บนี้ จะ refresh ข้อมูล ทุก 4 วินาที
13. เราสามารถดูหน้าเว็บนี้ ได้ทางโทรศัพท์มือถือ หรือ แท็บเล็ตก็ได้เช่นกัน โดยนำ IP Address ไปวางใน web browser บนอุปกรณ์เคลื่อนที่นั้น
14. ในบางกรณี IP Address ของเราอาจมีการเปลี่ยนแปลง แต่เราได้ใช้ library ชื่อว่า ESPmDNS ซึ่งจะอนุญาตให้เราเข้าถึงหน้าเว็บเดียวกันกับ การใส่ IP Address โดยสามารถพิมพ์คำว่า esp32.local (เราสามารถไปเปลี่ยน คำว่า esp32 เป็นข้อความที่เรากำหนดเองได้ด้วย เพียงไปแก้ที่โค้ดก่อน upload)