单片机esp32 基础调试 联网fetch http.begin(targetUrl);

发布于:2025-09-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

https://www.bilibili.com/video/BV1RM4y1a7J5

设置中文

工具-》端口

上传

为什么波特率是 115200?它对吗?

115200 是 ESP32 最常用的串口波特率,也是你代码中设置的:


cpp

深色版本

Serial.begin(115200);

请求我的网站也是ok的

✅ 二、如果你是想“停止 ESP32 的程序运行

方法 1:物理断电(最直接)

  • 拔掉 USB 线 → 板子断电 → 程序停止
  • 重新插上 → 程序从头开始运行

方法 2:上传一个空程序(让板子“什么都不做”)


cpp

深色版本

void setup() {
  // 什么都不做
}

void loop() {
  // 什么都不做
  delay(1000);
}

灯在gp22旁边

#include <WiFi.h>
#include <HTTPClient.h>

const int LED_PIN = 22;

// Wi-Fi 配置
const char* ssid = "外街路5号";
const char* password = "12345678";

// 目标服务器地址
//const char* targetUrl = "http://httpbin.org/get";
const char* targetUrl ="http://ns3.llmfindworksnjsgcs.fwh.is/health";
void setup() {
  // 初始化串口,115200 波特率
  Serial.begin(115200);
  while (!Serial) {
    delay(10); // 等待串口监视器打开(某些板子需要)
  }

  Serial.println(F("【ESP32 启动中】================================="));
  Serial.printf("Wi-Fi 名称: %s\n", ssid);
  Serial.println(F("正在尝试连接 Wi-Fi..."));

  // 设置 LED 引脚
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH); // 熄灭(低电平点亮,所以 HIGH 是灭)

  // 开始连接 Wi-Fi
  WiFi.begin(ssid, password);

  int retry = 0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // 快闪表示正在连

    Serial.print(F(".")); // 打印点,表示还在努力
    retry++;
    if (retry % 20 == 0) {
      Serial.printf(F(" 已尝试 %d 秒...\n"), retry / 4);
    }
  }

  // 连接成功
  digitalWrite(LED_PIN, HIGH);   // 熄灭
  delay(100);
  digitalWrite(LED_PIN, LOW);    // 闪一下表示成功
  delay(200);
  digitalWrite(LED_PIN, HIGH);

  Serial.println(F("\n【恭喜!Wi-Fi 连接成功】========================"));
  Serial.printf("IP 地址: %s\n", WiFi.localIP().toString().c_str());
  Serial.printf("信号强度: %d dBm\n", WiFi.RSSI());
  Serial.printf("网关: %s\n", WiFi.gatewayIP().toString().c_str());
  Serial.println(F("开始 HTTP 请求测试..."));
}

void loop() {
  // 检查 Wi-Fi 状态
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println(F("❌ Wi-Fi 已断开,正在尝试重连..."));
    WiFi.reconnect();
    delay(2000);
    return;
  }

  Serial.println(F("\n--- 开始新的 HTTP 请求 ---"));
  HTTPClient http;
  http.begin(targetUrl);
  http.setUserAgent("ESP32-HTTP-Client/1.0"); // 可选:设置 User-Agent

  Serial.printf("📡 正在请求: %s\n", targetUrl);

  int httpCode = http.GET();

  if (httpCode > 0) {
    Serial.printf("✅ HTTP 请求成功!状态码: %d\n", httpCode);

    if (httpCode == HTTP_CODE_OK) {
      String payload = http.getString();
      Serial.println(F("📄 响应内容(前 200 字符):"));
      Serial.println(payload.substring(0, min(200, (int)payload.length())));
    }

    // 蓝灯短闪表示成功
    digitalWrite(LED_PIN, LOW);
    delay(150);
    digitalWrite(LED_PIN, HIGH);
  } else {
    Serial.printf("❌ HTTP 请求失败!错误码: %s\n", http.errorToString(httpCode).c_str());
    Serial.printf("⚠️  可能原因:服务器无响应、DNS 失败、超时、Wi-Fi 不稳\n");

    // 蓝灯慢闪表示失败
    digitalWrite(LED_PIN, LOW);
    delay(100);
    digitalWrite(LED_PIN, HIGH);
    delay(900);
  }

  http.end(); // 释放资源
  Serial.println(F("--- HTTP 请求结束 ---"));

  delay(5000); // 每 5 秒请求一次
}