物联网AI MicroPython传感器学习 之 RTC时钟模块

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。
物联网AI MicroPython传感器学习 之 RTC时钟模块_第1张图片
DS1302 与单片机之间能简单地采用同步串行的方式进行通信,只需要三个数据线:
(1)RST 复位
(2)I/O 数据线
(3)SCLK串行时钟

引脚定义

  • VCC:3.3V
  • GND:地
  • CLK:时钟输出
  • DAT:数据输入输出
  • RST:复位引脚

二、技术参数

  • 工作电压:2V-5.5V
  • 接口简单:GPIO三线接口
  • 工作温度:-40°C~85°C
  • 低功耗:工作电压2V,电流300nA
  • 电源供应:支持主电源和备份电源
  • 电路板尺寸:4.4cm*2.3cm

三、软件接口

DS1302(o_clk, o_rst, dio_num) - 创建RTC时钟对象

  • 函数原型

ds1302Obj = DS1302(o_clk, o_rst, dio_num)

  • 参数说明
参数 类型 必选参数? 说明
o_clk Pin 传入Pin对象
o_rst Pin 传入Pin对象
dio_num Pin num 传入Pin Num数
  • 返回值

DS1302对象成功,返回DS1302对象;DS1302对象创建失败,抛出Exception

  • 示例代码-无回调函数
from machine import Pin
import ds1302

gpiodionum = 18
gpioclk = Pin(16 , Pin.OUT , Pin.PULL_DOWN)
gpiorst = Pin(17 , Pin.OUT , Pin.PULL_DOWN)
ds1302_obj = ds1302.DS1302(gpioclk,gpiorst,gpiodionum)
print('start init ds1302')
  • 输出
start init ds1302

setDatetime() - 设置RTC时钟信息

  • 函数功能:

设置RTC时钟信息

  • 函数原型:

DS1302.setDatetime(data)

  • 参数说明:

data日期格式分别为:年-月-日-时-分-秒-星期

  • 返回值:

getDatetime() - 获取RTC时钟信息

  • 函数功能:

获取RTC时钟信息

  • 函数原型:

data = DS1302.getDatetime()

  • 参数说明:

  • 返回值:

成功返回data日期格式分别为:年-月-日-时-分-秒-星期

  • 示例:
from machine import Pin
import ds1302

gpiodionum = 18
gpioclk = Pin(16 , Pin.OUT , Pin.PULL_DOWN)
gpiorst = Pin(17 , Pin.OUT , Pin.PULL_DOWN)
ds1302_obj = ds1302.DS1302(gpioclk,gpiorst,gpiodionum)
print('start init ds1302')
ds1302_obj.getDatetime([2023, 6, 13 , 0, 0, 30, 1])
print(ds1302_obj.getDatetime())
  • 输出
start init ds1302
[2023, 6, 13, 0, 0, 31, 1]

四、接口案例

  • 案例代码
import utime   # 延时函数在utime库中
from machine import Pin
import ds1302

ds1302_obj = None

def ds1302_init():
    gpiodionum = 18
    gpioclk = Pin(16 , Pin.OUT , Pin.PULL_DOWN)
    gpiorst = Pin(17 , Pin.OUT , Pin.PULL_DOWN)
    ds1302_obj = ds1302.DS1302(gpioclk,gpiorst,gpiodionum)
    print('start init ds1302')

if __name__ == '__main__':
    ds1302_init()
    ds1302_obj.setDatetime([2023, 6, 13 , 0, 0, 30, 1])
    while True:
        print(ds1302_obj.getDatetime())
        utime.sleep(1)
  • 输出
start init ds1302
[2023, 6, 13, 0, 0, 31, 1]
[2023, 6, 13, 0, 0, 32, 1]
[2023, 6, 13, 0, 0, 33, 1]
[2023, 6, 13, 0, 0, 34, 1]
[2023, 6, 13, 0, 0, 35, 1]
[2023, 6, 13, 0, 0, 36, 1]

参考文献及购买链接

[1] RTC时钟模块购买链接

你可能感兴趣的:(物联网传感器,物联网,人工智能,学习,嵌入式硬件,python)