ESP8266-01S 代码实现:连接 WiFi、HTTP 请求和定时任务

本代码示例展示了如何使用 ESP8266-01S 连接到 WiFi 网络,并通过 HTTP 请求与服务器交互,以及设置定时任务,在特定时间输出信息到串口。

功能:

  1. 连接 WiFi 网络,SSID: '7-4',密码: '120712071207',并在循环中判断连接状态,失败则重新连接。
  2. 当串口检测到输入为 'X2' 或者 'X3' 时,使用 GET 方式访问 https://xizhi.qqoq.net/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=1%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4 或者 https://xizhi.qqoq.net/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=2%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4。
  3. 循环访问 http://tool.liumang.one/time/m.php 获取当前小时。
  4. 如果当前小时为 23 点,则向串口输出两次 'O',在整个 23 点之间,只输出两次内容。

代码:

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid = "7-4";
const char* password = "120712071207";
const char* server = "https://xizhi.qqoq.net";
const char* endpoint1 = "/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=1%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4";
const char* endpoint2 = "/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=2%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4";
const char* timeServer = "http://tool.liumang.one/time/m.php";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("WiFi connected");
}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("WiFi connection lost. Reconnecting...");
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
      delay(1000);
      Serial.println("Connecting to WiFi...");
    }
    Serial.println("WiFi reconnected");
  }

  if (Serial.available() > 0) {
    String input = Serial.readStringUntil('
');
    if (input == "X2") {
      sendRequest(server, endpoint1);
    }
    else if (input == "X3") {
      sendRequest(server, endpoint2);
    }
  }

  String currentTime = getTime();
  int currentHour = currentTime.toInt();
  if (currentHour == 23) {
    static int outputCount = 0;
    if (outputCount < 2) {
      Serial.print("O");
      outputCount++;
    }
  }
  else {
    static int outputCount = 0;
    outputCount = 0; // Reset output count
  }

  delay(1000);
}

void sendRequest(const char* server, const char* endpoint) {
  HTTPClient http;
  http.begin(server, endpoint);
  int httpResponseCode = http.GET();
  if (httpResponseCode == 200) {
    Serial.println("Request sent successfully");
  }
  else {
    Serial.print("Error sending request. HTTP error code: ");
    Serial.println(httpResponseCode);
  }
  http.end();
}

String getTime() {
  WiFiClient client;
  HTTPClient http;
  String time = "";

  if (http.begin(client, timeServer)) {
    int httpResponseCode = http.GET();
    if (httpResponseCode == 200) {
      time = http.getString();
      Serial.print("Current time: ");
      Serial.println(time);
    }
    else {
      Serial.print("Error getting time. HTTP error code: ");
      Serial.println(httpResponseCode);
    }
    http.end();
  }
  return time;
}

注意:

  • 在使用此代码之前,你需要先安装 ESP8266 库(通过 Arduino 库管理器安装)和 HTTPClient 库。
  • 还需要将 ESP8266 连接到你的电脑,并将串口波特率设置为 115200。

相关知识:

  • ESP8266-01S 是一个基于 ESP8266 芯片的无线模块,支持 WiFi 连接和 HTTP 请求。
  • Arduino IDE 是一款开源的集成开发环境,用于编写和上传代码到 ESP8266-01S。
  • ESP8266WiFi 库提供了用于连接 WiFi 网络的功能。
  • ESP8266HTTPClient 库提供了用于发送 HTTP 请求的功能。
  • Serial 类提供了与串口通信的功能。

扩展阅读:

使用说明:

  1. 将代码复制到 Arduino IDE 中。
  2. 将 ESP8266 连接到电脑,并设置串口波特率为 115200。
  3. 上传代码到 ESP8266。
  4. 打开串口监视器,观察程序运行情况。

希望这个代码示例能帮助你更好地了解 ESP8266-01S 的使用方法,并完成你的项目开发。


原文地址: https://www.cveoy.top/t/topic/pmm7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录