概述
本教程要求Raspberry Pi運行帶有RTC模塊和DS1307模塊的內核。當前的Raspbian發行版具有此功能,但其他人可能沒有!
Raspberry Pi被設計為一款超低成本的計算機,因此我們習慣了很多東西一臺電腦被遺漏了。例如,您的筆記本電腦和計算機有一個小硬幣電池供電的“實時時鐘”(RTC)模塊,即使關閉電源或取出電池,該模塊也能保持時間。為了保持成本低和體積小,Raspberry Pi不包含RTC。相反,Pi旨在通過以太網或WiFi連接到Internet,從全局 ntp (網絡時間協議)服務器自動更新時間
對于沒有網絡連接的獨立項目,則您將無法保留電源中斷的時間。因此,在此項目中,我們將向您展示如何在Pi上添加低成本的電池支持RTC以節省時間!
接線RTC
為保持低成本,Raspberry Pi不包含實時時鐘模塊。而是希望用戶始終將其連接到WiFi或以太網,并通過檢查網絡來節省時間。由于我們要包含一個外部模塊,因此我們必須將其連接起來。
我們建議使用三種不同的RTC,PCF8523價格便宜,DS1307最常見,DS3231最精確。
雖然我們發現DS1307歷來是最常見的,但不是最好的RTC芯片組!
Adafruit PiRTC-Raspberry Pi的PCF8523實時時鐘
產品ID:3386
這是一個很棒的電池支持的實時時鐘(RTC),使您的Raspberry Pi項目可以在斷電時跟蹤時間。完美用于數據記錄,時鐘構建,。..
$ 5.95
入庫存
添加到購物車
Adafruit PCF8523實時時鐘組裝式分線板
產品ID:3295
這是一個出色的電池供電實時時鐘(RTC),即使重新編程,您的微控制器項目也可以跟蹤時間,或斷電。非常適合。..
$ 4.95
進貨
添加到購物車
Adafruit DS1307實時時鐘組合式分線板
產品ID:3296
這是一個出色的電池供電實時時鐘(RTC),即使重新編程或斷電,您的微控制器項目也可以跟蹤時間。非常適合。..
缺貨
缺貨
Adafruit DS3231精確RTC分組
產品ID:3013
DS3231的數據表解釋說,該器件是“非常精確的I2C集成RTC/TCXO/Crystal”。而且,嘿,它的作用完全一樣……
$ 13.95
入庫存
添加到購物車
別忘了還要安裝CR1220幣形電池。特別是沒有它,DS1307根本無法工作,并且當Pi斷開且沒有硬幣電池時,任何RTC都不會保留時間。
CR1220直徑12毫米-3V鋰紐扣電池
產品編號:380
這些是質量最高的產品,容量的電池,與iCufflinks,iNecklace,Datalogging和GPS Shields,GPS HAT等產品隨附的電池相同。每筆訂購一個電池。..
$ 0.95
入庫
添加到購物車
接線簡單:
將分支板上的 VCC 連接到Pi的 5.0V 引腳(如果使用DS1307)
連接 VCC 3.3V 引腳上的Strong》(如果使用PCF8523或DS3231)
將分支板上的 GND 連接到Pi的 3.3V 引腳。 Pi的 GND 引腳
將分支板上的 SDA 連接到Pi的 SDA 引腳
將分支板上的 SCL 連接到Pi的 SCL 引腳
設置和測試I2C
設置在您的Pi上設置I2C
您還需要在您的Pi上設置i2c,為此,請運行 sudo raspi-config 并在高級下》選擇I2C并將其打開。
有關更多詳細信息,請訪問http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4上有關Raspberry Pi i2c設置和測試的教程。 -gpio-setup/configuring-i2c
使用 sudo reboot
驗證接線(I2C掃描)
通過運行驗證接線
sudo apt-get install python-smbus i2c-tools
要安裝助手軟件,然后在命令行上sudo i2cdetect -y 1 ,您應該看到顯示ID#68-這就是DS1307,PCF8523或DS3231的地址!
如果您使用的Pi 1較舊,則必須運行sudo i2cdetect -y 0 ,因為I2C總線地址從0更改為到1
一旦您運行了內核驅動程序,i2cdetect將跳過0x68并顯示UU,這意味著它可以正常工作!
設置RTC時間
現在,我們已將模塊連接好,并確認您可以使用i2cdetect看到該模塊,我們可以對其進行設置。
別忘了在上一步中設置I2C!
Raspbian Jessie(系統化)
感謝kd8twg的提示!
您可以通過添加設備樹覆蓋來添加對RTC的支持。運行
sudo nano/boot/config.txt
以編輯pi配置并添加與您的RTC芯片匹配的文件:
dtoverlay=i2c-rtc,ds1307
或
dtoverlay=i2c-rtc,pcf8523
或
dtoverlay=i2c-rtc,ds3231
到文件末尾
保存并運行sudo reboot重新開始。登錄并運行sudo i2cdetect -y 1以查看UU顯示應位于0x68的位置
禁用會干擾“真實” hwclock的“假hwclock”
sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock
現在關閉了false-hw時鐘,您就可以啟動原始的“硬件時鐘”腳本。
運行 sudo nano/lib/udev/hwclock-set 并注釋掉這三行:
#if [-e/run/systemd/system];然后
#退出0
#fi
也注釋掉這兩行
/sbin/hwclock --rtc=$dev --systz --badyear
和
/sbin/hwclock --rtc=$dev --systz
從Pi到RTC的同步時間
第一次插入RTC模塊后,它的時間將會錯誤,因為必須設置一次。您始終可以使用sudo hwclock -D -r
您可以看到,最初的日期無效!您可以輕松設置正確的時間。首先運行date以驗證時間是否正確。插入以太網或WiFi,使Pi從Internet同步正確的時間。完成后,運行sudo hwclock -w來 w 計算時間,運行另一個sudo hwclock -r來 r 花費時間
設置時間后,確保已插入幣形電池以節省時間。您只需要設置時間一次
就可以了!下次啟動時,時間將自動從RTC模塊進行同步
Raspbian Wheezy或其他預先安裝的Linux
首先,通過運行
sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev
sudo modprobe rtc-ds1307
來加載RTC模塊,以root身份運行(輸入 sudo bash )
echo ds1307 0x68 》 /sys/class/i2c-adapter/i2c-1/new_device
如果您碰巧有舊的Rev 1 Pi,請輸入
echo ds1307 0x68 》 /sys/class/i2c-adapter/i2c-0/new_device
然后您可以鍵入退出退出根shell。
然后使用檢查時間sudo hwclock -r ,它將從DS1307模塊讀取時間。如果這是第一次使用該模塊,它將在2000年1月1日返回報告,您需要設置時間
首先,您需要在Pi上設置正確的時間,最簡單的方法是將其連接起來到以太網或Wifi-它會自動設置網絡時間。時間正確后(使用 date 命令檢查),運行 sudo hwclock -w 將系統時間寫入RTC
,然后可以使用 sudo hwclock -r
接下來,您需要將RTC內核模塊添加到/etc/modules列表中,以便在計算機啟動時加載它。運行 sudo nano/etc/modules 并在文件末尾添加 rtc-ds1307 (下圖顯示rtc-1307但有錯字)
杰西前輩raspbian有點不同。首先,您將需要在引導時創建DS1307設備,通過運行
sudo nano /etc/rc.local
編輯/etc/rc.local并添加:
echo ds1307 0x68 》 /sys/class/i2c-adapter/i2c-0/new_device (對于v1樹莓派)
echo ds1307 0x68 》 /sys/class/i2c-adapter/i2c-1/new_device (對于v2樹莓派)
sudo hwclock -s (兩個版本)
在exit 0之前(我們在下面的屏幕截圖中忘記了hwclock -s部分)
就是這樣!下次啟動時,時間將自動從RTC模塊進行同步
責任編輯:wv
-
時鐘
+關注
關注
10文章
1721瀏覽量
131378 -
樹莓派
+關注
關注
116文章
1699瀏覽量
105537
發布評論請先 登錄
相關推薦
評論