title: Arduino Uno R4 WiFi RTC NTP Clock
description: สร้างนาฬิกาความแม่นยำสูงโดยใช้ RTC ภายในและซิงโครไนซ์เวลาผ่านโปรโตคอล NTP บนบอร์ด Arduino Uno R4 WiFi
---
# ยกระดับ Arduino Uno R4 WiFi ให้เป็นนาฬิกาอัจฉริยะด้วย NTP และ RTC
ในโปรเจกต์นี้ เราจะใช้ประโยชน์จากศักยภาพสูงสุดของ **Arduino Uno R4 WiFi** ซึ่งเป็นบอร์ดใหม่ที่อัดแน่นไปด้วยฟีเจอร์ที่น่าสนใจ เช่น ไมโครคอนโทรลเลอร์ **Renesas RA4M1 (Arm® Cortex®-M4)** และชิปการเชื่อมต่อไร้สาย **ESP32-S3** เราจะสร้างนาฬิกาที่ตั้งเวลาเองโดยอัตโนมัติผ่านอินเทอร์เน็ต (NTP) และรักษาความแม่นยำของเวลาโดยใช้โมดูล RTC (Real-Time Clock) ที่รวมอยู่ในชิป
โปรเจกต์นี้ต่อยอดมาจากตัวอย่าง `RTC_NTPSync` โดย **Sebastian Romero** เพื่อสร้างนาฬิกาที่แสดงเวลาได้อย่างสวยงามบน 12x8 LED Matrix ในตัวบอร์ด
---
## เจาะลึกเทคโนโลยี
### 1. ระบบ Real-Time Clock (RTC) ภายใน
ต่างจาก Arduino Uno R3 รุ่นเก่าที่ไม่มีระบบเก็บเวลาในตัวและต้องใช้โมดูลภายนอกอย่าง DS3231 สำหรับโปรเจกต์นาฬิกา แต่ **Arduino Uno R4 WiFi** มาพร้อมกับ RTC ที่รวมอยู่ในชิป RA4M1 ซึ่งช่วยให้เราสามารถติดตามเวลา วันที่ และปีได้อย่างแม่นยำในระดับฮาร์ดแวร์
### 2. Network Time Protocol (NTP)
เพื่อให้แน่ใจว่าเวลาของนาฬิกาของเรา "ตรงเป๊ะ" เสมอ เราจะใช้โปรโตคอล **NTP** เพื่อดึงเวลาปัจจุบันจาก Global Time Servers ผ่านการเชื่อมต่อ WiFi ระบบจะดึง Unix Timestamp มาใช้ในการซิงโครไนซ์ (Sync) RTC ภายในบอร์ด
### 3. จอแสดงผล LED Matrix (12x8)
คุณสมบัติสำคัญของบอร์ด R4 WiFi คือ 12x8 red LED Matrix ในตัว (LEDs เดี่ยว 96 ดวง) เราจะใช้จอแสดงผลนี้เพื่อแสดงตัวเลขเวลา ซึ่งรองรับการปรับทิศทางให้เหมาะกับการวางบอร์ดในแนวตั้งหรือแนวนอน
---
## ตรรกะโค้ดโดยละเอียด
การทำงานของโปรแกรมสามารถแบ่งออกเป็นขั้นตอนสำคัญดังต่อไปนี้:
1. **Initialization (การเริ่มต้น):** โปรแกรมเริ่มต้นด้วยการเปิดใช้งาน Serial Communication, ตรวจสอบสถานะของ WiFi module และเริ่มต้นระบบ RTC
2. **WiFi Connection (การเชื่อมต่อ WiFi):** ใช้ข้อมูลจากไฟล์ `arduino_secrets.h` เพื่อเชื่อมต่อกับเราเตอร์ เมื่อเชื่อมต่อสำเร็จ สถานะจะแสดงผ่าน Serial Monitor
3. **NTP Synchronization (การซิงโครไนซ์ NTP):** โปรแกรมจะส่งคำขอไปยัง NTP Server เพื่อดึงเวลาปัจจุบัน เมื่อได้รับข้อมูลแล้ว คำสั่ง `RTC.setTime()` จะถูกใช้เพื่ออัปเดตค่าเวลาสำหรับชิป RA4M1
4. **Display Loop (วนลูปแสดงผล):** ใน main loop (`void loop()`) โปรแกรมจะดึงเวลาปัจจุบันจาก RTC อย่างต่อเนื่องและแสดงผลบน LED Matrix โดยจะตรวจสอบทิศทางการแสดงผลตามค่า `#define ORIENTATION` ที่เราตั้งไว้
---
## ขั้นตอนการใช้งานและการตั้งค่า
### 1. การตั้งค่าเครือข่าย WiFi
คุณต้องระบุรายละเอียดการเชื่อมต่อ WiFi ของคุณในไฟล์ `arduino_secrets.h` เพื่อให้บอร์ดสามารถเข้าถึงอินเทอร์เน็ตและดึงเวลาได้:
```cpp
#define SECRET_SSID "Your WiFi Name"
#define SECRET_PASS "Your WiFi Password"
2. การตั้งค่าทิศทางการแสดงผล
เนื่องจากการวางตำแหน่งบอร์ดอาจแตกต่างกันไปในแต่ละโปรเจกต์ คุณสามารถเลือกทิศทางการแสดงผลของตัวเลขบน LED Matrix ได้โดยการเปลี่ยนค่าตัวเลข:
#define ORIENTATION 0 // 0 สำหรับการวางแนวมาตรฐาน หรือ 1 สำหรับการแสดงผลแบบหมุน
3. การอัปโหลดโค้ด
เชื่อมต่อ Arduino Uno R4 WiFi เข้ากับคอมพิวเตอร์ของคุณ เลือกบอร์ดและ Port ที่ถูกต้องใน Arduino IDE จากนั้นเพียงคลิก Upload
ส่วนประกอบที่ใช้
- Arduino Uno R4 WiFi: แกนหลักของโปรเจกต์ (รวม MCU, WiFi, RTC และ LED Matrix ทั้งหมดไว้ในบอร์ดเดียว)
- USB-C Cable: สำหรับการโปรแกรมและจ่ายไฟ
- แหล่งจ่ายไฟภายนอก (อุปกรณ์เสริม): หากต้องการใช้เป็นจอแสดงผลแบบ Standalone สามารถใช้ Power Bank หรือ 5V-9V Adapter ได้
สรุปโปรเจกต์
ด้วยขุมพลังของ Renesas RA4M1 ทำให้การจัดการเวลาง่ายดายและแม่นยำ การรวม NTP เข้ากับ RTC ช่วยแก้ปัญหาการคลาดเคลื่อนของเวลาที่มักพบในนาฬิกาทั่วไป ยิ่งไปกว่านั้น LED Matrix ในตัวยังทำให้โปรเจกต์นี้เป็นนาฬิกาที่สมบูรณ์แบบโดยไม่จำเป็นต้องมีส่วนประกอบภายนอกเพิ่มเติม
[ดาวน์โหลดโค้ดและไฟล์โปรเจกต์ที่นี่] (พื้นที่สำหรับลิงก์ดาวน์โหลด/ปุ่ม)
ผู้พัฒนาเริ่มต้น: Sebastian Romero (@sebromero) รวบรวมข้อมูลโดย: [ชื่อของคุณ/วิศวกรระบบสมองกลฝังตัว]