ESP32使用PCF8563时钟模块进行网络校时
关于PCF8563时钟模块的介绍
最近在做基于 esp32的点阵时钟,需要对时钟模块进行选择,现在用的最多的莫过于DS3231,这个模块的特点是高精度,价格大概8元左右,但用为一个追求极致的创客来说,选择最具备性价比的元件组合出最好的作品是每一个创客的终极目标,在头条上一次偶然的机会看到了飞利浦 公司的PCF8563芯片,于是乎在某宝里查了一下价格,惊喜的发现只有2元,本着实践出真知的原则,采购了一大堆元件,这其中就包括DS3231和PCF8563,那废话不多说,两个东西首先在体积上就不一样,DS3231明显大了一圈,因为PCF8563我买的是排针不焊接的版本,所以一直到今天才焊接上开始调试,让我们来体验这款高性比的产品吧。
接线
关于esp32的开发环境在这里就不再赘述,不懂的同学请自行百度搜索,我目前是使用arduino ide来进行esp32的程序开发,后续将转战vscode平台用platformio进行开发,貌似编译速度以及编程体验度都有大幅提高。那言归正传,首先让大家了解一下PCF8563长什么样:
PCF8563 是PHILIPS 公司推出的一款工业级内含I2C总线接口功能的具有极低功耗的多功能时钟/日历芯片。PCF8563 的多种报警功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定时服务,甚至可为单片机提供看门狗功能。是一款性价比极高的时钟芯片,它已被广泛用于电表、水表、气表、电话、传真机、便携式仪器以及电池供电的仪器仪表等产品领域。
我们可以看到PCF8563有6个针脚,其中SDA和SCL以及VSS、GND是必要的。细心的同学可能通过上图看到了晶振,对,这个晶振保持这款芯片稳定、准确的走时,配合这个价格,真是良心产品。好下面我们将这四个针脚连接esp32的GPIO口,接线如下:
针脚 | ESP对应IO |
---|---|
SDA | D21 |
SCL | D22 |
VCC | 3V3 |
GND | GND |
下载Arduino的PCF8563库
这里我们下载I2C_BM8563库:
上代码
下载完成之后我们可以在示例中看到这个时钟模块的各种用法,我将示例代码作了本地化的修改,主要是采用了中国的时区,替换了阿里云的校时服务器,除此以个将校时封闭成了独立函数,下面上代码:
#include "I2C_BM8563.h"
#include <WiFi.h>
// RTC BM8563 I2C port
// I2C pin definition for M5Stick & M5Stick Plus & M5Stack Core2
#define BM8563_I2C_SDA 21
#define BM8563_I2C_SCL 22
// I2C pin definition for M5Stack TimerCam
// #define BM8563_I2C_SDA 12