精华内容
下载资源
问答
  • DS1307时钟模块

    2013-12-04 20:09:51
    DS1307时钟模块的基本资料和测试代码
  • 基于arduino真实可用RTC+I2C模块+24C32存储器+DS1307时钟模块
  • keil工程,使用的是stm32f103的开发板,使用模拟iic驱动DS1307时钟模块,可用printf打印年月日时分秒在串口上年机上观察现象
  • 37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器...实验八十四:DS1307时钟模块 Tiny RTC I2C模块 24C32存储器 时钟(带电池)

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验八十四:DS1307时钟模块 Tiny RTC I2C模块 24C32存储器 时钟(带电池)

     

    DS1307
    是美国DALLAS公司推出的I2C总线接口实时时钟芯片,它可独立于 CPU工作,不受CPU主晶振及其电容的影响,且计时准确,月累积误差一般小于10秒。芯片还具有主电源掉电情况下的时钟保护电路,DS1307的时钟靠后备电池维持工作,拒绝CPU对其读出和写入访问。同时还具有备用电源自动切换控制电路,因而可在主电源掉电和其它一些恶劣环境场合中保证系统时钟的定时准确性。DS1307具有产生秒、分、时、日、月、年等功能,且具有闰年自动调整功能。同时,DS1307芯片内部还集成有一定容量、具有掉电保护特性的静态RAM,可用于保存一些关键数据。

     

     

     

    主要特点
    56字节非失性的RAM
    两线串行接口
    可编程方波输出
    自动掉电检测和切换电路
    在电池备份模式下,功耗小于500nA
    工业级的工作温度: -40 到80
    8脚DIP和SOIC封装
    可对秒,时,分,每月的天数,月份,每周的天数进行计数,并具有闰年补偿功能。计年上限2100。

     

    DS1307时钟模块 Tiny RTC I2C模块 24C32存储器 时钟(带电池)

    模块特色

    1、采用DS1307 I2C实时时钟芯片(RTC)

    2、使用24C32 32K I2C EEPROM存储器

    3、采用LIR2032可充电锂电池,并带充电电路

    4、解决DS1307带备用电池不能读写的问题。

    5、充满电后,能提供DS1307计时1年。

    6、设计小巧,27mm*28mm*8.4mm

    7、引出DS1307的时钟引脚,为单片机提供时钟信号。

    8、可以级联其他I2C设备。

     

    模块电原理图

     

    模块接线示意图

     

    实验开源代码

    /*
    
      【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    
      实验八十四: DS1307时钟模块 Tiny RTC I2C模块 24C32存储器(带电池)
    
      项目:串口显示时间
    
    */
    
    
    
    #include <Wire.h>
    
    #include <RTClib.h>
    
    DS1307 RTC;
    
    
    
    void setup () {
    
      Serial.begin(57600);
    
      Wire.begin();
    
      RTC.begin();
    
      RTC.adjust(DateTime(__DATE__, __TIME__));
    
    }
    
    
    
    void loop () {
    
      DateTime now = RTC.now();
    
      Serial.print(now.year(), DEC);
    
      Serial.print('/');
    
      Serial.print(now.month(), DEC);
    
      Serial.print('/');
    
      Serial.print(now.day(), DEC);
    
      Serial.print(' ');
    
      Serial.print(now.hour(), DEC);
    
      Serial.print(':');
    
      Serial.print(now.minute(), DEC);
    
      Serial.print(':');
    
      Serial.print(now.second(), DEC);
    
      Serial.println();
    
      delay(3000);
    
    }

     

    实验串口返回情况

     

    实验开源仿真编程(Linkboy V4.2)

     

     

    实验开源图形编程(Mixly、Mind+、编玩边学)与串口返回情况

     

     

    实验场景图

     

     

    展开全文
  • 这个东西其实是可以的,就是没什么技术...1、需要手工焊接,这点无法回避,老老实实焊接好5个洞的那头,至少焊接4根,DS那根可以不用,但是既然都能焊接4根了,也不在乎多1根了,我一次性把两头(一头5根,一头7根)...

           这个东西其实是可以的,就是没什么技术支持,有很多细节会有坑,我搞了十几天(期间还花了一周来学习焊接)才完全成功的,期间我很恼火,觉得就是买了个垃圾,甚至想扔掉这个2块钱的东西。于是我又买了一个,结果两个都是一样的,这时我才静下心来看看到底是怎么一回事。现在把经验细节分享给后来的新手,高手可以略过。

    就今天写这篇博文的时候做的,童叟无欺哈

     

     

    我在淘宝和拼多多各买了一个这样的,名叫Tiny RTC,2元

     

    反面是这样的,需要手工焊接,不太友好

     

    焊接好之后是这样的,我努力学了很多天,总算是掌握了一项新技能。

    下面开始分享我的经验,有以下几个点值得注意:

    1、需要手工焊接,这点无法回避,老老实实焊接好5个洞的那头,至少焊接4根,DS那根可以不用,但是既然都能焊接4根了,也不在乎多1根了,我一次性把两头(一头5根,一头7根)都焊接好了;

    2、焊好就是接线了,这里不会有坑,4根线没人会接错的;

    3、接下来就是需要一个测试程序了,2块钱买来的地方未必会提供,客服一般都是机器人,这时如果没有一个测试完好的程序,新手就会很迷茫,到底这东西有没有用,下一步不知道从哪里开始着手了。现在不用慌了,以下有一个完整的程序,我测试了100遍以上。硬件上我用的是Arduino UNO R3,由于只有电源正负2根和SCL、SDA2根共4根线,所以硬件连接上不用考虑什么硬件不一致的问题。另外,我还可以提供部分技术支持,尽管留言。到这里就完成一半了,下面一半是代码了;

    4、代码的第一个问题可能是你店家带来的声明是不对的,应该使用RTC_DS1307 RTC来定义RTC变量,而不是DS1307 RTC;(RTClib等库是需要的,这个我不再这里赘述)

    5、当前时间设置用这句:RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01)); 

    6、秒钟肯定不对的,不过不用慌,文末的代码还包括了一点我自己的代码来进行秒钟微调,不过现在不用管这种小事,稍后反注释//#define HACK_ADJUST这句我们再来调整准确的秒钟;

    7、程序刷入进去之后,第一个可能遇到的问题就是时间动了,但是每次重启又还是原来的时间。这个问题仔细想想就不难发现,因为我们刚刚刷进去的代码就包括了一个写死的时间呀,那每次启动可不又像第一次来设置时间时一模一样了?这和时光倒流效果一样,对吧 :P

    8、所以,一旦成功写入读出时间了,那就再也不需要设置时间这一句了,马上注释掉并再次烧入程序;  //RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01)); //设置初始时间

    9、现在程序里没有任何地方可以修改你的时间了,想修改都修改不了了,呵呵,这时不是还有秒针不太对的问题吗,用这句#define HACK_ADJUST打开我写的那段代码功能,修改其中这句中的数字1为合适的值: Wire.write(bin2bcd(sec + 1));  //秒级微调——+1可以改为合适的调整值,不要加太多,避免进位,或者用减法更靠谱。这段代码是我从Wire库和RTClib库里面抽取并修改形成的;

    10、这下好像就全完成了,还有一些什么要注意的呢,让我想想。对咯,就是拔线的时候注意不要碰到那个3V锂电池(CR2032),否则时间会变成2000-01-01,不过,这又有什么慌的呢,重做一遍就是了。如果我没有遇到我怎么会知道呢,O(∩_∩)O

    #include <Streaming.h>
    #include <Wire.h>//IIC库
    #include <RTClib.h>
    #include <LiquidCrystal_I2C.h>
    
    //#define HACK_ADJUST
    #ifdef HACK_ADJUST
    int adjusted = 0;
    static uint8_t bin2bcd(uint8_t val) {
      return val + 6 * (val / 10);
    }
    #endif
    
    LiquidCrystal_I2C lcd(0x27, 16, 2); //设置LCD1602设备地址0x27
    RTC_DS1307 RTC;
    
    void setup()
    {
      Wire.begin(); // 开启总线,这个用于I2C的使用
      RTC.begin();  // 初始化时钟
      //RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01)); //设置初始时间
      lcd.init();                  // 初始化LCD
      lcd.backlight();             //设置LCD背景灯亮
      Serial.begin(115200);
    }
    
    void loop()
    {
      DateTime dateTime = RTC.now(); // 获取现在的时间
      Serial << dateTime.year() << "-" << dateTime.month() << "-" << dateTime.day() << endl;
      Serial << dateTime.hour() << ":" << dateTime.minute() << ":" << dateTime.second() << endl;
    
      //显示年
      lcd.setCursor(3, 0);
      lcd.print(dateTime.year());
    
      //显示月
      lcd.print('-');
      if (dateTime.month() > 9)
      {
        lcd.print(dateTime.month());
      }
      else
      {
        lcd.print('0');
        lcd.print(dateTime.month());
      }
    
      //显示日
      lcd.print('-');
      if (dateTime.day() > 9)
      {
        lcd.print(dateTime.day());
      }
      else
      {
        lcd.print('0');
        lcd.print(dateTime.day());
      }
    
      //显示小时
      lcd.setCursor(4, 1);
      if (dateTime.hour() > 9)
      {
        lcd.print(dateTime.hour());
      } else
      {
        lcd.print('0');
        lcd.print(dateTime.hour());
      }
    
      //显示分钟
      lcd.print(':');
      if (dateTime.minute() > 9)
      {
        lcd.print(dateTime.minute());
      }
      else
      {
        lcd.print('0');
        lcd.print(dateTime.minute());
      }
    
      //显示秒
      lcd.print(':');
      if (dateTime.second() > 9)
      {    
    #ifdef HACK_ADJUST    //A hacking adjust by Safirst C. Ke
        int sec = dateTime.second();
        if (!adjusted)
        {
          Wire.beginTransmission(DS1307_ADDRESS);
          Wire.write((byte)0);
          Wire.write(bin2bcd(sec + 1));  //秒级微调——+1可以改为合适的调整值,不要加太多,避免进位,或者用减法更靠谱。
          Wire.endTransmission();
          adjusted = 1;
        }  
    #endif
    
        lcd.print(dateTime.second());
      }
      else
      {
        lcd.print('0');
        lcd.print(dateTime.second());
      }
      delay(990);
    }

     

    展开全文
  • DS1302_DS3231_DS1307实时时钟模块.rar
  • 在本教程中,您将学习如何使用带有Arduino的RTC DS1307模块进行提醒。 硬件组件: Arduino Uno R3× 1 ElectroPeak DS1307模块× 1 ElectroPeak跳线× 1 软件应用程序和在线服务: Arduino IDE 在许多电子项目中,必须...
  • 代码加word文档,详细说明透过CUBEMX构建HAL的使用IIC外设的程序过程。 详细说明了24C32存储芯片以及DS1307时钟芯片的使用,附带实测时序图以及datasheet
  • 树莓派3B添加DS1307 RTC时钟模块

    千次阅读 2019-03-27 18:23:03
    到实施阶段后才突然发现树莓派没有硬件时钟,最后在某宝找到了时钟模块,商家只提供硬件,不提供技术服务,只能百度搜索配置方法,最后参照树莓派 3B+ 安装 DS1307 RTC 时钟模块配置成功。 1.开启i2c 运行下面命令...

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

    1.硬件安装

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.开启i2c

    运行下面命令,开启树莓派配置工具

    $ sudo raspi-config //树莓派配置工具
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.添加对 DS1307 的支持

    打开树莓派的启动配置文件

    sudo nano /boot/config.txt //树莓派的启动配置文件
    

    在最后一行输入

    dtoverlay=i2c-rtc,ds1307
    

    重启系统

    sudo reboot
    

    4.从树莓派同步时间到 DS1307

    $ date  //显示当前树莓派的时间
    $ sudo hwclock -w //把树莓派的时间写入到 DS1307
    $ sudo hwclock -r //读取DS1307的时间
    

    5.设置启动时,同步时间

    修改 /etc/rc.local

    $ sudo nano /etc/rc.local
    
    

    在 exit 0 前加入

    hwclock -s
    
    展开全文
  • 用CubeMX的HAL库,用2个IO来模拟IIC,读写控制DS1307时钟芯片以及24C32芯片(淘宝上有模组卖)。 附带DS1307和24C02,24C32的datasheet资料,附带word文档详细的关于24C32和DS1307的注意要点,时序等说明。包括透过...
  • 1.DS1307 I2C实时时钟芯片(RTC) 2.24C32 32K I2C EEPROM存储器 3.采用LIR2032可充电锂电池,并带充电电路 4.解决DS1307带备用电池不能读写的问题 5.充满电后,能提供DS1307计时1年 6引出DS1307时钟引脚,为单片机...
  • Arduino 入门到精通 例程
  • 本设计分享的是DS1307实时时钟RTC计数模块原理图/PCB源文件,见附件下载。DS1307实时时钟RTC计数模块能实时计算秒,分,小时,年度日期,月份,星期几和闰年补偿年份;可设置为12小时格式或24小时格式;有效期至2100...
  • 本文将介绍香橙派4在linux系统下如何连接RTC时钟模块: 1 硬件接线 接线如下: 2 功能测试 因为内核已经有ds1307的驱动。所以直接测试就可以。 2.1 用i2c-tools测试是否识别到rtc 安装软件: i

    ​​香橙派4开发板采用瑞芯微RK3399芯片,4G内存+16GB emmc存储,支持双频wifi和千兆网口,有mini PCIE接口,支持双路摄像头同时输入,支持四路显示,可配置任意两路同时输出,支持双频异显。具体的功能模块和硬件参数特性可参看下图:

    本文将介绍香橙派4在linux系统下如何连接RTC时钟模块:

    1 硬件接线

    接线如下:


    2 功能测试

    因为内核已经有ds1307的驱动。所以直接测试就可以。

    2.1 用i2c-tools测试是否识别到rtc

    安装软件: i2c-tools,这样就可以用 i2cdetect 来检测设备上连接 i2c 设备

    sudo apt-get install i2c-tools

    这里用的是i2c2,连接好线之后,启动开发板,终端输入以下命令查看地址,

    i2cdetect -y 2

    已经探测到ds1307 设备,地址是0x68.

    执行命令添加rtc设备

    echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-2/new_device

     

    可以将上述命令写到/etc/rc.local文件里边,这样可以避免每次重新开机都要设置。

     

    可以看到生成了rtc1设备,rtc0是板载的rtc。

    root@orangepi4:~# ls /dev/rtc*                                                  

    /dev/rtc  /dev/rtc0  /dev/rtc1

     

    2.2 同步时间

    首先设置下时区

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

     

    设置当前时间

    如果系统接入了网络,会自动同步网络时间。

    也可自己设置正确的时间。

    date 080719482020.00

     

    将当前系统时间写入ds1307 rtc设备,因为hwclock默认指定的rtc是rtc0设备。

    所以需要用-f选项指定为rtc1.

    hwclock -w -f /dev/rtc1

     

    看是否写入成功

    hwclock -r -f /dev/rtc1

     

    如果没有出错。可以拔掉电源。再次上电开机。

     

    执行命令添加rtc设备

    echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-2/new_device

     

    将rtc的时间同步到系统

    hwclock -s -f /dev/rtc1

     

    使用date命令查看时间是否正确

    date

     

    3 开机自动同步时间

    在/etc/rc.local中添加以下内容(注意在exit 0之前)

    echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-2/new_device

    hwclock -s -f /dev/rtc1

     

    对于ubuntu18.04,请按照下面说明设置开机启动脚本

     

    4 ubuntu 18.04设置开机启动脚本

    对于ubuntu18.04,不能像ubuntu14.04或者ubuntu16.04一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.local重新发挥作用。

    4.1 建立rc-local.service文件

    sudo vi /etc/systemd/system/rc-local.service

     

    将下列内容复制进rc-local.service文件

    [Unit]

    Description=/etc/rc.local Compatibility

    ConditionPathExists=/etc/rc.local

     

    [Service]

    Type=forking

    ExecStart=/etc/rc.local start

    TimeoutSec=0

    StandardOutput=tty

    RemainAfterExit=yes

    SysVStartPriority=99

     

    [Install]

    WantedBy=multi-user.target

     

    4.2 创建文件rc.local  

    sudo vi /etc/rc.local

     

    将下列内容复制进rc.local文件

    #!/bin/sh -e

    #

    # rc.local

    #

    # This script is executed at the end of each multiuser runlevel.

    # Make sure that the script will "exit 0" on success or any other

    # value on error.

    #

    # In order to enable or disable this script just change the execution

    # bits.

    #

    # By default this script does nothing.


    exit 0

     

    4.3 给rc.local加上权限

    sudo chmod +x /etc/rc.local

     

    4.4 启用服务

    sudo systemctl enable rc-local

     

    4.5 启动服务并检查状态

    sudo systemctl start rc-local.service

    sudo systemctl status rc-local.service

     

    展开全文
  • 本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS...在这个扩展板上已经有一个DS1307 RTC实时时钟模块,它是I2C类的设备,首先我们需要修改树莓派的配置文件使能I2C,通过nano编辑器修改raspi-blacklist.c
  • 实时时钟(RTC)DS1307模块使用 本实例是关于如何在Arduino上使用DS1307实时时钟(RTC)模块。 您还可以针对其他类似模块(例如DS3231 RTC)参考本实例。 如上图所示,该模块已安装备用电池。 这样,即使在没有...
  • OpenWRT添加RTC时钟模块DS1307

    千次阅读 2015-08-04 23:55:56
    目的:意外断电重启后无需人工校时,为自动化脚本运行提供保障 准备: //环境:GL-INET v1路由器 //有关该路由器的详细...//TinyRTC模块DS1307 //需要四个脚:SDA,SCL,+3.3V,GND 1.增加内核对RTC模块的支持
  • 在本篇文章中,您将学习如何使用RTC DS1307模块和Arduino开发板制作一个提醒器。 什么是实时时钟? 实时时钟(Real Time Clock)或RTC是一个跟踪当前时间的系统,可用于需要保持准确时间的任何设备。 您还可以在不...
  • DS1302时钟模块介绍及与USRAT HMI通信

    千次阅读 2018-10-12 18:55:48
    一、DS1302时钟模块 现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟...
  • DS1307

    2019-09-20 05:56:45
    介绍 默认的树莓派是没有时钟模块的,这样每次重启系统后系统时间都是错误...下面介绍的时钟模块的型号为DS1307-F-S。 DS1307 是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通...
  • nodemcu 读写实时时钟DS1307 用lua

    千次阅读 2017-06-08 21:18:55
    下面以读写RTC DS1307为例nodemcu i2c标准例程地址 http://nodemcu.readthedocs.io/en/master/en/modules/i2c/#i2cread但是里面只介绍了怎么读写某个i2c设备的简单过程,并没有说如何读写i2c设备中的某个地址。...
  •   现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话、传真、便携式仪器等产品领域。在本实验中,我们将使用DS1302实时时钟(RTC)模块获取当前...
  • http://www.pjrc.com/teensy/td_libs_DS1307RTC.html 下载相关的库程序 连接: DS1306: 1.... 读取: #include <Wire.h> #include <Time.h>...DS1307RTC.h> 在setup里执行读取 setS...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

ds1307时钟模块