2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คำแนะนำนี้จะแสดงวิธีตั้งเวลาบนนาฬิกาเรียลไทม์ DS3231 โดยใช้ Arduino และแอปพลิเคชัน Java ขนาดเล็กที่ใช้การเชื่อมต่อแบบอนุกรมของ Arduino
ตรรกะพื้นฐานของโปรแกรมนี้:
1. Arduino ส่งคำขอแบบอนุกรม
2. โปรแกรม Java จะดูว่าวัน/เดือนอะไร/… Arduino ร้องขอและส่งข้อมูลที่เกี่ยวข้องกลับ
3. หลังจากรวบรวมข้อมูลที่จำเป็นทั้งหมดแล้ว Arduino จะจัดเก็บข้อมูลใน DS3231
โมดูล DS3231 RTC
โมดูล DS3231 RTC เป็นโมดูล RTC ที่ค่อนข้างถูกและมีความแม่นยำสูง (ไม่กี่นาทีต่อปี)
มีหลากหลายรูปแบบซึ่งการทำงานพื้นฐานเหมือนกันโดยมีความแตกต่างเพียงเล็กน้อยเท่านั้น
สามารถดูการเปรียบเทียบโดยละเอียดได้ที่นี่: DS323x Comparison | maximintegrated.com
ซื้อ DS3231:DS3231 | ebay.com
เอกสารข้อมูลสินค้า:DS3231 เอกสารข้อมูลสินค้า | maximintegrated.com
เอกสารข้อมูลสินค้า:DS1307 เอกสารข้อมูลสินค้า | maximintegrated.com
อะไหล่ที่จำเป็น
1x Arduino (นาโน อูโน่ MEGA ฯลฯ)
สายจัมเปอร์ 4x
1x DS3231 โมดูล (DS1307 โมดูล)
ขั้นตอนที่ 1: การเดินสายไฟ
ต่อสาย DS3231 ตามที่แสดงในภาพด้านบน แน่นอนคุณสามารถทำได้โดยไม่ต้องใช้เขียงหั่นขนม แต่มันจะเลอะเทอะเล็กน้อย ฉันเคยใช้ Arduino Nano สำหรับการสาธิต แต่ Uno หรือ MEGA ก็ควรทำงานเช่นกัน (คนอื่นอาจใช้งานได้ แต่ฉันขี้เกียจยืนยัน)
- Arduino -> DS3231
- A4 -> SCL
- A5 ->SDA
- 5V -> VCC
- GND -> GND
ขั้นตอนที่ 2: รหัส Arduino
ดาวน์โหลดไฟล์.ino จากด้านล่างและอัปโหลดไปยัง Arduino ของคุณ (ในกรณีของฉันคือ Nano)
ร่างต้องมีการติดตั้งไลบรารีต่อไปนี้เพื่อให้ทำงานได้อย่างถูกต้อง:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
คุณสามารถดูบทแนะนำเกี่ยวกับวิธีการอัปโหลดโค้ดไปยัง Arduino ได้ที่นี่ (arduino.cc)
ใน Arduino IDE ตรวจสอบว่าส่งรหัสถูกต้อง (อัพโหลดเสร็จแล้ว)
Arduino ของคุณพร้อมที่จะรับข้อมูลเวลาแล้ว
ดาวน์โหลดรหัสที่นี่: DS3231TimeSync.zip (mediafire.com)
ดาวน์โหลดแหล่งที่มาที่นี่: DS3231TimeSyncSRC.zip (mediafire.com)
ที่เก็บ GitHub: DS3213 RTC Time Sync (github.com)
ที่เก็บ Bitbucket: DS3231 RTC Time Sync (bitbucket.com)
ขั้นตอนที่ 3: แอปพลิเคชัน Java
1. เรียกใช้ "DS3231Sync.jar" ที่ดาวน์โหลดมาก่อนโดยดับเบิลคลิก
2. กล่องโต้ตอบขนาดเล็กจะเปิดขึ้นเพื่อขอให้คุณระบุพอร์ต Arduino ของคุณ
หากคุณไม่แน่ใจเกี่ยวกับพอร์ตที่ใช้โดย Arduino ลองดู Arduino IDE ที่ด้านล่างขวา
(ดูภาพด้านบน)
3. กล่องโต้ตอบอื่นจะเปิดขึ้นและขอการชดเชยเขตเวลาจากคุณ
ออฟเซ็ตสัมพันธ์กับเวลาท้องถิ่นของคอมพิวเตอร์ของคุณ หากต้องการตั้งค่า RTC ให้เป็นเวลาท้องถิ่นของคุณ เพียงป้อน +00:00
เป็นสิ่งสำคัญที่คุณต้องป้อนเขตเวลาชดเชยในรูปแบบเฉพาะ!
รูปแบบทั่วไปคือ +hh:mm หรือ -hh:mm รวมศูนย์นำหน้าเสมอ!
(เช่น -03:00; -06:00; +09:00; +02:30)
4. แอปพลิเคชัน Java จะเปิดหน้าต่างขนาดเล็กพร้อมเอาต์พุตคอนโซล
คอยดูข้อความยืนยัน เช่น "ตั้งเวลาเสร็จแล้ว"
เมื่อกระบวนการตั้งเวลาเสร็จสิ้น รหัสจะพิมพ์เวลาปัจจุบันบน DS3231 ทุกๆ 5 วินาที คุณสามารถยืนยันได้ว่าตั้งเวลาไว้อย่างถูกต้อง
หากคุณไม่ได้รับผลลัพธ์ใด ๆ หลังจาก ~ 20 วินาทีให้กดปุ่มรีเซ็ตบน Arduino ของคุณและรออีกครั้ง
หากยังคงใช้งานไม่ได้ ให้ตรวจสอบภาพสเก็ตช์บน Arduino และ/หรืออัปโหลดอีกครั้ง (สำคัญ: ปิดพอร์ตในแอปพลิเคชัน Java ก่อนอัปโหลดไปยัง Arduino มิฉะนั้นจะบล็อกพอร์ตอนุกรม!) จากนั้นรีเซ็ตการเชื่อมต่อในโปรแกรม Java
(โปรแกรม Java ใช้ LocalDateTime เพื่อรับวันที่ปัจจุบัน)
ตอนนี้ตั้งเวลาแล้ว มีความสุข
หากคุณมีปัญหาที่แก้ไขไม่ได้ในการตั้งเวลา โปรดแสดงความคิดเห็นด้านล่างและแชร์ log.txt ของคุณ (ในโฟลเดอร์เดียวกับ jar) กับฉัน ขอบคุณมาก!