0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用ESP32在OLED上显示时间的方式

科技观察员 来源:circuitdigest 作者:里沙布·耆那教 2022-11-14 16:40 次阅读

在本教程中,我们将了解实时时钟 (RTC) 及其与 ESP32OLED 显示器的接口

我们将使用DS3231 RTC 模块来跟踪正确的时间,并使用 ESP32 作为我们的微控制器将其显示在 SPI OLED 上。ESP32 不仅仅是一个微控制器。它内部有Wi-Fi蓝牙芯片以及39个GPIO引脚。它支持所有通信协议,如SPI,I2CUART等。

什么是 RTC??

DS3231是RTC(实时时钟)模块。它用于维护大多数电子项目的日期和时间。该模块有自己的纽扣电池电源,即使主电源被移除或MCU经过硬复位,它也能保持日期和时间。因此,一旦我们在此模块中设置了日期和时间,它将始终跟踪它。RTC IC有几种类型可供选择,如DS1307、DS3231等。

pYYBAGNx_x2Ab33zAABklFhj4XI314.jpg

注意:首次使用此模块时,您必须设置日期和时间。您也可以使用RTC IC DS1307,我们之前将DS1307与Arduino一起使用。

了解OLED显示器:

术语OLED代表“有机发光二极管”,它使用与我们大多数电视中使用的相同技术,但与它们相比像素更少。拥有这些看起来很酷的显示模块真的很有趣,因为它会让我们的项目看起来很酷。


poYBAGNx_yCAGqS-AABOIi8OHNM838.jpg

pYYBAGNx_yKAWTO3AACPFjAo-nU476.jpg

我们使用单色 7 针 SSD1306 0.96 英寸 OLED 显示屏。选择此显示器的原因是它可以在三种不同的通信协议上工作,例如SPI 3线模式,SPI四线模式和IIC模式。本教程将介绍如何在SPI 4线模式下使用该模块,因为它是最快的通信模式,也是默认的通信模式。

引脚及其功能在下表中进行了说明。

引脚编号 引脚名称 其他名称 用法
1 格德 模块的接地引脚
2 Vdd 直流电,5V 电源引脚(可承受 3-5V 电压)
3 SCK D0,SCL,CLK 充当时钟引脚。用于 I2C 和 SPI
4 自主权评估 D1,莫西 模块的数据引脚。用于 IIC 和 SPI
5 RES RST,重置 重置模块(在 SPI 期间很有用)
6 直流 答0 数据命令引脚。用于 SPI 协议
7 .CS 芯片选择 在 SPI 协议下使用多个模块时很有用

在本教程中,我们将简单地在4-Wire SPI模式下操作模块,其余的将留给其他教程。

Arduino社区已经为我们提供了很多库,可以直接用于使它变得更加简单。我尝试了一些库,发现Adafruit_SSD1306库非常易于使用,并且有一些图形选项,因此我们将在本教程中使用相同的选项。但是,如果您的项目有内存/速度限制,请尝试使用 U8g 库,因为它运行速度更快且占用的程序内存更少。

所需材料:

ESP32

DS3231 RTC 模块

7 针 128×64 OLED 显示模块 (SSD1306)

公母线

面包板

电路图:

RTC3231与ESP板的连接电路图如下:

poYBAGNx_ySAVG3HAADvSXELoZM515.png

RTC DS3231 IC采用I2C通信模式。它具有SCL,SDA,Vcc和GND引脚。RTC 模块与 ESP32 的连接如下:

RTC 的标准与标准实验室 -> ESP32 的标准与标准实验室,即引脚 D22

RTC 的 SDA -> ESP32 的 SDA 即引脚 D21

RTC 的 GND -> ESP32 的 GND

RTC 的 Vcc -ESP32 的 > Vcc

在这里,我们使用SPI 模式将 128×64 OLED 显示模块 (SSD1306) 连接到 ESP32。因此,它将使用 7 个引脚。与 ESP32 的连接方式如下:

OLED 的 CS(片选)引脚 -ESP32 的 > 引脚 D5

OLED 的直流引脚 -ESP32 的 > 引脚 D4

OLED 的 RES 引脚 -ESP32 的 > 引脚 D2

OLED 的 SDA 引脚 -> 引脚 D23 即 ESP32 的 MOSI

OLED 的 SCK 引脚 -> 引脚 D18 即 ESP32 的 SCK

OLED 的 Vdd -ESP32 的 > Vcc

OLED 的 GND -ESP32 的 GND >

所以我们包含了所有的库

#include // for OLED display

#include // for I2C with RTC module

#include

#include // for display graphics

#include "RTClib.h" //to show time

然后定义OLED的所有引脚。您不需要为 RTC 模块定义引脚,因为这些引脚已在 WIRE 库中定义。

#define OLED_MOSI 23

#define OLED_CLK 18

#define OLED_DC 4

#define OLED_CS 5

#define OLED_RESET 2

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

在设置函数中,我们将调用一个函数rtc.adjust(DateTime(__DATE__,__TIME__)),它将根据我们的PC时间设置时间。

void setup()

{

Serial.begin(9600);

if (! rtc.begin()) {

Serial.println("Couldn't find RTC");

while (1);

}

rtc.adjust(DateTime(__DATE__, __TIME__));

之后,我们调用显示函数以在OLED上显示。

display.begin(SSD1306_SWITCHCAPVCC);

display.clearDisplay();

display.setTextColor(WHITE);

//display.startscrollright(0x00, 0x0F); // You can uncomment this line to scroll your text on oled

display.setTextSize(2);

display.setCursor(0,5);

display.print(" Clock "); //This will Display Clock on OLED for 3 seconds

display.display();

delay(3000);

}

最后在循环函数中,我们将时间存储在DateTime 现在预定义的变量中,并使用 setTextSize、setCursor 等显示函数显示时间。根据需要设置这些,并使用display.println功能在OLED上显示。

void loop()

{

DateTime now = rtc.now();

display.clearDisplay();

display.setTextSize(2);

display.setCursor(75,0);

display.println(now.second(), DEC);

因此,这就是您可以使用 ESP32 在 OLED上显示时间的方式,并且您知道 ESP 以其物联网功能而闻名,因此您可以使用它在互联网上发布时间。

#include

#include

#include

#include

#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

#define OLED_MOSI 23

#define OLED_CLK 18

#define OLED_DC 4

#define OLED_CS 5

#define OLED_RESET 2

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


void setup()

{


Serial.begin(9600);


if (! rtc.begin()) {

Serial.println("Couldn't find RTC");

while (1);

}


rtc.adjust(DateTime(__DATE__, __TIME__));

display.begin(SSD1306_SWITCHCAPVCC);

display.clearDisplay();

display.setTextColor(WHITE);

//display.startscrollright(0x00, 0x0F);

display.setTextSize(2);

display.setCursor(0,5);

display.print(" Clock ");

display.display();

delay(3000);

}


void loop()

{

DateTime now = rtc.now();


display.clearDisplay();

display.setTextSize(2);

display.setCursor(75,0);

display.println(now.second(), DEC);


display.setTextSize(2);

display.setCursor(25,0);

display.println(":");


display.setTextSize(2);

display.setCursor(65,0);

display.println(":");


display.setTextSize(2);

display.setCursor(40,0);

display.println(now.minute(), DEC);


display.setTextSize(2);

display.setCursor(0,0);

display.println(now.hour(), DEC);


display.setTextSize(1);

display.setCursor(0,15);

display.println(now.day(), DEC);

display.print(daysOfTheWeek[now.dayOfTheWeek()]);


display.setTextSize(1);

display.setCursor(25,15);

display.println("-");


display.setTextSize(1);

display.setCursor(40,15);

display.println(now.month(), DEC);


display.setTextSize(1);

display.setCursor(55,15);

display.println("-");


display.setTextSize(1);

display.setCursor(70,15);

display.println(now.year(), DEC);


display.display();

}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6181

    浏览量

    223841
  • 实时时钟
    +关注

    关注

    4

    文章

    240

    浏览量

    65692
  • RTC
    RTC
    +关注

    关注

    2

    文章

    529

    浏览量

    66313
  • ESP32
    +关注

    关注

    18

    文章

    958

    浏览量

    17096
收藏 人收藏

    评论

    相关推荐

    ESP32如何获取系统时间

    ESP8266里面可以通过 esp_get_time()函数 获取系统时间 ESP32
    发表于 02-17 07:45

    ESP32模组的主要特性

    WT-ESP32-DevKitC V4是一款基于ESP32的小型开发板,集WIFI+蓝牙方案于一体,板模组绝大部分管脚均已引出,开发人员可根据实际需求,轻松通过跳线连接多种外围器件,或将开发板直接
    发表于 11-04 14:54 3943次阅读

    ESP322.4寸彩屏的应用

    继上次的ESP321.54寸彩屏的应用外,还有哪些规格的彩屏同样可以被ESP32驱动呢?没错,2.4寸的彩屏同样可以!下图是2.4寸彩屏ESP3
    发表于 04-26 09:50 1869次阅读

    浅析ZephyrESP32的启动流程

    理解Zephyr一款soc的启动流程,有利于分析和调试开机过程卡死,驱动异常等的问题。因此在上手一款新的soc时掌握Zephyr在其上面的启动流程非常必要。本文对ZephyrESP32
    的头像 发表于 06-07 17:04 5198次阅读

    ESP32系列芯片的规格

    ESP32是一款2.4GHz Wi-Fi和蓝牙组合芯片,采用TSMC超低功耗40nm设计技术它旨在实现最佳功率和射频性能,显示出鲁棒性、多功能性和灵活性各种应用和电源场景中的可靠性。ESP3
    发表于 04-25 16:21 7次下载

    使用ESP8266从NTP服务器获取时间并在OLED显示显示

    本教程中,我们将使用 ESP8266 NodeMCU 从 NTP 服务器获取当前时间和日期,并将其显示
    的头像 发表于 09-01 16:09 1.9w次阅读
    使用<b class='flag-5'>ESP</b>8266从NTP服务器获取<b class='flag-5'>时间</b>并在<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>器<b class='flag-5'>上</b><b class='flag-5'>显示</b>

    使用Visuino DIY如何在M5StickC ESP32显示时间

    电子发烧友网站提供《使用Visuino DIY如何在M5StickC ESP32显示时间.zip》资料免费下载
    发表于 11-21 09:36 0次下载
    使用Visuino DIY如何在M5StickC <b class='flag-5'>ESP32</b><b class='flag-5'>上</b><b class='flag-5'>显示</b><b class='flag-5'>时间</b>

    带有ESP32OLED显示屏的Instagram追随者计数器

    电子发烧友网站提供《带有ESP32OLED显示屏的Instagram追随者计数器.zip》资料免费下载
    发表于 12-14 09:55 0次下载
    带有<b class='flag-5'>ESP32</b>和<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏的Instagram追随者计数器

    带GPS和OLED显示屏的ESP32开发板

    电子发烧友网站提供《带GPS和OLED显示屏的ESP32开发板.zip》资料免费下载
    发表于 12-28 09:43 2次下载
    带GPS和<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏的<b class='flag-5'>ESP32</b>开发板

    OLED显示屏的LoRa节点和3个带ESP32的继电器

    电子发烧友网站提供《带OLED显示屏的LoRa节点和3个带ESP32的继电器.zip》资料免费下载
    发表于 12-29 14:03 0次下载
    带<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏的LoRa节点和3个带<b class='flag-5'>ESP32</b>的继电器

    LoRa模块SX1278与ESP32结合使用的方法-

    任何给定城市的API请求天气数据,并将其发送到Arduino LoRa设置。然后Arduino LoRa将接收数据并将其显示LCD显示。因此E
    的头像 发表于 01-21 11:30 3542次阅读
    LoRa模块SX1278与<b class='flag-5'>ESP32</b>结合使用的方法-<b class='flag-5'>上</b>

    ESP8266或ESP32的WiFi Webradio

    电子发烧友网站提供《ESP8266或ESP32的WiFi Webradio.zip》资料免费下载
    发表于 06-13 11:38 1次下载
    <b class='flag-5'>ESP</b>8266或<b class='flag-5'>ESP32</b><b class='flag-5'>上</b>的WiFi Webradio

    如何使用VisuinoM5StickC ESP32显示文本

    电子发烧友网站提供《如何使用VisuinoM5StickC ESP32显示文本.zip》资料免费下载
    发表于 06-16 15:22 0次下载
    如何使用Visuino<b class='flag-5'>在</b>M5StickC <b class='flag-5'>ESP32</b><b class='flag-5'>上</b><b class='flag-5'>显示</b>文本

    MATRIX Voice ESP32开始使用蓝牙

    电子发烧友网站提供《MATRIX Voice ESP32开始使用蓝牙.zip》资料免费下载
    发表于 06-20 15:30 1次下载
    <b class='flag-5'>在</b>MATRIX Voice <b class='flag-5'>ESP32</b><b class='flag-5'>上</b>开始使用蓝牙

    ESP Wemos D1 OLED显示CPU时间

    电子发烧友网站提供《ESP Wemos D1 OLED显示CPU时间.zip》资料免费下载
    发表于 06-29 14:39 0次下载
    <b class='flag-5'>在</b><b class='flag-5'>ESP</b> Wemos D1 <b class='flag-5'>OLED</b><b class='flag-5'>上</b><b class='flag-5'>显示</b>CPU<b class='flag-5'>时间</b>