ESP32内置了WIFI模块连接WIFI非常简单方便。

代码如下:

#include <WiFi.h>

const char* ssid = "WIFI名称";
const char* password = "WIFI密码"; void setup()
{
Serial.begin(115200);
WiFi.begin(ssid,password);
while(WiFi.status() != WL_CONNECTED){
// statement
delay(500);
Serial.println("Connecting to WiFi...");
} Serial.println("Connected to the WiFi network"); } void loop()
{ }

本次分享的是在OLED屏上显示当前时间的案例。

需要用到NTPClient。

需要先安装一下这个库。

NTPClient 是一个客户端程序,它使用网络时间协议(NTP)从网络时间服务器获取当前时间。

网络时间协议(NTP):NTP 是一个互联网协议,用于在计算机系统之间同步时钟。

NTPClient timeClient(ntpUDP, "pool.ntp.org", 28800, 60000); // GMT+8 时区, 更新间隔 60 秒
  • pool.ntp.org 是一个公共 NTP 服务器池,它会将您的请求重定向到附近的 NTP 服务器。 这是一个方便且常用的选择,因为您不需要选择特定的 NTP 服务器。
  • 28800: 这是一个整数,表示时区偏移量,单位为秒。 在本例中,28800 秒等于 8 小时 (28800 / 3600 = 8)。 这表明代码被配置为使用 GMT+8 时区,例如中国标准时间 (CST)。
  • 60000: 这是一个整数,表示时间更新的间隔,单位为毫秒。 在本例中,60000 毫秒等于 60 秒。 这意味着 timeClient 对象配置为每 60 秒从 NTP 服务器更新一次时间。

还需要安装一个Time库。

Arduino 环境中,Time是一个轻量级的库,主要用于处理 时间戳和 日期时间的计算、格式化和同步。

全部代码如下:

#include <U8g2lib.h>
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
// WiFi 设置
const char* ssid = "TP-LINK_C5A2";
const char* password = "15750849198yy";
// NTP 设置
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 28800, 60000); // GMT+8, 60秒更新一次
// OLED 设置
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /*SCL=*/0, /*SDA=*/1, /*RESET=*/U8X8_PIN_NONE);
void setup() {
Serial.begin(115200); // 初始化 OLED
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 连接 WiFi
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
// 初始化 NTP
timeClient.begin();
while (!timeClient.update()) {
delay(500);
Serial.print(".");
}
setTime(timeClient.getEpochTime());
Serial.println("NTP time synced");
}
void loop() {
static unsigned long lastNtpUpdate = 0;
unsigned long now = millis();
// 每分钟同步一次 NTP 时间
if (now - lastNtpUpdate >= 60000) {
timeClient.update();
setTime(timeClient.getEpochTime());
lastNtpUpdate = now;
}
// 获取当前时间
time_t t = now();
char timeStr[20]; // 足够存储 "2023年12月31日 23:59:59" // 格式化时间字符串
snprintf(timeStr, sizeof(timeStr),
"%04d年%02d月%02d日 %02d:%02d:%02d",
year(t), month(t), day(t),
hour(t), minute(t), second(t));
// 显示时间
u8g2.clearBuffer();
u8g2.setCursor(0, (32 + u8g2.getMaxCharHeight()) / 2);
u8g2.print(timeStr);
u8g2.sendBuffer(); delay(200); // 适当降低刷新率以减少闪烁
}

效果:

ESP32+Arduino入门(三):连接WIFI获取当前时间的更多相关文章

  1. esp8266(3) Arduino通过ESP8266连接和获取网站源代码

    http://www.plclive.com/a/tongxinjiekou/2016/0422/374.html 在上一篇8266的基础上,这一篇做个具体的连接网站的例子,供大家参考.上一篇基础篇请 ...

  2. ESP32省电模式连接WIFI笔记

    基于ESP-IDF4.1版本 main.c文件如下: #include <string.h> #include "freertos/FreeRTOS.h" #inclu ...

  3. Swift3 获取当前连接WIFI名称

    1.导入库 import SystemConfiguration import SystemConfiguration.CaptiveNetwork 2.方法 /// 获取wifi名称 /// /// ...

  4. 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器

    https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究   选择3 ...

  5. 【Android开发—智能家居系列】(三):手机连接WIFI模块

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 概述 实现连接WIFI的功能会用到一个工具类,源码可以点击链接下载.网上这些类似的工具类里的代码差不多是一样的.连接无线网主要有 ...

  6. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

  7. Android 连接Wifi和创建Wifi热点 demo

    android的热点功能不可见,用了反射的技术搞定之外. Eclipse设置语言为utf-8才能查看中文注释 上代码: MainActivity.java package com.widget.hot ...

  8. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...

  9. IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...

  10. 手机连接wifi自动弹窗的原理及其实现方案

    一.手机连上wifi后会自动弹窗的原理 生活中,有很多需要认证的路由器,手机连接wifi热点后会自动弹出一个网页,让用户输入账号和密码,比如星巴克,肯地基,麦当劳,甚至是火车站和机场的候车室.其实这是 ...

随机推荐

  1. 详解 IntelliJ IDEA 配置和启动maven项目步骤

    一 .从svn中检出web项目: 1.如果是maven项目:首先配置仓库 2.从svn中检出maven项目: 3.检查项目是否是maven项目,如果不是转化成maven,然后点击,更新jar 二.配置 ...

  2. matlib:图像旋转-缩放

    需求 使用MATLAB尝试完成一个自定义的图像攻击软件,功能描述: 1)根据输入参数,完成旋转功能 2)根据输入参数,完成缩放功能 开始 旋转 参数:参数为正,顺时针旋转:参数为负,逆时针旋转 主要代 ...

  3. mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处理

    周末突然接到一位一年多没联系的妹妹打来电话,"刘哥,快来救救我",我脑海瞬间冒出妙瓦底,电信火苲马扁.....,当时就冒汗了,心想这个妹子怎么被... 问其原由,原来是他们公司服务 ...

  4. 注册全局组件(H5) 任意页面使用

    在view下创建components文件夹. 在components下创建文件夹base. base文件夹是用来存放 基础组件的. 比如说页面中很多处都在使用的公共组件 如你需要自定义的按钮 在com ...

  5. 从一指禅到无重复字符:最长子串问题的优雅解法|LeetCode 3 无重复字符的最长子串

    LeetCode 3 无重复字符的最长子串 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 你是否玩过"一指禅"游戏?就是沿 ...

  6. 一键部署,玩转AI!天翼云Llama 3大模型学习机来了!

    近日,Meta公司发布了其最新研发成果--开源大模型Llama 3,共包含Llama 3 8B和Llama 3 70B两种规格,参数量级分别为80亿与700亿,并表示这是目前同体量下性能最好的开源模型 ...

  7. Python无网络安装插件

    无网络安装插件 1.准备外网电脑,搭建所需python插件 2.将需要导出的插件,导出列表 pip freeze > .\req.txt 3.将插件导出到目录 pip download -r . ...

  8. Featurewiz-Polars:一种强大且可扩展的特征选择解决方案,适用于XGBoost

    前言:"Featurewiz-Polars"是一个用于特征工程的 Python 库,结合了特征选择和特征生成的功能.它基于"Polars",这是一个高性能的 D ...

  9. 【攻防世界】wife_wife

    wife_wife 题目来源 攻防世界 NO.GFSJ1192 题解 本题没有源码,也没有提示,非常困难,在网上搜索此题可以看到源码.由于使用了assign(),因此存在Javascript原型链污染 ...

  10. sql---一条sql查询语句是如何查询的、更新的

    mysql分为server层和层存储引擎层 类型:InnoDB.MyISAM 查询过程 连接器:与客户端建立连接.获得权限.维持和管理命令 查询缓存:弊大于利,在8.0之后已去除 分析器:对sql语法 ...