数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 107|回复: 0

[Arduino] AI编程玩一元钱的ESP32-C2模块【3】——前两篇综合

[复制链接]
发表于 昨天 10:11 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
上一篇:AI编程玩一元钱的ESP32-C2模块【2】——创建AP热点https://www.mydigit.cn/forum.php?mod=viewthread&tid=533494&fromuid=1505079(出处: 数码之家)
测试了建立热点AP,可以通过手机为本模块配置wifi联网,本篇是将前两篇测试目标综合起来的测试,就是模块上电后如果通过内部保存的wifi联网信息可以正常的链接网络,则获取时间数据发送到串口显示出来,如果联网失败则释放出一个热点AP,手机连接这个热点AP后可在手机中输入wifi名称、密码使模块重新联网,这个功能一般用于家里的路由器换新,wifi名称、密码更换的场景。
AI生成的代码如下:

  1. #include <WiFi.h>
  2. #include <WiFiManager.h>
  3. #include <time.h>
  4. // 定义NTP服务器和时区配置
  5. const char* ntpServer = "pool.ntp.org";
  6. const long gmtOffset_sec = 8 * 3600;
  7. const int daylightOffset_sec = 0;   
  8. // 创建WiFiManager实例
  9. WiFiManager wifiManager;
  10. void setup() {
  11.   // 初始化串口
  12.   Serial.begin(115200);
  13.   while (!Serial); // 等待串口连接
  14.   Serial.println("ESP32C2 NTP时间获取示例(使用WiFiManager)");
  15.   // 配置WiFiManager  
  16.   // 尝试自动连接WiFi:
  17.   // - 若之前保存过WiFi配置,会自动连接;
  18.   // - 若未保存/连接失败,会创建名为「ESP32C2_AP」的AP
  19.   bool isWiFiConnected = wifiManager.autoConnect("ESP32C2_AP");
  20.   if (isWiFiConnected) {
  21.     // WiFi连接成功:初始化NTP客户端,准备获取实时时间
  22.     Serial.println("WiFi连接成功,开始初始化NTP客户端...");
  23.   } else {
  24.     // WiFi自动连接失败:提示用户连接AP热点进行WiFi配置
  25.     Serial.println("WiFi自动连接失败,已创建AP热点「ESP32C2_AP」,请手机连接后配置WiFi");
  26.   }
  27.   // 配置并初始化NTP客户端
  28.   configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);  
  29.   // 等待NTP时间同步
  30.   Serial.println("等待NTP时间同步...");
  31.   struct tm timeinfo;
  32.   while (!getLocalTime(&timeinfo)) {
  33.     Serial.print(".");
  34.     delay(1000);
  35.   }
  36.   Serial.println("\nNTP时间同步成功");
  37. }
  38. void loop() {
  39.   // 获取当前时间
  40.   struct tm timeinfo;
  41.   if (!getLocalTime(&timeinfo)) {
  42.     Serial.println("获取时间失败");
  43.     return;
  44.   }
  45.   // 格式化并打印时间到串口
  46.   char timeString[64];
  47.   strftime(timeString, sizeof(timeString), "%Y-%m-%d %H:%M:%S", &timeinfo);
  48.   Serial.println(timeString);
  49.   // 每5秒更新一次
  50.   delay(5000);
  51. }
复制代码



您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-12 14:57 , Processed in 0.109200 second(s), 7 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表