前几天之前diy的定时自动浇花器被阳光晒炸了,这次除了加强外壳之外,打算把芯片由Digispark换成ESP8266,增加外部更新定时器的功能,一开始打算使用timeAlarms
,结果出现一些列报错,后来替换为adafruit出品的RTClib
就OK了,可是这样稍微麻烦一点的是就得自己设置定时了,还好,ESP8266有ticker
中断,把要定的时间写入eeprom
,然后中断定时比对就行了。
顺便比较一下各种时钟模块:
名称 | 接口 | 兼容库 | 精确度 | 电压 |
---|---|---|---|---|
DS1302: | 3 wire | RTClib | 一个月飘几分钟 | 双供电,没研究 |
DS1307: | I2C | RTClib/TinyRTClib/timeAlarms | 一个月飘几分钟 | 5v |
DS3231: | I2C | RTClib | 非常,因为内部有温度补偿 | 3.3--5.5V |
总结:
- DS3231: 性能上最好,但是Digispark没库不好用,Arduino,ESP8266及相关芯片3~5v都可以,适用面算宽了;
- DS1307: 最广泛,就是有点飘,如果用到3.3v的芯片上电压要改;
- DS1302: 嗯,虽然只要三根线,有点类似SPI,但供电看起来还需要找专门库设置充电,没研究过还是算了。
以后会在本文记录arduinoIDE开发环境下,适合不同模块的优质library,毕竟Arduino 的优势就是库,可以避免重复造轮子。
今天先写第一条:
Arduino IDE优选库及对应芯片
功能 | ESP8266系列 | Arduino系列 | Digispark系列 |
---|---|---|---|
时钟: | RTClib https://github.com/adafruit/RTClib | RTC1037 | TinyRTClib 无需下载,新版自带 |
中断: | ticker | MsTimer2 |