18628| 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结合是这样的效果: 【硬件】 2、pyb v1.1开发板 1块 3、ds3231 时钟模块 1块(I2C接口) 4.oled ssd1306屏 1块(I2C接口) 5、杜邦线若干 6、小面包板 、萤火虫接线扩展板 各一块 【软件】
【接线】
PYB1.1
代码: [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,这个是不对的。 【小结】 DS3231模块是重要、通用的时钟模块,在此之上,可以用很多好玩的应用,比如图形化的时钟,定时运行的功能等,希望大家一起挖掘吧。 感谢僵大懒师兄,感谢小五义师兄,感谢dfrobot以及micropython.org。如果大家有DS3231库的确切出处,希望能够跟帖,我及时修正并致谢。 沧海抱拳! 【附件】 uRTC以及DS3231库 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed