การใช้ Real time clock กับ Raspberry pi

Jul 13, 2016 12:03 · 308 words · 2 minute read Raspberry pi

ใน Raspberry pi จะไม่มี Real Time Clock มาให้ เมื่อเราปิดเครื่อง หรือไม่มีไฟฟ้าจ่ายให้กับ Raspberry pi วันที่และเวลาของเครื่องจะไม่เป็นปัจจุบัน วิธีที่จะทําให้เวลาของเครื่องเป็นวันที่ปัจจุบันมีด้วยกัน 2 วิธี ดังนี้

  1. ใช้ NTP server (จะต้องเชื่อมต่อกับเครือขาย internet)
  2. ใช้ 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 ด้านหลังจะเป็น ถ่านกระดุม

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 ซะก่อน มีขั้นตอนดังนี้

  1. ตั้งเวลาของ Raspberry pi ให้ตรงกับปัจจุบัน(ดูวิธีการตั้งเวลา)
  2. 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 เป็นปัจจุบันทุกครั้ง