本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS 基于树莓派通用的 GPIO 设计,文中的原理和代码也适用于其他情况。

本节以 SAKS 扩展板为硬件基础,实现让树莓派掉电后系统时间能继续保持的功能。在这个扩展板上已经有一个DS1307 RTC实时时钟模块,它是I2C类的设备,首先我们需要修改树莓派的配置文件使能I2C,通过nano编辑器修改raspi-blacklist.conf 文件内容。

1
sudo nano /etc/modprobe.d/raspi-blacklist.conf

修改为如下,开启I2C功能

1
2
3
# blacklist spi and i2c by default (many users don't need them)
blacklist spi-bcm2708
blacklist i2c-bcm2708

打开/etc/modules ,在文件结尾加上 i2c-dev

1
sudo nano /etc/modules
1
2
3
4
5
6
7
8
9
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
i2c-bcm2708
i2c-dev

运行配置工具

1
sudo raspi-config


选择Advanced Options -> I2C,依次选择Yes、OK、Finish。完成。下次启动系统时,I2C模块将被自动加载。

更新一次包列表,并安装 i2c-tools工具与python-smbus,重启树莓派。

1
2
3
sudo apt-get update
sudo apt-get install i2c-tools python-smbus
sudo reboot

重启后通过刚才安装的i2c-tools对i2c设备进行探测,输入以下命令,得到如下结果,说明检测到一个地址为0x68的I2C设备就是板上的DS1307。

1
2
3
4
5
6
7
8
9
10
sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检看 DS1307的数据手册,发现DS1307的7位地址的确是0x68。注意,如果忘了为时钟模块安装纽扣电池这里可能读取不到。

下面我们通过i2c-tools来测试下DS1307的功能,并将DS1307这个掉电不丢失的时钟用于树莓派系统的时钟。
下面的测试必须在root权限下测试。

=== 如何启用 root 账户的分割线 开始===
debian里root账户默认没有密码,但账户锁定。
当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian
默认用户是pi 密码为raspberry

重新开启root账号,可由pi用户登录后,在命令行下执行

1
sudo passwd root

执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后执行

1
sudo passwd --unlock root

这样就可以解锁root账户了。
现在就有两个账户 pi@raspberrypi 和 root@raspberrypi 两个账户可以来回切换:
在pi@raspberrypi 输入 su 然后输入刚才设置的密码进入 root 账户
在root@raspberrypi 输入su pi 进入 pi账户
=== 如何启用 root 账户的分割线 结束===

1
2
3
4
5
6
su
Password:
modprobe i2c-dev
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -r
Sat Jan  1 00:00:12 2000  -0.120717 seconds

将系统时钟设定为当前时间,然后将系统时钟写入到DS1307硬件时钟里面

1
2
3
4
5
date 062120352014.00     备注:6月21日  20点35分 2014年
Sat Jun 21 20:35:00 UTC 2014
hwclock -w
date
Sat Jun 21 20:35:21 UTC 2014

编辑启动文件

1
sudo nano /etc/rc.local

将以下内容加入“exit 0”行之前

1
2
3
4
modprobe i2c-dev
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -r
hwclock -s

ctrl+x退出

过几分钟拔掉网线,重启树莓派,输入“date”看看时间是否正确。

1
2
3
4
date
Sat Jun 21 20:55:00 UTC 2014
root@raspberrypi:/home/pi# hwclock -r
Sat Jun 21 20:56:30 2014  -0.181549 seconds

以上将系统时钟和DS1307硬件时钟读出来发现 系统时钟比DS1307时钟慢了1分多。可能是在重启后DS1307写入系统后,系统需要等待1分多才开始计时。

至此,以后要用到实时时间就可以简单的使用 date 这个命令来获取。
在python编程中可以使用以下代码读取实时时间。

1
2
3
import datetime #导入系统时钟
now = datetime.datetime.now() #读取当前时间并保存到now变量
timeString = now.strftime("%Y-%m-%d%H:%M") #把now中的时间按指定格式转换成字符串

后面我们后面将开始介绍如何基于 SAKS 扩展板 DIY 各种有趣、实用的东西,欢迎持续关注!

树梅派应用22:树莓派 SAKS 扩展板实用应用 之 DS1307 RTC 时钟模块相关推荐

  1. 树莓派3B添加DS1307 RTC时钟模块

    前段时间用树莓派做了一个小项目,到实施阶段后才突然发现树莓派没有硬件时钟,最后在某宝找到了时钟模块,商家只提供硬件,不提供技术服务,只能百度搜索配置方法,最后参照树莓派 3B+ 安装 DS1307 R ...

  2. [树梅派专题笔记]树莓派忘记密码怎么办?

    树梅派登入忘记密码问题 我的树梅派 4B 因"吃灰"很久了导致登入密码忘记,怎么解决呢? 解决步骤 我的树梅派之前烧入的是 ubuntu 系统,我首先找到一台装有 ubuntu 系 ...

  3. 树莓派4b设置RTC时钟模块DS3231

    1 检查环境 由于在工程实现中,我发现树莓派的ip设置有问题,居然连不上外网.以及网络下载缓慢的问题,针对这两点,参考博客如下: IP设置检查:https://blog.csdn.net/taw199 ...

  4. 震惊!树梅派Linux(Ubuntu)还能制作windows7系统启动u盘(成功)

    这是一个阴云蔽日的周二,看着杂乱无张的系统,我实在忍不住了. 掏出装满种子的U盘,制作了一个U盘启动盘,但cha.......... u盘损坏,看着一旁的树梅派,嘿嘿嘿 --------------- ...

  5. 树莓派基础实验32:DS1302实时时钟模块实验

    一.介绍   现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话.传真.便携式仪器等产品领域.在本实验中,我们将使用DS ...

  6. 树梅派4B 安装使用 Manjaro-ARM 64位系统 samba tigervnc iptables防火墙

    你可能要问 manjaro 有什么好的? 看图,不多说. 介绍 64位系统 排名第一的,最易用的KDE桌面 迅雷,QQ ,微信,和最新软件,一个不少 manjaro 有最为丰富的软件仓库 最新的软件, ...

  7. 树梅派64位系统的安装及远程连接配置

    今早我的树梅派突然GG了,我只好重装系统,考虑到之前的32位系统的不方便,直接安装64位系统: [树莓派4b教程] 2 64位系统安装与配置 [树莓派4b教程] 3 详解远程登录的 2 种方式:SSH ...

  8. 树梅派学习 21. 串口连接

    树梅派学习 21. 串口连接 接线: 其中6.8.10 是串口的引脚. 1. 执行命令 sudo apt-get update sudo apt-get upgrade sudo reboot 2. ...

  9. 树梅派4使用Docker安装可道云

    以下是我安装过程当中的步骤: 前往树梅派官网下载一个系统. 将下载完成的系统解压. 将准备好的SD卡插进电脑,使用Win32DiskImager将步骤2下载好的系统(.img结尾的文件)烧录到SD卡, ...

  10. 树梅派4BUnbuntu更换中科大源

    树梅派4B Unbuntu 20.04LTS更换中科大源 树莓派是arm架构不是amd64!!!不要简单粘贴复制!!! 首先备份sources.list文件 cd /etc/apt sudo cp s ...

最新文章

  1. 关于使用Nginx服务器发布静态网页或者代理
  2. 编译报错+解决方法:错误: 找不到符号
  3. BIEE 目录迁移(文件夹)方式
  4. 笨办法学 Linux 4~7
  5. 小米成立“线下业务委员会”;暴风 TV 回应员工讨薪;超 98% 安卓应用不安全 | 极客头条...
  6. 细说 ASP.NET控制HTTP缓存[转]
  7. Discuz多配色纯论坛c22 utf8电脑版模板
  8. 梯度提升决策树GBDT
  9. 整理一波常用中文文字集合(去重的文字最多中文:20902个文字+ 常用的中文文字3900+)
  10. zfs编译之后,内核模块没更新的解决方案
  11. 「hdu6638」Snowy Smile【稀疏矩阵最大子矩阵和】
  12. 最好的jpg转pdf软件
  13. 数据融合(data fusion)原理与方法
  14. 你真的了解中兴吗?带你认识科技品牌 刷新认知
  15. ORA-22835:缓冲区对于CLOB到CHAR转换或BLOB到RAWZ转换而言太小
  16. 2019太原理工大学第二届程序设计新生赛预赛暨公开赛题解
  17. 为什么嫁人要嫁IT男?
  18. 失去英国电信的华为是否会失去整个欧洲?
  19. 5种最赚钱的顶尖思维,格局越大,你的成就将会越高!
  20. PHP中间件是什么?

热门文章

  1. 视频中的目标检测与图像中的目标检测具体有什么区别?
  2. AtCoder Beginner Contest 248 E - K-colinear Line「计算几何判三点共线」
  3. fiddler抓包时候的 tunnel to是什么意思
  4. 深入理解JavaScript运行机制
  5. java金蝉素数_回文素数 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Linux系统安装,教你安装一个属于自己的Linux系统
  7. AR涂涂乐项目之识别图制作模型的制作一
  8. 计算机网络(三)——数据链路层
  9. androidstudio身高预测app
  10. 如何解决苹果电脑键盘失灵的问题