ในการบันทึกข้อมูลลง SD card หรือส่งข้อมูลออกไปยังผู้ใช้งาน หรือการตั้งเวลาเปิดปิดอุปกรณ์ไฟฟ้าตามช่วงเวลา เราต้องใช้เวลาที่ตรงกับเวลาจริงเพื่อให้เกิดความต่อเนื่องในการทำงานอย่างถูกต้อง ซึ่งโดยปกติแล้วไมโครคอนโทรลเลอร์อย่าง Arduino ไม่สามารถดึงข้อมูลเวลาจริงจากอินเตอร์เน็ตอย่างเช่นที่คอมพิวเตอร์หรืออุปกรณ์ IoT ทำได้ เพราะเวลาที่ได้จากบนตัวบอร์ดเช่น micros(); จะนับเวลาจากเริ่มเปิดเครื่อง ทำให้เวลาปิดเปิดเครื่องใหม่เวลาที่ตั้งไว้ก็จะหายไปด้วย
จึงมีการพัฒนาโมดูลสำหรับเก็บเวลาอย่าง DS3231 ที่จะเสมือนมีนาฬิกาไว้ติดบนมือของ Arduino เพื่อคอยบอกเวลา โดยตัว DS3231 มีแบตเตอรี่ติดกับตัวโมดูลซึ่งใช้งานได้เป็นปี
การใช้งานไม่ซับซ้อน เพียงแค่ตั้งเวลาให้โมดูลครั้งเดียว จากนั้นก็จะดึงข้อมูลเวลาออกไปใช้ได้ทันที
อุปกรณ์ที่ต้องใช้ในบทความ
1. Arduino UNO แถมสาย USB
2. โมดูลนาฬิกา RTC DS3231 และเซนเซอร์วัดอุณหภูมิ พร้อมถ่าน
การต่อใช้งาน RTC DS3231 กับ Arduino
การต่อใช้งาน RTC DS3231 กับ ESP8266 (Nodemcu v3)
วิธีการลง Library DS3231 ด้วย Arduino IDE
ในการใช้ DS3231 เราต้องการ Library ซึ่งมีผู้พัฒนาอยู่หลายเวอร์ชั่น สำหรับบทความนี้จะใช้เวอร์ชั่นของคุณ Andrew ซึ่งสามารถโหลดได้จาก Arduino IDE -> Tools -> Manage Libraries
จากนั้นพิมพ์ DS3231 เลือกติดตั้ง Library ดังรูป
เมื่อติดตั้งเรียบร้อย ต่อไปก็มาดูเรื่องของการ Coding กันครับ
การเซ็ตเวลาให้โมดูล DS3231 บน Arduino/ESP8266/ESP32
ให้เราทำการคัดลอกโค้ดด้านล่าง ใส่ใน sketch ของเรา
ให้อัพโหลดและเปิด Serial monitor ขึ้นมาจาก Tools->Serial monitor จากนั้นเปลี่ยน baudrate ให้เป็น 115200 ดังรูป
จากนั้นพิมพ์ ปี เดือน วัน วันที่ในสัปดาห์(Day of week) ชั่วโมง นาที วินาที ตามด้วยตัว x ปิดท้าย เช่น
ปี 2020 ใส่ 20
เดือน 1 ใส่ 01
วันที่ 30 ใส่ 30
วันที่ในสัปดาห์ (วันศุกร์ =5) ใส่ 5
ชั่วโมง 11
นาที 46
วินาที 30
จึงรวมกันได้เป็น
2001305114630x เป็นต้น
ให้เราใส่เลขข้างต้นในตำแหน่งที่ 1 ตามรูปด้านล่าง แล้วกด send เพื่อเซ็ตเวลา ควรจะมีหมายเลข 3 ตอบกลับมาดังรูป แสดงให้ทราบว่าเวลาได้ถูกเซ็ตแล้ว
เท่านี้ก็เสร็จสิ้นกระบวนการตั้งเวลาแล้วครับ
วิธีการดึงเวลาจากใน RTC DS3231 มาใช้
ให้เรา copy and paste โค้ดด้านล่างไปใช้ คำอธิบายอยู่ภายในโค้ดเรียบร้อยแล้วครับ
อัพโหลดแล้วลองเปิด Serial monitor จาก Tools->Serial monitor
เท่านี้ก็จะได้เวลาจาก RTC มาทั้ง วันและเวลา เราสามารถถอดไฟเลี้ยงเข้า Arduino เป็นเดือนๆ เวลาที่เก็บไว้ใน DS3231 ก็ยังคงเดินอยู่อย่างไม่หยุดพัก
เลี้ยงกาแฟผมสักแก้ว : https://ko-fi.com/modulemore