ใน Raspberry pi จะไม่มี Real Time Clock มาให้ เมื่อเราปิดเครื่อง หรือไม่มีไฟฟ้าจ่ายให้กับ Raspberry pi วันที่และเวลาของเครื่องจะไม่เป็นปัจจุบัน วิธีที่จะทําให้เวลาของเครื่องเป็นวันที่ปัจจุบันมีด้วยกัน 2 วิธี ดังนี้
- ใช้ NTP server (จะต้องเชื่อมต่อกับเครือขาย internet)
- ใช้ Real time clock (ไม่ต้องเชื่อมต่อกับเครือขาย internet)
ในบทความนี้เราจะอธิบายวิธีใช้ Real time clock เป็นฐานเวลาให้กับ Raspberry pi ก่อนอื่นมารู้จักกันก่อนว่ามันคืออะไร Real time clock เป็น module ฐานเวลา เนื่องจากตัว module ใช้พลังงานจากถ่านกระดุมขนาดเล็กทําให้ตัว module ทํางานอยู่ตลอดเวลาแม้ไม่ได้จ่ายไฟเลี้ยง
จะนํา Real time clock มาใช้กับ Raspberry pi อย่างไร?
เมื่อ Raspberry pi เริ่มทํางานก็จะไปดึงค่าเวลาจาก Real time clock มาเซ็ตเวลาของเครื่อง ทําให้เวลาของเครื่องตรงกับปัจจุบัน Real time clock ที่ใช้จะเป็นICเบอร์ DS3231 น้าตาของบอร์ดตามรูปด้านล้างครับ
real time clock ด้านหลังจะเป็น ถ่านกระดุม
real time clock การเชื่อมต่อจะเป็นแบบ I2C โดยเราจะต้องต่อสายสัญญานระหว่าง Module กับ Raspberry pi ดังนี้ Raspberry pi ขา SDA<---->Real time clock ขา SDA Raspberry pi ขา SCL<---->Real time clock ขา SCL Raspberry pi ขา 3.3V<---->Real time clock ขา VCC Raspberry pi ขา GND<---->Real time clock ขา GND เมื่อเชื่อมต่อสายสัญญานเรียบร้อยแล้ว ใช้คําสั่งบน Raspberry pi ดังนี้(DS1307 และ DS3231 จะใช้ Driver ตัวเดียวกัน คือ ds1307)
# Load the module now
sudo modprobe i2c-bcm2708
# Notify Linux of the Dallas RTC device (use -0 for Model A or -1 for Model B)
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
Raspberry pi2 ให้ใช้คําสั่ง “echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device” Raspberry pi ให้ใช้คําสั่ง “echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-0/new_device”
ในขณะนี้เราสามารถใช้งาน Real time clock ได้แล้ว ขั้นตอนต่อไปเราลองดึงค่าเวลาของ Real time clock ออกมา ด้วยคําสั่งนี้
sudo hwclock
ในกรณีที่เราซื้อ Real time clock มาใหม่ เวลาของ module อาจจะไม่ตรง เราอาจจะต้องตั้งเวลาให้กับ module Real time clock ซะก่อน มีขั้นตอนดังนี้
- ตั้งเวลาของ Raspberry pi ให้ตรงกับปัจจุบัน(ดูวิธีการตั้งเวลา)
- Set เวลาให้กับ Module Real time clock
การ Set เวลาให้กับ Module Real time clock คือ
sudo hwclock -w
ถ้าเราต้องการจะดึงเวลาใน Real time clock มา Set ให้กับ Raspberry pi ใช้คําสั่งนี้
sudo hwclock -s
เท่านี้เวลาของ Raspberry pi ก็จะตรงกับปัจจุบัน
วิธีทําให้ Set เวลา ทุกครั้งที่เปิดเครื่อง
ให้เราเปิดไฟล์ “/etc/re.local” ด้วยคําสั่ง nano ดูวิธีใช้คําสั่ง nano คลิก
sudo nano /etc/rc.local
แล้ว เพิ่มคําสั่งนี้ ก่อนบันทัด “exit 0”
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
Raspberry pi2 ให้ใช้คําสั่ง “echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device” Raspberry pi ให้ใช้คําสั่ง “echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-0/new_device”
เมื่อแก้ไข้ แล้วให้ Reboot เครื่อง หลังจากนี้เวลาเปิด Raspberry pi ขึ้นมาเวลาจะถูก Set เป็นปัจจุบันทุกครั้ง