โครงงาน: ESP32 นาฬิกาแสดงเวลาและข้อมูลสภาพอากาศ
เป้าหมายของโครงงาน
สร้างอุปกรณ์ที่สามารถแสดงเวลาและข้อมูลสภาพอากาศ เช่น อุณหภูมิและความชื้น โดยใช้อุปกรณ์ ESP32 เชื่อมต่อกับเซ็นเซอร์และจอแสดงผล LCD
หากคุณยังไม่เคยใช้ไมโครคอนโทรลเลอร์ตัวนี้ แนะนำให้อ่าน ESP32 คืออะไร? จุดเด่นและการใช้งานเบื้องต้น ก่อนเริ่มลงมือ
อุปกรณ์ที่ต้องใช้
- ESP32 (ไมโครคอนโทรลเลอร์รองรับ Wi-Fi)
- LCD Display (16×2 หรือ 20×4 พร้อม I2C Module)
- DHT11 หรือ DHT22 (เซ็นเซอร์วัดอุณหภูมิและความชื้น)
- สายไฟและสาย Jumper
- Breadboard
- แหล่งจ่ายไฟ 5V
ขั้นตอนการทำโครงงาน
การเชื่อมต่อฮาร์ดแวร์
- เชื่อมต่อ DHT11/DHT22 กับ ESP32 (ใช้ขา Data, VCC, GND)
- เชื่อมต่อ LCD Display กับ ESP32 โดยใช้ I2C Module (ขา SDA, SCL, VCC, GND)
การติดตั้งซอฟต์แวร์
- ดาวน์โหลดและติดตั้ง Arduino IDE
- ติดตั้งไลบรารีที่เกี่ยวข้อง:
การเขียนโปรแกรม
ตั้งค่าการเชื่อมต่อ 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 นาฬิกาแสดงเวลาและข้อมูลสภาพอากาศ
- LCD Display จะแสดงเวลาแบบเรียลไทม์
- ข้อมูลอุณหภูมิและความชื้นจากเซ็นเซอร์จะแสดงผลบนจอ
คำแนะนำเพิ่มเติม
- สามารถปรับแต่งโครงการโดยเพิ่มการอัพเดทข้อมูลผ่าน WebSocket
- ใช้จอสี TFT Touchscreen เพื่อให้โครงงานดูทันสมัยและใช้งานง่ายขึ้น
หากสนใจสามารถพัฒนาต่อยอดหรือสอบถามรายละเอียดเพิ่มเติมได้! 😊
บทความ 5 เรื่องที่น่าสนใจบนเว็บ DevaDIY :
ESP32 WebSocket + DHT11: ส่งข้อมูลเรียลไทม์ ง่ายๆ ด้วยตัวเอง!
โปรเจค ESP32 เครื่องตรวจจับควัน เซนเซอร์ MQ-2 พร้อม Code Arduino IDE
จอ OLED โค้ดตัวอย่างการสร้างกราฟเส้น
ESPAsyncWebServer – สร้างหน้าเพจ Wi-Fi Manager
ESP32 WiFi Library Functions ด้วยโปรแกรม Arduino IDE






