สวัสดีครับ ในบทความนี้เราจะมาเพิ่ม Real Time Clock (RTC) ให้แก่บอร์ด CAT LoRa Starter Kit กันครับ

Real Time Clock (RTC) คืออะไร ?

เป็นอุปกรณ์ที่ให้ค่าเวลาตามจริง ทำงานโดยการจับสัญญานนาฬิกาที่ได้มาจาก Crystal มีถ่านสำรองมาให้เพื่อให้สามารถบันทึกเวลาได้ถึงแม้ว่าจะไม่มีไฟเลี้ยงมาที่ตัวบอร์ด ทำให้ไม่ต้องตั้งเวลาใหม่ทุกครั้ง โมดูล RTC นี้จำเป็นอย่างยิ่งกับการใช้งานที่ต้องมีการบันทึกเวลา (Time Stamp) หรือมีการทำงานที่เกี่ยวพันกับเวลาจริง เช่น การตั้งเวลาเปิดปิด Relay Module เป็นต้น

ความจริง Adafruit Feather M0 มีตัวจับเวลาอยู่แล้ว เช่นการใช้ฟังก์ชัน millis() เป็นต้น แต่การประมวลผลคำสั่งจะทำงานแบบ อนุกรม (Serial) คือ ทำทีละบรรทัด ทำให้การทำงานของคำสั่งจับเวลาจะถูกรบกวนจากการประมวลผลคำสั่งอื่น ๆ ไปด้วย เวลาที่ได้จากการใช้คำสั่งนี้เลยไม่สามารถนำมาเป็นเวลาตามจริงที่ต้องการบันทึกไปพร้อมกับค่าอื่น ๆ ที่ต้องการวัดได้ ดังนั้น ในการประยุกต์ใช้กับงานที่ต้องการเวลาที่แม่นยำ และสามารถบอก วันที่ เดือน ปี ชั่วโมง นาที วินาที จึงต้องใช้อุปกรณ์ที่ทำหน้าที่จับเวลาแยก

DS3231 เป็น RTC Module ที่มีข้อดีคือ มีการชดเชยการเปลี่ยนแปลงของสัญญาณนาฬิกา เนื่องจากการเปลี่ยนแปลงของอุณหภูมิแวดล้อมด้วย หรือก็คือ เวลาที่อุณหภูมิเปลี่ยน สัญญาณนาฬิกาจาก Crystal ก็เปลี่ยน ทำให้เวลาก็เพี้ยนไปด้วย แต่โมดูลนี้ได้ทำการวัดค่าอุณหภูมิพร้อมทั้งชดเชยความเปลี่ยนแปลงนี้ไปด้วยแล้ว ทำให้เวลาที่ได้มีความแม่นยำสูงมาก อีกทั้งยังใช้การเชื่อมต่อแบบบัส I2C ทำให้ง่ายต่อการใช้งานมาก

อุปกรณ์

การต่อวงจร

Library ที่จำเป็น

DS3231 Real-Time Clock: https://github.com/jarzebski/Arduino-DS3231

การเขียนโปรแกรมเพื่อเชื่อมต่อกับตัวโมดูล

ผลลัพธ์

เปิดดูใน Terminal

อธิบายการทำงาน

ก็ขอจบบทความนี้แต่เพียงเท่านี้ สำหรับบทความหน้าจะเป็นการนำ DS3231 มาประยุกต์ใช้งาน โดยการตั้งเวลาการเปิด-ปิดหลอดไฟ LED ผ่านระบบเครือข่าย CAT LoRa กันครับ

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store