สารบัญ:

การตั้งค่า DS3231 RTC (นาฬิกาเรียลไทม์) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1 วินาที): 3 ขั้นตอน
การตั้งค่า DS3231 RTC (นาฬิกาเรียลไทม์) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1 วินาที): 3 ขั้นตอน

วีดีโอ: การตั้งค่า DS3231 RTC (นาฬิกาเรียลไทม์) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1 วินาที): 3 ขั้นตอน

วีดีโอ: การตั้งค่า DS3231 RTC (นาฬิกาเรียลไทม์) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1 วินาที): 3 ขั้นตอน
วีดีโอ: การตั้งเวลา Arduino โดยไม่ใช้ RTC Module 2024, กันยายน
Anonim
การตั้งค่า DS3231 RTC (Real Time Clock) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1s)
การตั้งค่า DS3231 RTC (Real Time Clock) อย่างแม่นยำ รวดเร็ว และอัตโนมัติโดยใช้ Java (+-1s)

คำแนะนำนี้จะแสดงวิธีตั้งเวลาบนนาฬิกาเรียลไทม์ 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

รหัส Arduino
รหัส 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

แอปพลิเคชัน Java
แอปพลิเคชัน 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) กับฉัน ขอบคุณมาก!