นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 1325
ความเห็น: 0

How to install DS3231 RTC high precision on Raspberry pi 2

DS3231 RTC Raspberry pi 2

ในบางงาน เราไม่สามารถให้ RPi ของเราเชื่อมต่อกับอินเตอร์เนตได้ แม้ว่า RPi จะต่ออยู่กับ local network ก็ตาม ดังนั้น นาฬิกาของ RPi อาจจะเดินไม่ตรงได้ เพราะ Rpi ใช้หลักการ crontab เพื่อทำการอัพเดทเวลาตนเองเป็นรายคาบ ดังนั้น หากให้เวลาเดินตรงๆ เราก็ต้องหา Hardware จริงๆ มาต่อ เพื่อสร้างฐานเวลาให้กับ RPi ในทีนี้ ผมได้เลือกใช้ DS3231 RTC High precision (เขาว่างั้นนะ)  มาทำเป็นฐานเวลาให้ RPi

ต่อวงจรตามรูป

Raspberry pi 2 with DS3231 RTC high precision

ที่ Raspberry pi หลังจากบูตมาแล้ว ให้ทำการ Enable I2C ด้วยคำสั่ง

#sudo raspi-config

ภายใต้เมนู Advace options จะมีให้เลือก Enable I2C ถามอะไรมา OK ให้หมด ไม่ต้องคิดมาก

เข้าไปเช็คที่ไฟล์ /boot/config.txt จะมีข้อความ อยู่บรรทัดสุดท้าย

dtparam=i2c_arm = on ปรากฏอยู่ ถ้าไม่มีก็เพิ่มซะ จะรออะไรหล่ะ

ทำการ #sudo reboot ซะ 1 ครั้ง

เสร็จแล้วเราก็จะมาบอกให้ Linux รู้จัก device ใหม่ ที่ address 0x68 บน I2C ด้วยคำสั่ง

#sudo modprobe i2c-bcm2708
#echo ds3231 0x68 > sudo tee /sys/class/i2c-adapter/i2c-1/new_device

ถ้า Enter คำสั่งนี้แล้วไม่มีข้อความแจ้ง Error แสดงว่าพิมพ์ถูกแหละ
ใช้คำสั่ง
#sudo hwclock  มันจะไปอ่านค่าเวลาจาก hardware ของเราในทีนี้ ก็คือ ds3231 นั่นแหละ จะนานหน่อย เวลาอ่านค่าเวลาจากมัน


แล้วเราก็เอาคำสั่งนี้แหละไปเพิ่มในไฟล์ /etc/rc.local เอาไว้ตอนที่มันบูทขึ้นมา จะได้จำได้ตลอด

#sudo nano /etc/rc.local

ให้เพิ่มข้อความนี้ ไว้ก่อน Exit 0

echo ds3231 0x68 > sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
Exit 0 <<< จะต้องอยู่ล่างสุด

หากเวลาเดินไม่ตรง เราสามารถใช้คำสั่ง

#sudo hwclock --set --date="2015-05-24 13:00:00"

ตั้งเวลาได้ แต่ ถ้าต่ออินเตอร์เนตอยู่ เราสามารถให้มัน sync กับ NTP server ก่อนได้ ด้วยคำสั่ง
#sudo ntpd -gq  ใช้เวลานิดหนึ่ง มันจะปรับเวลา ds3231 ให้ตรงกับ Timezone ของเรา
แล้วก็ write ค่าลง ds3231 ซะด้วยคำสั่ง
#sudo hwclock -w  ทันที

ขั้น ตอนสุดท้าย เราต้องไป disable fake-hwclock เพื่อบอก RPi ว่า ตอนนี้เรามี Hardware ที่เป็น Clock จริงๆ แล้วนะ ไม่ต้องมาหลอกตัวเองอีกแล้ว ด้วยคำสั่ง

#sudo update-rc.d fake-hwclock disable
#sudo update-rc.d ntp disable

บันทึกเพิ่ม
ทำการติดตั้ง i2c-tools เอาไว้เช็คแอดแดรสของอุปกรณ์ที่ต่ออยู่กับ I2C
#sudo apt-get install i2c-tools

เราจะเรียกใช้คำสั่ง
#sudo i2cdetec -y 1 (1 สำหรับ RPi 2 )

ได้ ก็เห็น address ที่อยู่บน I2C bus ถ้าไม่แสดง ให้ทำการเช็คอุปกรณ์ที่ต่ออยู๋ ว่าไม่ได้เสีย หรือลืมจ่ายไฟเลี้ยง

ทำแล้วไม่เวิร์ก ลอง upgrade distro ดูครับ ผมก็ทำไม่เวิร์กเหมือนกันตอนแรก หลังจาก upgrade แล้วได้เลย

#sudo apt-get dist-upgrade

Raspberry pi 2 with DS3231 RTC high precision

 

ที่มา :
http://bohdan-danishevsky.blogspot.com/2014/12/installing-hardware-rtc-ds3132-to.html
http://www.drewkeller.com/blog/adding-hardware-clock-raspberry-pi-ds3231
http://www.bashpi.org/?page_id=500
https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi?view=all
http://decuser.blogspot.com/2015/02/raspberry-pi-b-i2c-and-ds3231-rtc.html

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 20 เมษายน 2559 16:22 แก้ไข: 20 เมษายน 2559 16:22 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 LUX, Ico24 ทดแทน, และ 2 คนอื่น.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 3.230.144.31
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ