18884浏览
查看: 18884|回复: 5

micropython学习笔记之RTC时钟模块(DS3231)

[复制链接]
本帖最后由 沧海笑 于 2017-9-2 21:32 编辑

【内容】micropython学习笔记之RTC时钟模块(DS3231
【时间】2017-09-02

【本期主要玩法】
  刚开始接触mpy时就打算用萤火虫的点阵模块做一个时钟,可惜当时手里只有DS1302模块,一直和mpy调试不成功。这次入手几块时钟模块,其中就有DS3231,大家可以自行百度,大名鼎鼎。树莓派也有大把的教程说的就是这个模块。
   我们现在用df的萤火虫esp32以及一块pyb1.1开发板一起试试这个时钟吧。

  和pyb1.1+oled结合是这样的效果:
micropython学习笔记之RTC时钟模块(DS3231)图1
micropython学习笔记之RTC时钟模块(DS3231)图2

【硬件】
2、pyb v1.1开发板 1块
3、ds3231 时钟模块 1块(I2C接口)
4.oled ssd1306屏 1块(I2C接口)
5、杜邦线若干
6、小面包板 、萤火虫接线扩展板 各一块
【软件】
  
  
软件
出品或借鉴的原帖
1
upy ide 0.26
Dfrobot
2
uRTC
adafruit.com
3
DS3231
http://www.cnblogs.com/xiaowuyi/    借鉴原帖:小五义
4
Ssd1306
adafruit.com
【接线】
  
  
DS3231
1
VCC
VCC(3v3)
2
GND
GND
3
SCL
SCL
4
SDA
SDA



PYB1.1
  
  
PYB1.1
DS3231
1
I2C1(VCC)
DS3231--VCC(3v3)
2
I2C1(GND)
DS3231--GND
3
I2C1(SCL) --X9
DS3231--SCL
4
I2C1(SDA)--X10
DS3231--SDA
5
I2C2(VCC)
OLED- VCC(3v3)
6
I2C2(GND)
OLED-GND
7
I2C2(SCL) --Y9
OLED-SCL
8
I2C2(SDA)--Y10
OLED-SDA


代码:
[mw_shl_code=python,true]#DS323模块+esp32
#datetime:2017-09-01
#

import urtc from machine import I2C, Pin #声明I2C
i2c = I2C(scl=Pin(22), sda=Pin(21)) rtc = urtc.DS3231(i2c)

#设置时间,然后DS3231记忆
#此句运行一次即可
#datetime = urtc.datetime_tuple(year=2017, month=9, day=1, weekday=None,
#hour=23, minute=26, second=30, millisecond=0)
#rtc.datetime(datetime)

datetime1 = rtc.datetime()
print(datetime1.year)
print(datetime1.month)
print(datetime1.day)
print(datetime1.weekday)
print(datetime1.hour)
print(datetime1.minute)
print(datetime1.second)
[/mw_shl_code]

pyb1.1
[mw_shl_code=python,true]import pyb
from pyb import I2C
import ssd1306
import time
from DS3231 import DS3231  
ds=DS3231(1) #DS3231 IIC 1
i2c2=pyb.I2C(2,pyb.I2C.MASTER,baudrate=100000) # OLED IIC 2
lcd=ssd1306.SSD1306_I2C(128,64,i2c2)
str_time =' '
        
while 1:
  lcd.fill(0)
  lcd.show()
  #time.sleep(0.5)
  lcd.text("TIME:",4,16)
  t=ds.TIME()
  str_time=str(t[0])+":"+str(t[1])+":"+str(t[2])
  lcd.text(str_time,44,16)
  
  lcd.show()
  time.sleep(3)
[/mw_shl_code]

【关于Pyb1.1的固件以及烧写】
pyb1.1调试中遇到一个小插曲,出厂默认的固件可能版本比较旧,内容有裁剪,str()居然都调试出错。经过僵师兄提醒指点,从micropython.org下载了最新的固件 for pyb1.1
注意几个问题:
一是版本很多,有标准版,有线程版还有网路版等,我选择了线程版,希望以后玩玩线程。
二是关于烧写,网上教程很多,大多是相互借鉴的。我的理解和教程不太一样,建议先识别出DFU 烧写模式,具体步骤是,插上板子---短接boot0(x17)以及3v3-----rst----看设备管理器是不是识别出了新端口,然后配置驱动,只有这样,才有可能在运行dfuse demo版时,进入烧写程序。官方教程只给出了1.0版的板子,我亲测1.1也是这样做的。

国内还有一个教程说是拉低boot0,这个是不对的。
micropython学习笔记之RTC时钟模块(DS3231)图3
【小结】
  DS3231模块是重要、通用的时钟模块,在此之上,可以用很多好玩的应用,比如图形化的时钟,定时运行的功能等,希望大家一起挖掘吧。
  感谢僵大懒师兄,感谢小五义师兄,感谢dfrobot以及micropython.org。如果大家有DS3231库的确切出处,希望能够跟帖,我及时修正并致谢。
  沧海抱拳!
【附件】
uRTC以及DS3231库

q2017  见习技师

发表于 2017-9-15 14:16:40

谢谢分享.................................
回复

使用道具 举报

vickywong  初级技师

发表于 2017-9-27 19:22:10

沧海老师好!
回复

使用道具 举报

沧海笑  高级技师
 楼主|
来自手机

发表于 2017-10-5 20:53:26

vickywong 发表于 2017-9-27 19:22
沧海老师好!

哈哈,老战友啦,多指教。也开始玩mpy了吗,加油
回复

使用道具 举报

DFSyR0EoKlI  学徒

发表于 2020-1-13 16:06:25

学习学习
回复

使用道具 举报

auzn  见习技师

发表于 2020-4-12 09:56:25

学习学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail