DS3231 RTC โมดูลนาฬิกาสำหรับ Arduino ESP

คำอธิบาย

DS3231 RTC คืออะไร? โมดูลนาฬิกาความแม่นยำสูง

DS3231 คือ โมดูลนาฬิกาเรียลไทม์ (RTC - Real Time Clock) ความแม่นยำสูง ใช้สำหรับเก็บข้อมูลวันที่และเวลาอย่างต่อเนื่องและถูกต้อง แม้ว่าแหล่งจ่ายไฟหลักของระบบจะถูกปิดหรือตัดการเชื่อมต่อออกไปก็ตาม เนื่องจากมีแบตเตอรี่สำรอง (CR2032) ในตัวเพื่อรักษาเวลาไว้

โมดูลนี้เหมาะอย่างยิ่งสำหรับโปรเจกต์ที่ต้องการความเที่ยงตรงของเวลา เช่น ระบบบันทึกข้อมูล (Data Logger), นาฬิกาปลุก, ระบบตั้งเวลาเปิด-ปิดอุปกรณ์อัตโนมัติ และอื่นๆ

สเปคของ DS3231 RTC

แรงดันไฟฟ้าใช้งาน 3.3V – 5.5V (ใช้ได้ทั้ง Arduino และ Raspberry Pi)
การสื่อสาร I2C (SCL, SDA)
ความแม่นยำ ±2 นาทีต่อปี (แม่นยำกว่า DS1307 มาก)
แบตเตอรี่สำรอง CR2032 (รักษาเวลาได้นานหลายปีแม้ไม่มีไฟเลี้ยง)
ช่วงปีที่รองรับ ค.ศ. 2000 – 2099
คุณสมบัติพิเศษ มีวงจรชดเชยอุณหภูมิในตัว (Temperature-compensated) ทำให้เวลาไม่เพี้ยนตามอุณหภูมิที่เปลี่ยนไป

การใช้งานกับ Arduino

✅ การต่อสายกับ Arduino UNO

ขาบน DS3231 ต่อกับขาบน Arduino UNO
VCC 5V
GND GND
SDA A4
SCL A5

หมายเหตุ: Arduino รุ่นอื่นอาจใช้ขา I2C ที่แตกต่างกัน (เช่น Mega 2560 ใช้ขา 20, 21) กรุณาตรวจสอบ Pinout ของบอร์ดที่ใช้

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

ต้องติดตั้งไลบรารี RTClib by Adafruit ก่อนใช้งานผ่าน Library Manager ของ Arduino IDE

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

RTC_DS3231 rtc;

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

  // ----- ตั้งเวลาเริ่มต้น (สำคัญมาก!) -----
  // หากเป็นครั้งแรก ให้ยกเลิกคอมเมนต์บรรทัดล่างนี้เพื่อตั้งเวลาปัจจุบัน
  // จากนั้นคอมเมนต์กลับเหมือนเดิม แล้วอัปโหลดโค้ดอีกครั้ง
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  // ตรวจสอบว่าไฟเคยดับหรือไม่
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    // ตั้งเวลาเริ่มต้นหากไม่มีการตั้งค่ามาก่อน
    // rtc.adjust(DateTime(2025, 8, 7, 10, 0, 0));
  }
}

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.println(now.second(), DEC);
  
  delay(1000);
}
ข้อควรจำ: บรรทัด rtc.adjust(...) ใช้สำหรับตั้งเวลาเริ่มต้นให้กับโมดูลเพียง "ครั้งเดียว" เท่านั้น หลังจากอัปโหลดโค้ดครั้งแรกเพื่อให้เวลาตรงแล้ว ให้ใส่คอมเมนต์ (//) นำหน้าบรรทัดนั้น แล้วอัปโหลดโค้ดอีกครั้ง เพื่อไม่ให้เวลาถูกรีเซ็ตใหม่ทุกครั้งที่บอร์ดเริ่มทำงาน

การใช้งานกับ Raspberry Pi

✅ การติดตั้งและตรวจสอบ

เปิด Terminal และรันคำสั่งต่อไปนี้:

sudo apt-get update
sudo apt-get install i2c-tools python3-smbus

จากนั้นตรวจสอบว่า Raspberry Pi มองเห็นโมดูลหรือไม่:

sudo i2cdetect -y 1

หากการเชื่อมต่อถูกต้อง คุณจะเห็นเลข 0x68 ปรากฏบนตาราง ซึ่งเป็น I2C Address ของ DS3231

หลังจากนั้นสามารถใช้ไลบรารี Python เช่น adafruit-circuitpython-ds3231 เพื่อเขียนโปรแกรมอ่านและตั้งค่าเวลาได้

ไอเดียการประยุกต์ใช้งาน

โปรเจกต์ การใช้งาน RTC
Data Logger บันทึกค่าจากเซนเซอร์ต่างๆ พร้อมประทับเวลา (Timestamp) ที่แม่นยำ
ระบบเปิด-ปิดไฟอัตโนมัติ ตั้งเวลาเปิดไฟตอน 18:00 น. และปิดตอน 06:00 น. ของทุกวัน
นาฬิกา DIY สร้างนาฬิกาดิจิทัลของตัวเองโดยแสดงผลบนจอ LCD หรือ OLED
ระบบรดน้ำต้นไม้อัตโนมัติ สั่งให้ปั๊มน้ำทำงานตามเวลาที่กำหนดไว้ เช่น 07:00 น. และ 17:00 น.
ระบบเตือนหรือนาฬิกาปลุก ตั้งเวลาเพื่อให้ Buzzer, LED หรืออุปกรณ์อื่นๆ ทำงานเมื่อถึงเวลาที่กำหนด

ข้อดีของ DS3231

  • แม่นยำสูงมาก เมื่อเทียบกับ RTC รุ่นยอดนิยมอย่าง DS1307
  • มีแบตเตอรี่สำรอง ทำให้เวลาเดินต่อเนื่องแม้ไม่มีไฟเลี้ยง
  • ใช้งานได้หลายแพลตฟอร์ม ทั้ง Arduino, ESP32, Raspberry Pi และอื่นๆ
  • สื่อสารผ่าน I2C ทำให้ประหยัดขาและสามารถต่ออุปกรณ์อื่นบนบัสเดียวกันได้

DS3231 RTC โมดูลนาฬิกาสำหรับ Arduino ESP

รูปแบบสินค้า

รหัสสินค้า: RTC-3231-01+SSNF01116

70.00 ฿ 50.00 ฿ ไม่รวมภาษีมูลค่าเพิ่ม

      คำอธิบาย

      DS3231 RTC คืออะไร? โมดูลนาฬิกาความแม่นยำสูง

      DS3231 คือ โมดูลนาฬิกาเรียลไทม์ (RTC - Real Time Clock) ความแม่นยำสูง ใช้สำหรับเก็บข้อมูลวันที่และเวลาอย่างต่อเนื่องและถูกต้อง แม้ว่าแหล่งจ่ายไฟหลักของระบบจะถูกปิดหรือตัดการเชื่อมต่อออกไปก็ตาม เนื่องจากมีแบตเตอรี่สำรอง (CR2032) ในตัวเพื่อรักษาเวลาไว้

      โมดูลนี้เหมาะอย่างยิ่งสำหรับโปรเจกต์ที่ต้องการความเที่ยงตรงของเวลา เช่น ระบบบันทึกข้อมูล (Data Logger), นาฬิกาปลุก, ระบบตั้งเวลาเปิด-ปิดอุปกรณ์อัตโนมัติ และอื่นๆ

      สเปคของ DS3231 RTC

      แรงดันไฟฟ้าใช้งาน 3.3V – 5.5V (ใช้ได้ทั้ง Arduino และ Raspberry Pi)
      การสื่อสาร I2C (SCL, SDA)
      ความแม่นยำ ±2 นาทีต่อปี (แม่นยำกว่า DS1307 มาก)
      แบตเตอรี่สำรอง CR2032 (รักษาเวลาได้นานหลายปีแม้ไม่มีไฟเลี้ยง)
      ช่วงปีที่รองรับ ค.ศ. 2000 – 2099
      คุณสมบัติพิเศษ มีวงจรชดเชยอุณหภูมิในตัว (Temperature-compensated) ทำให้เวลาไม่เพี้ยนตามอุณหภูมิที่เปลี่ยนไป

      การใช้งานกับ Arduino

      ✅ การต่อสายกับ Arduino UNO

      ขาบน DS3231 ต่อกับขาบน Arduino UNO
      VCC 5V
      GND GND
      SDA A4
      SCL A5

      หมายเหตุ: Arduino รุ่นอื่นอาจใช้ขา I2C ที่แตกต่างกัน (เช่น Mega 2560 ใช้ขา 20, 21) กรุณาตรวจสอบ Pinout ของบอร์ดที่ใช้

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

      ต้องติดตั้งไลบรารี RTClib by Adafruit ก่อนใช้งานผ่าน Library Manager ของ Arduino IDE

      #include <Wire.h>
      #include <RTClib.h>
      
      RTC_DS3231 rtc;
      
      void setup() {
        Serial.begin(9600);
        Wire.begin();
        rtc.begin();
      
        // ----- ตั้งเวลาเริ่มต้น (สำคัญมาก!) -----
        // หากเป็นครั้งแรก ให้ยกเลิกคอมเมนต์บรรทัดล่างนี้เพื่อตั้งเวลาปัจจุบัน
        // จากนั้นคอมเมนต์กลับเหมือนเดิม แล้วอัปโหลดโค้ดอีกครั้ง
        // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      
        // ตรวจสอบว่าไฟเคยดับหรือไม่
        if (rtc.lostPower()) {
          Serial.println("RTC lost power, let's set the time!");
          // ตั้งเวลาเริ่มต้นหากไม่มีการตั้งค่ามาก่อน
          // rtc.adjust(DateTime(2025, 8, 7, 10, 0, 0));
        }
      }
      
      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.println(now.second(), DEC);
        
        delay(1000);
      }
      ข้อควรจำ: บรรทัด rtc.adjust(...) ใช้สำหรับตั้งเวลาเริ่มต้นให้กับโมดูลเพียง "ครั้งเดียว" เท่านั้น หลังจากอัปโหลดโค้ดครั้งแรกเพื่อให้เวลาตรงแล้ว ให้ใส่คอมเมนต์ (//) นำหน้าบรรทัดนั้น แล้วอัปโหลดโค้ดอีกครั้ง เพื่อไม่ให้เวลาถูกรีเซ็ตใหม่ทุกครั้งที่บอร์ดเริ่มทำงาน

      การใช้งานกับ Raspberry Pi

      ✅ การติดตั้งและตรวจสอบ

      เปิด Terminal และรันคำสั่งต่อไปนี้:

      sudo apt-get update
      sudo apt-get install i2c-tools python3-smbus

      จากนั้นตรวจสอบว่า Raspberry Pi มองเห็นโมดูลหรือไม่:

      sudo i2cdetect -y 1

      หากการเชื่อมต่อถูกต้อง คุณจะเห็นเลข 0x68 ปรากฏบนตาราง ซึ่งเป็น I2C Address ของ DS3231

      หลังจากนั้นสามารถใช้ไลบรารี Python เช่น adafruit-circuitpython-ds3231 เพื่อเขียนโปรแกรมอ่านและตั้งค่าเวลาได้

      ไอเดียการประยุกต์ใช้งาน

      โปรเจกต์ การใช้งาน RTC
      Data Logger บันทึกค่าจากเซนเซอร์ต่างๆ พร้อมประทับเวลา (Timestamp) ที่แม่นยำ
      ระบบเปิด-ปิดไฟอัตโนมัติ ตั้งเวลาเปิดไฟตอน 18:00 น. และปิดตอน 06:00 น. ของทุกวัน
      นาฬิกา DIY สร้างนาฬิกาดิจิทัลของตัวเองโดยแสดงผลบนจอ LCD หรือ OLED
      ระบบรดน้ำต้นไม้อัตโนมัติ สั่งให้ปั๊มน้ำทำงานตามเวลาที่กำหนดไว้ เช่น 07:00 น. และ 17:00 น.
      ระบบเตือนหรือนาฬิกาปลุก ตั้งเวลาเพื่อให้ Buzzer, LED หรืออุปกรณ์อื่นๆ ทำงานเมื่อถึงเวลาที่กำหนด

      ข้อดีของ DS3231

      • แม่นยำสูงมาก เมื่อเทียบกับ RTC รุ่นยอดนิยมอย่าง DS1307
      • มีแบตเตอรี่สำรอง ทำให้เวลาเดินต่อเนื่องแม้ไม่มีไฟเลี้ยง
      • ใช้งานได้หลายแพลตฟอร์ม ทั้ง Arduino, ESP32, Raspberry Pi และอื่นๆ
      • สื่อสารผ่าน I2C ทำให้ประหยัดขาและสามารถต่ออุปกรณ์อื่นบนบัสเดียวกันได้

      Recently viewed products

      © 2025 บริษัท โกลบอลโทรนิค อินเตอร์เทรด จํากัด, ขับเคลื่อนโดย Shopify

      • PayPal

      เข้าสู่ระบบ

      ลืมรหัสผ่านใช่ไหม?

      ยังไม่มีบัญชีใช่ไหม?
      สร้างบัญชี