กลับไปหน้ารวมไฟล์
aur4-clock-b26612.md
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) รวบรวมข้อมูลโดย: [ชื่อของคุณ/วิศวกรระบบสมองกลฝังตัว]


ข้อมูล Frontmatter ดั้งเดิม

title: "AUR4 Clock"
description: "A RTC NTP synced clock"
author: "eremefu"
category: "Screens & Displays"
tags:
  - "Clocks"
views: 440
likes: 0
price: 2450
difficulty: "Easy"
components:
  - "1x Arduino® UNO R4 WiFi"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/eremef/aur4_clock"
  - "https://projects.arduinocontent.cc/33f126e9-fa02-4e30-92ed-9e746aca673b.ino"
  - "https://projects.arduinocontent.cc/98a269fc-e512-4416-8505-05fc76bdb15f.h"
documentationLinks: []
passwordHash: "fd096a74398ba2d04784ab8ff0ded00fb094f907b939c6bd15df5c2b02532065"
encryptedPayload: "U2FsdGVkX18IMXFGGDOfJkecPw0QlWppETq1monXBME2zxab0y8y4U25iVQRVH1/TVLbGn4Z+bUb3pUngoXE1Nlc0vjEx7bpUipMBZwWhOg="
seoDescription: "Build an AUR4 Clock synced via RTC and NTP for precise timekeeping in your Arduino projects."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/aur4-clock-b26612_cover.jpg"
lang: "th"