沧海笑 发表于 2017-9-2 21:29:31

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结合是这样的效果:


【硬件】1、FireBeetleBoard-ESP321块2、pyb v1.1开发板 1块3、ds3231 时钟模块 1块(I2C接口)4.oled ssd1306屏 1块(I2C接口)5、杜邦线若干6、小面包板 、萤火虫接线扩展板 各一块【软件】

软件出品或借鉴的原帖
1upy ide 0.26Dfrobot
2uRTC库adafruit.com
3DS3231库http://www.cnblogs.com/xiaowuyi/    借鉴原帖:小五义
4Ssd1306库adafruit.com
【接线】FireBeetleBoard-ESP32

FireBeetleBoard-ESP32 DS3231
1VCCVCC(3v3)
2GNDGND
3SCLSCL
4SDASDA




PYB1.1

PYB1.1DS3231
1I2C1(VCC)DS3231--VCC(3v3)
2I2C1(GND)DS3231--GND
3I2C1(SCL) --X9DS3231--SCL
4I2C1(SDA)--X10DS3231--SDA
5I2C2(VCC)OLED- VCC(3v3)
6I2C2(GND)OLED-GND
7I2C2(SCL) --Y9OLED-SCL
8I2C2(SDA)--Y10OLED-SDA


代码:#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)


pyb1.1import 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)+":"+str(t)+":"+str(t)
lcd.text(str_time,44,16)

lcd.show()
time.sleep(3)


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

学习学习学习
页: [1]
查看完整版本: micropython学习笔记之RTC时钟模块(DS3231)