esp32连接WiFi发送求拿数据【附例子】

工具

Arduino IDE =>写代码
esp32-wroom-32 =>esp32开发板(某宝不到20入手)

概要

ESP32-WROOM-32是一款功能强大、灵活多样的微控制器模块,集成了WiFi蓝牙功能,并提供丰富的外设和开发支持。它适用于各种物联网应用和嵌入式系统

列举一些应用场景:

  • 智能家居:控制灯光、温度、安全系统等。
  • 工业自动化:监控和控制生产设备、数据采集等。
  • 智能农业:远程监测土壤湿度、温度、光照等参数。
  • 智能健康:监测身体健康数据,并与云端进行交互。
  • 物联网网关:连接不同的传感器和设备,并将数据传输到云端。

esp32连接WiFi

在这里插入图片描述

#include <WiFi.h>

void setup() {
  // 初始化串口便于观察串口打印输出
  Serial.begin(115200);

  WiFi.begin("QQ", "123456qq");//参数一:WiFi名称  参数二:WiFi密码
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
}

void loop() {
  
}

第一步:导入WiFi库:通过#include <WiFi.h>导入WiFi库,以便使用WiFi相关的功能
第二步:WiFi连接:使用WiFi.begin()函数连接到WiFi网络,传入WiFi的名称和密码作为参数

WL_CONNECTED是一个宏,定义在ESP32的WiFi库中,用于表示WiFi连接状态。在ESP32的WiFi库中,提供了一系列的宏来表示不同的连接状态,以下是一些常见的WiFi状态宏:

  • WL_IDLE_STATUS:模块空闲,没有尝试连接。
  • WL_NO_SSID_AVAIL:没有找到可用的网络。
  • WL_SCAN_COMPLETED:网络扫描完成。
  • WL_CONNECT_FAILED:连接失败。
  • WL_CONNECTION_LOST:连接丢失。
  • WL_DISCONNECTED:已断开连接。
    在这里插入图片描述
    在这里插入图片描述

esp32发送http请求

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

const char* ssid = "QQ";
const char* password = "123456qq";

void setup() {
  Serial.begin(115200);

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

  HTTPClient http;
  http.begin("http://121.151.159.11:8011/api/talk");
  int httpCode = http.GET();

  if (httpCode == HTTP_CODE_OK) {
    String payload = http.getString();
    Serial.println("Response: " + payload);
  } else {
     Serial.println("Error in HTTP request");
  }

  http.end();
}

void loop() {
}


结果
在这里插入图片描述

HTTPClient类在Arduino中用于发送HTTP请求,以下是一些常用的方法:

  1. begin(url):指定要访问的URL。参数是一个字符串,表示要访问的URL地址。

  2. GET():发送HTTP GET请求。

  3. POST():发送HTTP POST请求。

  4. PUT():发送HTTP PUT请求。

  5. DELETE():发送HTTP DELETE请求。

  6. write(data):向服务器发送数据。参数data是要发送的数据。

  7. sendRequest(method, data):发送HTTP请求。参数method是请求方法(如GET、POST等),data是可选的请求数据。

  8. getString(): 获取响应的字符串形式。

  9. addHeader(name, value):添加HTTP请求头。参数name是头部的名称,value是头部的值【例如访问需要带token的】

  10. end(): 结束当前HTTP请求,释放资源。

ESP32作为服务器

将ESP32作为服务器,接受请求并控制灯的开关

#include <WiFi.h>

const char* ssid = "QQ";
const char* password = "123456qq";

WiFiServer server(81); // 设置服务器端口为81

void setup() {
  Serial.begin(115200);
  //D2引脚
  pinMode(LED_BUILTIN, OUTPUT);

  // 连接WiFi网络
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // 打印ESP32的IP地址
  Serial.print("ESP32 IP Address: ");
  Serial.println(WiFi.localIP());

  // 启动服务器
  server.begin();
  Serial.println("Server started");
}

void loop() {
  // 等待客户端连接
  WiFiClient client = server.available();
  if (client) {
    
    // 读取客户端请求
    String request = client.readStringUntil('\r');
    Serial.println("Request: " + request);
    //在处理完请求后通常会调用client.flush()方法来清空输入缓冲区 以确保下一个请求能够被正确处理。
    client.flush();

    // 检查请求路径中是否包含"/on"的子字符串 没有则返回-1
    if (request.indexOf("/on") != -1) {
      digitalWrite(LED_BUILTIN, HIGH);
      Serial.println("LED ON");
    } else if (request.indexOf("/off") != -1) {
      digitalWrite(LED_BUILTIN, LOW);
      Serial.println("LED OFF");
    }

    // 返回响应
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println();
    client.println("<!DOCTYPE HTML>");
    client.println("<html>");
    client.println("<head><title>ESP32 LED Control</title></head>");
    client.println("<body>");
    client.println("<h1>ESP32 LED Control</h1>");
    client.println("<p>Click <a href=\"/on\">here</a> to turn the LED on</p>");
    client.println("<p>Click <a href=\"/off\">here</a> to turn the LED off</p>");
    client.println("</body>");
    client.println("</html>");

    // 断开客户端连接
    client.stop();
  }
}


WiFiServerWiFiClient是ESP32 WiFi库提供的两个重要类,用于创建服务器和处理客户端连接。这些类在WiFi.h库中定义。

WiFiServer类

WiFiServer类用于创建一个TCP服务器,可以监听指定端口并等待客户端连接。它有以下重要方法:

  • WiFiServer(uint16_t port):构造函数,用于创建一个WiFi服务器对象,指定服务器的端口号。
  • begin():开始监听指定端口,准备接受客户端连接。
  • available():检查是否有客户端请求连接到服务器。如果有客户端连接请求,返回一个WiFiClient对象,否则返回NULL

WiFiClient类

WiFiClient类用于与服务器建立连接,并进行数据交换。它有以下重要方法:

  • readStringUntil('\r'):用于从客户端读取字符,直到遇到指定的终止字符(在这里是回车符 ‘\r’)
  • write(data):向客户端发送数据。
  • connected():检查客户端是否仍然连接着服务器。
  • flush():清空客户端的发送缓冲区。
    • stop():关闭客户端与服务器的连接。

在这里插入图片描述

esp32引脚

在这里插入图片描述


❤觉得有用的可以留个关注呀❤

  • 36
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值