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

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

3天内不再提示

基于ESP32的网络天气时钟 微服务器

jf_51322043 来源:jf_51322043 作者:jf_51322043 2024-10-08 11:49 次阅读

2024年国庆期间,假期无聊写的程序

wKgaomb_-GuAHKNXAAeykpPte1E708.png主界面 wKgaomb_-MaAFN5fAAS-QB8lFZI967.png

主程序

#include < Arduino.h >
#include "Backend_service.h"
#include "SMG_4.h"

void setup() {
    Serial.begin(115200);
    SMG_4_Init();  // 初始化数码管显示
    connectToWiFi();  // 连接Wi-Fi
    initOLED();  // 初始化 OLED

    // 初始化 NTP 客户端
    timeClient.begin();
    
    // 等待时间同步
    while(!timeClient.update()) {
        Serial.println("Waiting for NTP time sync...");
        delay(1000);  // 每秒钟检查一次
    }

    // 处理网页请求
    server.on("/", handleRoot);  // 处理根路径
    server.on("/setCity", handleSetCity); // 处理设置城市请求
    server.on("/time", handleTime);    // 处理时间请求
    server.on("/weather", handleWeather);  // 处理天气请求
    server.begin();  // 启动服务器
}

void loop() {
    static unsigned long lastWeatherUpdate = 0;  // 上一次天气刷新的时间
    static unsigned long lastTimeUpdate = 0;  // 上一次时间刷新的时间
    unsigned long currentMillis = millis();

    // 确保 NTP 客户端保持更新
    timeClient.update(); 

    // 获取当前时间的小时和分钟
    hours = timeClient.getHours();
    minutes = timeClient.getMinutes();

    // 每20s更新 OLED 上的时间
    if (currentMillis - lastTimeUpdate >= 10000) {  // 20s更新一次
        lastTimeUpdate = currentMillis;
        String timeString = String(hours) + ":" + (minutes < 10 ? "0" + String(minutes) : String(minutes));  // 格式化时间 (HH:MM)

        // 更新 OLED 显示时间和天气信息
        updateOLED(timeString, weatherEnglish, temp + "°C", WiFi.localIP().toString(),city);
    }

    // 每 20 分钟刷新一次天气信息
    if (currentMillis - lastWeatherUpdate >= 1200000) {  // 1200000 毫秒 = 20 分钟
        lastWeatherUpdate = currentMillis;

        // 调用获取天气数据的函数
        handleWeather();
    }
    
    // 显示当前时间的小时和分钟到数码管
    displayTime(hours, minutes);
    
    // 处理网页请求
    server.handleClient();
}

手机界面

wKgZomb_-WOAKewtAAd-hnlLI80841.png

实物图(实物--4led是采用中断实现)-- 手机相机拍摄会有频闪

wKgaomb_-aKAFBX_ACLaxG-_Zkk566.png

项目地址:

https://www.alipan.com/t/mcfNjbGrBJJX9AIxfa7I

审核编辑 黄宇

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

    关注

    17

    文章

    953

    浏览量

    17031
收藏 人收藏

    评论

    相关推荐

    京准电钟:NTP网络时钟服务器应用石油化工行业

    京准电钟:NTP网络时钟服务器应用石油化工行业
    的头像 发表于 10-24 16:01 118次阅读
    京准电钟:NTP<b class='flag-5'>网络</b><b class='flag-5'>时钟</b><b class='flag-5'>服务器</b>应用石油化工行业

    esp32用什么软件编程

    ESP32是一款由乐鑫(Espressif)推出的低功耗、高性能的Wi-Fi和蓝牙双模微控制,广泛应用于物联网、智能家居、智能穿戴等领域。要对ESP32进行编程,需要选择合适的编程软件和开发环境
    的头像 发表于 08-19 17:24 2617次阅读

    如何将多个ESP连接到一个ESP并向服务器发送数据?

    。 该站模式 ESP 连接了传感。所有这些站模式 esp 收集传感数据并将数据发送到主 esp, 这个主
    发表于 07-19 06:49

    ESP8266进入轻度睡眠模式后,有没有办法保持与服务器的连接?

    LightSleep的。我已经测试过了,我认为,客户端保持与 AP 的连接,但在进入轻度睡眠模式后,他与服务器断开连接。有没有办法保持与服务器的连接?
    发表于 07-16 07:52

    ESP为什么无法访问服务器

    ESP无法访问服务器??
    发表于 07-16 07:43

    ESP8266网络天气时钟OLED显示

    基于ESP8266实现网络获取天气时钟并OLED显示
    的头像 发表于 06-28 04:46 967次阅读
    <b class='flag-5'>ESP</b>8266<b class='flag-5'>网络</b><b class='flag-5'>天气</b><b class='flag-5'>时钟</b>OLED显示

    为什么在一些路由中使用ESP32的Active mode无法接收服务器的TCP数据呢?

    我们设置 AT+CIPRECVMODE=1(Passive mode),我们能够从服务器接收 TCP 数据。 请解释为什么在一些路由(如“Arris”)中使用 ESP32 中的 Active mode无法接收
    发表于 06-27 07:34

    安徽京准 | PLC时钟同步(NTP网络时间服务器)的重要性

    安徽京准、PLC时钟同步-ntp网络时间服务器的重要性
    的头像 发表于 06-19 10:38 427次阅读
    安徽京准 | PLC<b class='flag-5'>时钟</b>同步(NTP<b class='flag-5'>网络</b>时间<b class='flag-5'>服务器</b>)的重要性

    服务器端主动断开连接,esp32C3用TCP的send函数仍能发送成功返回字节数,为什么?

    服务器端主动断开连接esp32C3用TCP的send函数仍能发送成功返回字节数,但服务器端已经无法收到数据。为何还能发送成功?这里如何判断服务器已断开从而进行断线重连?
    发表于 06-13 07:16

    如何利用ESP32C3做UDP的服务器

    请教一下,我利用了ESP32C3 建立了Soft AP ,我想利用ESP32C3做UDP的服务器。热点的建立,参考例程都没有问题。关键是如何形成UDP的服务器。教程有教如何制作成TCP
    发表于 06-12 08:18

    ESP32使用HTTPS协议无法与服务器建立连接怎么解决?

    地址正常(使用其他工具验证能连接且能收到服务器返回的数据) 4、源码附在最后。 问题如下:1、参考此例程默认配置参数 .is_async = false,初始化时直接
    发表于 06-12 07:01

    请问ESP32-C3-WROOM-02模块基于小型MCU能否访问Linux服务器来获取数据?

    我想请问一下,ESP的WiFi模块中包含小型MCU,能不能基于此访问服务器获取相应数据,然后ESP32-C3-WROOM-02模块的无线数据收发,包括数据包拆解是如何进行的,有这方面的资料嘛,谢谢~
    发表于 06-07 07:49

    京准科技、大数据监控网络里的NTP时钟同步服务器应用

    京准科技、大数据网络监控系统里的NTP时钟同步服务器应用
    的头像 发表于 06-06 14:15 267次阅读

    NTP网络时钟同步服务器(授时服务器)的几种设置方法

    NTP网络时钟同步服务器(授时服务器)的几种设置方法
    的头像 发表于 04-29 11:28 7670次阅读
    NTP<b class='flag-5'>网络</b><b class='flag-5'>时钟</b>同步<b class='flag-5'>服务器</b>(授时<b class='flag-5'>服务器</b>)的几种设置方法

    【算能RADXA微服务器试用体验】Radxa Fogwise 1684X Mini 规格

    通过网络可以了解到,算能RADXA微服务器的具体规格: 处理:BM1684X 算力:高达32Tops INT8峰值算力 内存:16GB LPDDR4X 内存 存储:64GB eMMC 编程框架
    发表于 02-28 11:21