美文网首页
树莓派安装DS3231 RTC模块

树莓派安装DS3231 RTC模块

作者: 这里的三鹿18弯 | 来源:发表于2017-05-20 00:09 被阅读0次

    博主在寝室是使用树莓派来开热点的,但是晚上断电后仍然可以用充电宝进行供电上网,这种丧(xi)心(da)病(pu)狂(ben)的优势让博主失去了心爱的睡眠时间。因此机智的博主想了一个办法,写了一个早睡脚本,只要检测到时间大于11点20就强制关机,并且把脚本设置为开机自启。但是第二天博主就发现树莓派因为没有CMOS时钟,因此之后多长时间,时间都是大于11点20!也就是说我再也打不开树莓派了!

    为了应对这种蛋疼的问题,博主只好花了十几块钱从某宝买了个DS3231模块......

    DS3231

    DS3231模块是一款适用于多种单片机的RTC模块,通过DS3231,你可以为没有内置时钟模块的单片机提供精准授时。

    在树莓派model 3B上,我们可以利用该模块为树莓派授时,使树莓派无需连接网络就能够保证时钟的同步。

    1. 开启I2C

    在树莓派命令行下,输入

    $ sudo raspi-config
    

    进入树莓派配置界面,

    raspi-config

    选择5 Interfacing Options进入

    interfacing options

    选择I2C

    i2c

    确认即可。完成后保存退出树莓派配置页面。

    1. 软件配置

    对源进行更新:

    $ 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.硬件连线

    DS3231

    现在能用到的接口是SCL、SDA、VCC、和GND,

    gpio接口

    按照上图,注意我们使用“Physical”这栏接口编号。
    接线如下:
    VCC接1,即3.3v,电源正极
    SDA接3,即SDA.1
    SCL接5,即SCL.1
    GND接9,即0v,也就是电源负极

    4.命令行连接
    输入以下命令检测树莓派i2c总线的情况:

    sudo i2cdetect -y 1
    

    不出意外的话,会出现以下图片所示,不过其中的UU是68。(本人已配置成功,因此显示UU)

    sudo i2cdetect -y 1

    编辑启动文件:

    $ sudo vim /etc/rc.local
    

    按i键编辑,在exit 0前面添加:

    echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
    hwclock -s
    

    最后文件类似于:

    rc.local

    按下esc键,输入英文冒号,再输入wq,回车即可保存。

    配置完成后重启设备:

    $ sudo reboot
    

    重启后输入之前的命令:

    sudo i2cdetect -y 1
    

    这次会出现类似如下图片所示:

    sudo i2cdetect -y 1

    这下68已经变成UU,说明安装成功。

    5.最后的收尾
    刚才我们在rc.local文件中加了一句

    hwclock -s
    

    这句话的意思是将设备时间同步为系统时间。因此如果rtc模块没有使用过的话,输入

    $ date
    

    查看时间,你会发现时间严重与现在时间不符合。

    如果你现在连接到互联网的话,稍等一会,树莓派会自动与授时服务器进行同步时间。但是如果没有连接到网络的话可以输入以下命令设置时间:

    $ date -s "2017-05-20 12:03:00"
    

    其中的时间按需修改。

    时间设置完毕或者互联网授时完毕后,输入

    $ sudo hwclock -w
    

    来将系统时间写入rtc模块。

    你也可以输入

    $ sudo hwclock -r
    

    来查看是否写入成功。


    总而言之,之后操作的命令主要也就三个了:

    1. 将系统时间写入RTC:
    $ sudo hwclock -w
    
    1. 从RTC读取时间,但也仅仅是“读取”,并非写入系统时间:
    $ sudo hwclock -r
    
    1. 将系统时间设置为RTC模块的时间:
    $ sudo hwclock -s
    

    相关文章

      网友评论

          本文标题:树莓派安装DS3231 RTC模块

          本文链接:https://www.haomeiwen.com/subject/fgxgtxtx.html