1. 去淘宝买RTC3231 (有两种, 一种是几块钱的(DS3231,5个孔的单排插座), 一种是30多的(红色板,双排插座的), 我买的前者,后者不知道为什么能卖那么贵。。。)
2. 树莓派关电,准备设置:
2.0 把模块插到树莓派3B的GPIO1,3,,5,7,9脚;RTC模块插座已经对应好的,别插反了, 电池朝着CPU就对了。
2.1 控制台运行 raspi-config : 打开树莓派的i2c接口
sudo raspi-config
Advanced Option-->I2C, 选择打开。
2.2 安装工具i2c-tools: sudo apt-get install i2c-tools (这个工具作用是能管理I2C总线设备)
2.3 修改两个文件:
a. 设备文件 sudo vi /etc/modules :
写上i2c-dev , i2c-bcm2708 .
b. 启动文件 vi /etc/rc.local 将以下内容加入“exit 0”行之前
sudo modprobe i2c-dev
sudo modprobe i2c-bcm2708
echo "ds3231 0x68" | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -r
sudo hwclock -s
说下作用(个人理解),
第1第2行是加载i2c总线设备;
第3行是指定驱动给0x68这个地址(也就是RTC模块的I2C地址0x68,驱动名称是ds3231.为什么呢?
先用lsmod查看到rtc_ds1307已经加载 (这里需要修正:先手动执行了命令才能看到:
sudo echo "ds3231 0x68" | sudo tee /sys/class/i2c-adapter/i2c-1/new_device)
然后用modinfo rtc_1307可以看到驱动对应的别名: alias i2c:ds3231 ===》故驱动是ds3231; 然后用 i2cdetect 1可以看到RTC占用地址 (输入Y, 然后出来一个map:68 位置就是RTC,不相信可以拔掉RTC看看);然后就是这样了)
第4行 ,纯粹打印RTC时间看看;
第5行是把RTC时间覆盖系统时间;
3. 另外: 有用的几个RTC操作指令:要用sudo 管理员权限运行
sudo hwclock -r 读取RTC时间
sudo hwclock -s 把RTC时间写入系统
sudo hwclock -w 把系统时间写入RTC
sudo hwclock --set --date="2017-01-13 11:00:11" 修改RTC时间为任意值
4. 关闭系统对时(我没这样做,国外的文章, 可以参考)
We can also disable the ntp daemon and fake-hwclock during boot. (关闭网络对时)
sudo update-rc.d ntp disable sudo update-rc.d fake-hwclock disable
That's it. Pretty easy.
You can still sync the system time from the internet using... (复制网络时间到RTC)
sudo ntpd -gq sudo hwclock -w
折腾了一天,终于知道如何把RTC时间设置到树莓派了。我这里没关闭ntp对时。另外注意一点,不要热插拔i2c RTC 模块,否则会有时间错乱。。。
我也是小白, 参考了众多资料, 微雪那篇文章 http://www.waveshare.net/study/article-623-1.html ,做不到自动把RTC 对到树莓派系统, 大家就看着办了,反正我测试是不行的。