โปรเจคใช้งาน DS3231 โมดูลนาฬิกาตั้งเวลา

หลักการทำงานของระบบ     
           Module นาฬิกา หรือมีอีกชื่อหนึ่งว่า Real time clock (RTC) ถ้านึกถึง Arduino เมื่อไม่มีการจ่ายไฟโปรแกรมของ Arduino ก็จะหยุดทำงาน เราจึงมี RTC เพื่อทำการเก็บเวลาไว้เมื่อจ่ายไฟให้กับวงจร Arduino ก็จะดึงเวลามาใช้งานได้ทันที หรือการตั้งค่าคำนวนเวลาของ Arduino อาจจะมีปัญหา ความแม่นยำไม่ตรงบ้าง Library มีการ delay ทำให้เวลาไม่ตรงบ้าง เราก็สามารถใช้ Module อ้างอิงเวลาได้อย่างชัดเจนแน่นอน หรือจะนำไปใช้ในการบอกเวลา เพื่อลดน้ำต้นไม้ เปิดปิดไฟตามเวลาก็ได้เช่นกัน
ข้อระวังของ Module RTC DS3231
     โมดูลจะมีไฟเลี้ยงเดินอยู่ตลอดเวลาให้เก็บใส่ถุงแยกออกเป็นสัดส่วนให้ดี อย่าใส่ร่วมกับอุปกรณ์อื่นๆอาจจะทำให้เกิดการช๊อตส่งผลให้ตัว Module เสียหายได้

อุปกรณ์ที่ต้องใช้
-Arduino (ได้ทุกรุ่น)
-Module RTC DS3231
-สายไฟจัมเปอร์สำหรับต่อ Module กับ Arduino

ต่อวงจรดังนี้
Arduino Uno Module DS323
5V         VCC
GND GND
A4         SDA
A5         SCL
การต่อวงจรจะต่อแบบ I2C ต้องลองศึกษา Board Arduino ที่ใช้ ขา I2C อยู่ที่ตำแหน่งไหนก็เสียบให้ตรงขาของมัน

มาถึงในส่วนของ Code
ก่อนอื่นให้เราทำการ Download Library  : http://9arduino.nisit.net/library/RTClib.zip

Code ตัวอย่าง

#include <Wire.h>
#include <SPI.h>
#include <RTClib.h>

RTC_DS3231 RTC;

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

  RTC.adjust(DateTime(__DATE__, __TIME__));   //จุดนี้เป็นการตั้งเวลา ตั้งครั้งแรกเสร็จแล้วให้ // ไว้ด้วย
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

  DateTime now = RTC.now();
  RTC.setAlarm1Simple(21, 58);  //เป็นการตั้งเวลาปลุก เวลา 22.58 น.
  RTC.turnOnAlarm(1);  //ปลุกช่วงเวลาที่ 1
  if (RTC.checkAlarmEnabled(1)) {
    Serial.println("Alarm Enabled");
  }
}

void loop () {
    DateTime now = RTC.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    if (RTC.checkIfAlarm(1)) {   // เมื่อถึงเวลาให้ทำการปลุกโดยการทำตามเงือนไขใน if
      Serial.println("Alarm Triggered");
    }

    Serial.println();
    delay(3000);

}





แหล่งที่มา : https://goo.gl/jWSjr8

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ความรู้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์

มินิโปรเจค ให้อาหารปลาด้วย arduino

โปรเจค งานเครื่องกระปุกออมสินนับเงินอัตโนมัติ