ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

วิธีใช้ DS1307 RTC กับ Arduino

How to Use the DS1307 RTC with the Arduino

DS1307 นาฬิกาเวลาจริง (RTC) เป็นโมดูลที่ใช้กันอย่างแพร่หลายสำหรับการรักษาเวลาในโปรเจกต์ Arduino มันคงเวลาได้อย่างแม่นยำแม้เมื่อ Arduino ถูกปิดเครื่อง ด้วยแบตเตอรี่สำรองบนบอร์ด ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการเชื่อมต่อและเขียนโปรแกรม โมดูล RTC DS1307 กับ Arduino เพื่อแสดงและอัปเดตเวลา.


สิ่งที่คุณต้องมี

  1. บอร์ด Arduino (เช่น Uno, Mega, Nano)
  2. โมดูล RTC DS1307
  3. เบรดบอร์ดและสายจัมเปอร์
  4. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE แล้ว
  5. ไลบรารี: RTClib

ขั้นตอนที่ 1: การต่อสายของ โมดูล RTC DS1307

DS1307 นาฬิกาเวลาจริง สื่อสารกับ Arduino ผ่านโปรโตคอล I2C.

การเชื่อมต่อ

ขา RTC พิน Arduino
VCC 5V
GND GND
SDA A4
SCL A5

หมายเหตุ: หากใช้บอร์ด Arduino ที่มีขา SDA และ SCL เฉพาะ (เช่น Mega) ให้เชื่อมต่อขา SDA/SCL ของ RTC เข้ากับขาเหล่านั้นแทน


ขั้นตอนที่ 2: การติดตั้งไลบรารีที่จำเป็น

ในการทำงานกับ DS1307 นาฬิกาเวลาจริง (RTC), คุณจะต้องใช้ RTClib ห้องสมุด.

ขั้นตอนการติดตั้ง RTClib

  1. เปิด Arduino IDE
  2. ไปที่ สเก็ตช์ > เพิ่มไลบรารี > จัดการไลบรารี.
  3. ค้นหา "RTClib" ในตัวจัดการไลบรารี
  4. คลิก ติดตั้ง.

ขั้นตอนที่ 3: อัปโหลดโค้ดตัวอย่าง

นี่คือตัวอย่างสเก็ตช์เพื่อแสดงวันที่และเวลาปัจจุบันจาก โมดูล DS1307:

ตัวอย่างโค้ด

#include 
#include 

RTC_DS1307 rtc;

void setup() {
  Serial.begin(9600);

  // Initialize the RTC
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  // Check if the RTC is running
  if (!rtc.isrunning()) {
    Serial.println("RTC is NOT running! Setting the time...");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();

  // Display the time
  Serial.print(now.hour());
  Serial.print(":");
  if (now.minute() < 10) {
    Serial.print("0");
  }
  Serial.print(now.minute());
  Serial.print(":");
  if (now.second() < 10) {
    Serial.print("0");
  }
  Serial.println(now.second());

  // Display the date
  Serial.print(now.day());
  Serial.print("/");
  Serial.print(now.month());
  Serial.print("/");
  Serial.println(now.year());

  delay(1000); // Update every second
}

ขั้นตอนที่ 4: การปรับเวลา

หาก RTC ไม่ทำงานหรือจำเป็นต้องอัปเดตเวลา คุณสามารถใช้บรรทัดต่อไปนี้ใน setup() ฟังก์ชัน:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) และ F(__TIME__) เป็นแมโครที่ตั้งค่าวันที่และเวลาจากคอมพิวเตอร์ของคุณเมื่อคุณอัปโหลดสเก็ตช์

ในการตั้งเวลาเฉพาะด้วยตนเอง ให้ใช้:

rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS

ขั้นตอนที่ 5: การใช้ข้อมูล RTC ในโปรเจกต์ของคุณ

นั้น DS1307 สามารถให้ข้อมูลเวลาได้สำหรับการใช้งานหลากหลายประเภท เช่น:

  1. การบันทึกข้อมูล: ประทับเวลาการอ่านค่าของเซ็นเซอร์หรือเหตุการณ์.
  2. นาฬิกาปลุกและตัวจับเวลา: เรียกใช้การดำเนินการตามเวลาที่เฉพาะเจาะจง
  3. นาฬิกา: สร้างนาฬิกาดิจิทัลหรืออนาล็อกพร้อมจอแสดงผล

ตัวอย่าง: การเรียกใช้การดำเนินการในเวลาเฉพาะเจาะจง

void loop() {
  DateTime now = rtc.now();

  // ตรวจสอบว่าเป็นเวลา 8:00 AM หรือไม่
  if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
    Serial.println("ตอนนี้เป็นเวลา 8:00 AM!");
  }

  delay(1000);
}

การแก้ไขปัญหา

  1. ไม่พบ RTC:

    • ตรวจสอบการเชื่อมต่อ SDA และ SCL
    • ตรวจสอบให้แน่ใจว่าติดตั้งแบตเตอรี่อย่างถูกต้อง
  2. เวลาไม่ถูกต้อง:

    • ใช้ rtc.adjust() เพื่อรีเซ็ตเวลา
    • ตรวจสอบว่าแบตเตอรี่ RTC หมดไฟหรือหายไปหรือไม่
  3. ข้อมูลไม่สอดคล้องกัน:

    • ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟมีความเสถียรสำหรับ Arduino และโมดูล RTC

การประยุกต์ใช้ของ DS1307 RTC

  1. นาฬิกาแบบเรียลไทม์และนาฬิกาปลุก
  2. ระบบอัตโนมัติตามเวลา
  3. การบันทึกข้อมูลพร้อมการประทับเวลา
  4. ระบบเตือนความจำ

สรุป

โมดูล RTC DS1307 เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเพิ่มความสามารถด้านการรักษาเวลาให้กับโปรเจกต์ Arduino ของคุณ โดยทำตามคู่มือนี้ คุณสามารถตั้งค่า RTC แสดงเวลาและวันที่ และนำไปประยุกต์ใช้กับแอปพลิเคชันต่างๆ ทดลองผสานรวมการ DS1307 กับจอแสดงผลหรือเซ็นเซอร์เพื่อสร้างโปรเจ็กต์ที่มีความไดนามิกยิ่งขึ้น!

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

1 ความคิดเห็น

Beim Verwenden des Befehls rtc.adjust(DateTime(F(DATE), F(TIME))); wird der sketch zwar fehlerlos kompiliert und hochgeladen, beim Ausführen des Programms stürzt das Programm aber ab, was auch zur Folge hat, dass die USB-Verbindung zum PC crasht und ein Hochladen von sketchs nicht mehr möglich ist. Abhilfe schafft dann nur ein Trick?. Nach einem Doppelclick auf die Reset-Taste des Boards funktioniert die USB-Verbindung wieder.

Ulf Jacob,

แสดงความคิดเห็น