กลับไปหน้ารวมไฟล์
uno-multiple-time-zone-clock-using-the-ds3231-and-lcd-keypad-455e34.md

แต่ก่อนพี่ใช้นาฬิกาตั้งโต๊ะที่ใช้ถ่านกระดุม 3 เรือน เพื่อเช็คเวลาในโซนต่างๆ พี่อยู่ที่ฮัมบูร์ก เยอรมนี ส่วนครอบครัวอยู่ที่เดนเวอร์กับแคลิฟอร์เนีย เริ่มเบื่อกับการเปลี่ยนถ่านราคาแพงทุกเดือน เลยตัดสินใจหยิบ [Arduino](https://s.shopee.co.th/7fUgFAWSki) ที่วางรกๆ อยู่มาทำเป็นนาฬิกา 3 โซนเวลาแทน

ตอนเปิดเครื่องครั้งแรก เราจะตั้งค่าวันที่ เวลา และวันในสัปดาห์ผ่านเมนูได้เลย จากนั้นหน้าจอจะแสดงตำแหน่งของพี่คือ HAM (ฮัมบูร์ก) พร้อมเวลาและวันที่ท้องถิ่นในบรรทัดแรก ส่วนบรรทัดที่สองจะแสดงเวลาอีก 2 โซนที่เราตั้งไว้ แค่ปรับโค้ดนิดหน่อยก็สลับลำดับการแสดงผลได้แล้ว

สุดท้าย พี่ไม่อยากให้แสงจ้าทั้งคืน เลยเพิ่มโค้ดให้หรี่หน้าจออัตโนมัติตอนพี่นอน ตามตารางเวลาที่ตั้งไว้

ด้วย DS3231 RTC ที่มีแบตเตอรี่ในตัว นาฬิกาจะจำเวลาได้แม้จะตัดไฟออก

พี่บัดกรีหัวต่อแบบ stackable ขนาด 1x4 (4 พิน) ลงบนตำแหน่งบัดกรีว่างที่ด้านหลังบอร์ด Uno สำหรับพิน SCL, SDA, VCC และ GND เพื่อติดตั้ง DS3231

ขั้นตอนการทำ:

ขั้นตอนที่ 1: บัดกรีหัวต่อ 1x4 ลงบนตำแหน่งบัดกรีว่างด้านหลังบอร์ด UNO สำหรับพิน SCL, SDA, VCC และ GRD

ขั้นตอนที่ 2: ใส่แบตเตอรี่กระดุม CR2032 ลงในโมดูล DS3231 RTC IC2

ขั้นตอนที่ 3: ต่อโมดูล DS3231 เข้ากับด้านหลังของ Uno โดยใช้หัวต่อ 1x4 ที่เพิ่งบัดกรีไป ตรวจสอบให้ดีว่าพินตรงกันระหว่าง Uno กับ DS3231

ขั้นตอนที่ 4: ต่อ DF Robot [LCD](https://s.shopee.co.th/6AfsSPcAnb) Keypad shield เข้ากับด้านบนของ Uno

ขั้นตอนที่ 5: คัดลอก/วางโค้ดลงในซอฟต์แวร์ Arduino แล้วอัปโหลดลง Uno

ขั้นตอนที่ 6: ใช้ปุ่มบน Keypad ในการเปลี่ยนวันที่และเวลา โดยกดปุ่ม Select เพื่อเลื่อนระหว่างเมนู และใช้ปุ่มขึ้น/ลงเพื่อปรับค่า ใช้ปุ่มซ้าย/ขวาเพื่อเลื่อนระหว่างชั่วโมง -> นาที หรือ ปี -> เดือน -> วัน

ขั้นตอนที่ 7: กด Select เมื่อตั้งค่าวันที่/เวลาเสร็จ หน้าจอจะแสดงวันที่และเวลาของโซนเวลาท้องถิ่นของคุณ พร้อมกับเวลาอีก 2 โซน

ขั้นตอนที่ 8: ถ้าอยากเปลี่ยนโซนเวลา ให้ไปแก้การคำนวณของ hour1 และ hour2 ในส่วนที่คอมเมนต์ว่า //change time zone 1 calculation โดยเปลี่ยนตัวเลขหลัง - 9 รวมถึงตำแหน่งของ lcd.print("M "); และ lcd.print("PT "); ด้วย อย่าลืมว่าบรรทัดที่สองของจอมีแค่ 16 ตัวอักษรนะ

ขั้นตอนที่ 9: ถ้าอยากเปลี่ยนเวลาที่จอหรี่ไฟ/สว่าง ให้ไปปรับโค้ดในส่วนที่คอมเมนต์ว่า // Turn off light after 10 pm, turn back on after 8 am - this is in a 24 hour clock

ข้อมูลเทคนิคเพิ่มเติม

Global Chronometric Hub

โปรเจกต์นี้เปลี่ยน Arduino Uno ให้เป็นแดชบอร์ดแสดงหลายโซนเวลา เหมาะสำหรับออฟฟิศสากลหรือติดตามเวลาครอบครัวต่างประเทศ

  • UTC Offset Mapping: Arduino ติดตาม "Master UTC Time" ผ่าน DS3231 RTC จากนั้นเฟิร์มแวร์จะใช้ค่าออฟเซตที่ตั้งโปรแกรมได้ (เช่น -5 สำหรับนิวยอร์ก, +1 สำหรับลอนดอน, +7 สำหรับกรุงเทพฯ) ในการคำนวณเวลาแต่ละโซน
  • HMI Navigation: ใช้ LCD Keypad Shield ทำให้ผู้ใช้สามารถเลื่อนดูเมืองต่างๆ ทั่วโลกที่ตั้งไว้ล่วงหน้า และดูเวลาและวันที่ปัจจุบันบนจอแสดงผล 16x2

ความแม่นยำ

  • High-Precision Time Base: คริสตัลใน DS3231 ที่ได้รับการชดเชยอุณหภูมิ ทำให้ความคลาดเคลื่อนของนาฬิกาน้อยกว่า 1 นาทีตลอดทั้งปี

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

title: "UNO Multiple time zone clock using the DS3231 and LCD Keypad"
description: "This clock shows 3 time zones as well as the date. It utilizes a DS3231 RTC (Real Time Clock) and a LCD Keypad Shield. Using UNO."
author: "ssm2130"
category: ""
tags:
  - "date"
  - "keypad"
  - "clock"
  - "rtc"
  - "multiple"
  - "arduino"
  - "time"
  - "lcd"
  - "uno"
  - "zones"
views: 3811
likes: 1
price: 699
difficulty: "Intermediate"
components:
  - "1x Soldering iron (generic)"
  - "1x LCD Keypad Shield"
  - "1x Solder Flux, Soldering"
  - "1x Solder Wire, Lead Free"
  - "1x 9V 1A Switching Wall Power Supply"
  - "1x 1x4 4 pin stackable header"
  - "1x Arduino UNO"
  - "1x DS3231M - ±5ppm, I2C Real-Time Clock"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "0463eeaa3fd472c94ecc5e2de0dc1c26290fba083db07bbb53cb8f02c210175d"
encryptedPayload: "U2FsdGVkX19bqR4B1kB98M06Zu/FG44ItSHQxNvMC+hrptpb5NwJbO/RcEL9sRRa0c2DELa06S7Qj9lk3q9acQU6q0PwDbcIFatku8cvzaM="
seoDescription: "Build a Multiple time zone clock with UNO, DS3231 RTC, and LCD Keypad Shield. Displays 3 time zones and date."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/uno-multiple-time-zone-clock-using-the-ds3231-and-lcd-keypad-455e34_cover.jpg"
lang: "th"