博主在寢室是使用樹莓派來開熱點的,但是晚上斷電后仍然可以用充電寶進行供電上網(wǎng),這種喪(xi)心(da)病(pu)狂(ben)的優(yōu)勢讓博主失去了心愛的睡眠時間。因此機智的博主想了一個辦法,寫了一個早睡腳本,只要檢測到時間大于11點20就強制關(guān)機,并且把腳本設(shè)置為開機自啟。但是第二天博主就發(fā)現(xiàn)樹莓派因為沒有CMOS時鐘,因此之后多長時間,時間都是大于11點20!也就是說我再也打不開樹莓派了!
為了應(yīng)對這種蛋疼的問題,博主只好花了十幾塊錢從某寶買了個DS3231模塊......

DS3231模塊是一款適用于多種單片機的RTC模塊,通過DS3231,你可以為沒有內(nèi)置時鐘模塊的單片機提供精準(zhǔn)授時。
在樹莓派model 3B上,我們可以利用該模塊為樹莓派授時,使樹莓派無需連接網(wǎng)絡(luò)就能夠保證時鐘的同步。
- 開啟I2C
在樹莓派命令行下,輸入
$ sudo raspi-config
進入樹莓派配置界面,

選擇5 Interfacing Options進入

選擇I2C

確認(rèn)即可。完成后保存退出樹莓派配置頁面。
- 軟件配置
對源進行更新:
$ sudo apt-get update
$ sudo apt-get upgrade
編輯/etc/modules
$ sudo vim /etc/modules
此處采用vim編輯器,按下 i 鍵后進入編輯模式,加入i2c-bcm2835、i2c-dev、rtc-ds1307, 編輯后類似于:
snd-bcm2835
i2c-bcm2835
i2c-dev
rtc-ds1307
按下esc退出編輯模式,輸入英文冒號+wq退出。
3.硬件連線

現(xiàn)在能用到的接口是SCL、SDA、VCC、和GND,

按照上圖,注意我們使用“Physical”這欄接口編號。
接線如下:
VCC接1,即3.3v,電源正極
SDA接3,即SDA.1
SCL接5,即SCL.1
GND接9,即0v,也就是電源負極
4.命令行連接
輸入以下命令檢測樹莓派i2c總線的情況:
sudo i2cdetect -y 1
不出意外的話,會出現(xiàn)以下圖片所示,不過其中的UU是68。(本人已配置成功,因此顯示UU)

編輯啟動文件:
$ sudo vim /etc/rc.local
按i鍵編輯,在exit 0前面添加:
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
最后文件類似于:

按下esc鍵,輸入英文冒號,再輸入wq,回車即可保存。
配置完成后重啟設(shè)備:
$ sudo reboot
重啟后輸入之前的命令:
sudo i2cdetect -y 1
這次會出現(xiàn)類似如下圖片所示:

這下68已經(jīng)變成UU,說明安裝成功。
5.最后的收尾
剛才我們在rc.local文件中加了一句
hwclock -s
這句話的意思是將設(shè)備時間同步為系統(tǒng)時間。因此如果rtc模塊沒有使用過的話,輸入
$ date
查看時間,你會發(fā)現(xiàn)時間嚴(yán)重與現(xiàn)在時間不符合。
如果你現(xiàn)在連接到互聯(lián)網(wǎng)的話,稍等一會,樹莓派會自動與授時服務(wù)器進行同步時間。但是如果沒有連接到網(wǎng)絡(luò)的話可以輸入以下命令設(shè)置時間:
$ date -s "2017-05-20 12:03:00"
其中的時間按需修改。
時間設(shè)置完畢或者互聯(lián)網(wǎng)授時完畢后,輸入
$ sudo hwclock -w
來將系統(tǒng)時間寫入rtc模塊。
你也可以輸入
$ sudo hwclock -r
來查看是否寫入成功。
總而言之,之后操作的命令主要也就三個了:
- 將系統(tǒng)時間寫入RTC:
$ sudo hwclock -w
- 從RTC讀取時間,但也僅僅是“讀取”,并非寫入系統(tǒng)時間:
$ sudo hwclock -r
- 將系統(tǒng)時間設(shè)置為RTC模塊的時間:
$ sudo hwclock -s