สร้างอุปกรณ์แสดงผลเวลาปัจจุบัน + ข้อมูลอุณหภูมิ/ความชื้น โดยใช้ ESP32 เชื่อมกับเซ็นเซอร์ DHT11/22 และจอ LCD ผ่าน I2C

ESP32 นาฬิกาแสดงเวลาและข้อมูลสภาพอากาศ

โครงงาน: ESP32 นาฬิกาแสดงเวลาและข้อมูลสภาพอากาศ

เป้าหมายของโครงงาน

สร้างอุปกรณ์ที่สามารถแสดงเวลาและข้อมูลสภาพอากาศ เช่น อุณหภูมิและความชื้น โดยใช้อุปกรณ์ ESP32 เชื่อมต่อกับเซ็นเซอร์และจอแสดงผล LCD


หากคุณยังไม่เคยใช้ไมโครคอนโทรลเลอร์ตัวนี้ แนะนำให้อ่าน ESP32 คืออะไร? จุดเด่นและการใช้งานเบื้องต้น ก่อนเริ่มลงมือ

อุปกรณ์ที่ต้องใช้

  1. ESP32 (ไมโครคอนโทรลเลอร์รองรับ Wi-Fi)
  2. LCD Display (16×2 หรือ 20×4 พร้อม I2C Module)
  3. DHT11 หรือ DHT22 (เซ็นเซอร์วัดอุณหภูมิและความชื้น)
  4. สายไฟและสาย Jumper
  5. Breadboard
  6. แหล่งจ่ายไฟ 5V

ขั้นตอนการทำโครงงาน

  1. การเชื่อมต่อฮาร์ดแวร์

    • เชื่อมต่อ DHT11/DHT22 กับ ESP32 (ใช้ขา Data, VCC, GND)
    • เชื่อมต่อ LCD Display กับ ESP32 โดยใช้ I2C Module (ขา SDA, SCL, VCC, GND)
  2. การติดตั้งซอฟต์แวร์

  3. การเขียนโปรแกรม

    • ตั้งค่าการเชื่อมต่อ Wi-Fi
      ใช้ ESP32 เพื่อดึงข้อมูลเวลาปัจจุบันจาก NTP Server

    • การอ่านข้อมูลเซ็นเซอร์
      อ่านค่าอุณหภูมิและความชื้นจาก DHT11/DHT22

    • การแสดงผล
      เขียนโค้ดเพื่อแสดงผลเวลาปัจจุบันและข้อมูลอุณหภูมิ/ความชื้นบน LCD Display


 

#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <WiFi.h> #include "time.h" #include "DHT.h"#define DHTPIN 4 // ขาเชื่อมต่อ DHT11 #define DHTTYPE DHT11 // ใช้เซ็นเซอร์ DHT11LiquidCrystal_I2C lcd(0x27, 16, 2); // ตั้งค่า LCD I2C DHT dht(DHTPIN, DHTTYPE);const char* ssid = "ชื่อ Wi-Fi"; const char* password = "รหัสผ่าน Wi-Fi"; const char* ntpServer = "pool.ntp.org"; long gmtOffset_sec = 7 * 3600; // ตั้ง Time Zone (ประเทศไทย)void setup() { Serial.begin(115200); lcd.init(); lcd.backlight(); dht.begin();WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi");configTime(gmtOffset_sec, 0, ntpServer); }void loop() { struct tm timeinfo; if (!getLocalTime(&timeinfo)) { Serial.println("Failed to obtain time"); return; }float temp = dht.readTemperature(); float hum = dht.readHumidity();lcd.setCursor(0, 0); lcd.printf("%02d:%02d:%02d", timeinfo.tm_hour,          timeinfo.tm_min, timeinfo.tm_sec);lcd.setCursor(0, 1); lcd.print("T:"); lcd.print(temp); lcd.print("C H:"); lcd.print(hum); lcd.print("%");delay(1000); }
เริ่มต้นกับ Arduino esp32 ง่าย ๆ เพียงอ่าน Arduino IDE Guide — อธิบายตั้งแต่การติดตั้งจนถึงการอัปโหลดโค้ดให้บอร์ด

ผลลัพธ์ ESP32 นาฬิกาแสดงเวลาและข้อมูลสภาพอากาศ

  1. LCD Display จะแสดงเวลาแบบเรียลไทม์
  2. ข้อมูลอุณหภูมิและความชื้นจากเซ็นเซอร์จะแสดงผลบนจอ

คำแนะนำเพิ่มเติม

  • สามารถปรับแต่งโครงการโดยเพิ่มการอัพเดทข้อมูลผ่าน WebSocket
  • ใช้จอสี TFT Touchscreen เพื่อให้โครงงานดูทันสมัยและใช้งานง่ายขึ้น

หากสนใจสามารถพัฒนาต่อยอดหรือสอบถามรายละเอียดเพิ่มเติมได้! 😊


Shopping Cart
Scroll to Top