ESP32(四) Arduino Http服务器

需求

1.ESP32连接WFI
2.串口监视返回服务器地址
3.访问服务器

配方

  • List item
  • esp wroom 32
  • arduino环境
  • 路由器
  • 电脑
  • usb线

硬件连接

在这里插入图片描述

源码

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>

const char* ssid = "wifi 名";
const char* password = "wifi 密码";

WebServer server(80);

const int led = 2;

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "hello from esp32!");
  digitalWrite(led, 0);
}

void handleNotFound() {
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

void setup(void) {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp32")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
  delay(2);//allow the cpu to switch to other tasks
}

操作

1.连接esp32板子
2.烧录
3.打开串口助手并设定好波特率连接
4.esp32复位
5.串口助手观察到以下讯息
在这里插入图片描述
6.浏览器接入网址

7.刷新网址可见灯闪烁

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fre内网穿透只能穿透http协议,且页面大小限制在1496B以内(MTU,包含header头部) 包含函数如下: begin(char*,char*,char*,uint16,String,String);//设定参数信息,第一个参数是wifi名称,第二个参数是wifi密码,第三个参数是服务器地址,第个参数是服务器端口,都五个参数是自定义域名密码,第六个参数是域名(多个域名以英文逗号分割) on(String,void);//页面以及回调函数,第一个参数是页面路径,第二个参数是回调函数 header(String,String);//设定header头部信息 sendfile();//发送默认的SPIFFS文件 sendfile(String);//发送指定的SPIFFS文件 send(int,string,string);//发送string,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的文本 send(int,string,uint8_t*,size_t);//发送uint8_t数组文件,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的uint8_t数组文件,第个参数是uint8_t数组文件的大小 send(int,string,char*,size_t);//发送char数组文件,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的char数组文件,第个参数是char数组文件的大小 Authenticate(String, String);//判断Auth鉴权信息,第一个参数是用户名,第二个参数是密码 requestAuthentication();//向页面返回鉴权需求,使页面弹出Auth鉴权登录信息 getheader(String);//返回header指定头部信息参数值 arg(String);//返回GET请求参数值
好的,以下是ESP32 Arduino创建WebSocket服务器的基本步骤: 1. 首先,你需要安装ESP32Arduino核心库。你可以在Arduino IDE中使用“工具”>“开发板”>“开发板管理器”来安装它。 2. 接下来,你需要安装ESPAsyncWebServer和WebSockets库,它们可以通过Arduino IDE的“工具”>“管理库”来安装。 3. 在你的Arduino代码中,包含必要的库: ``` #include <WiFi.h> #include <ESPAsyncWebServer.h> #include <WebSocketsServer.h> ``` 4. 设置你的WiFi连接: ``` const char* ssid = "YourSSID"; const char* password = "YourPassword"; WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } ``` 5. 创建一个ESPAsyncWebServer实例: ``` AsyncWebServer server(80); ``` 6. 添加WebSocket处理程序: ``` WebSocketsServer webSocket = WebSocketsServer(81); void handleWebSocketMessage(uint8_t * payload, size_t length) { // 处理WebSocket消息 } webSocket.onEvent(handleWebSocketEvent); ``` 7. 在服务器上注册WebSocket处理程序: ``` server.addHandler(&webSocket); ``` 8. 启动服务器: ``` server.begin(); ``` 9. 处理WebSocket事件: ``` void handleWebSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) { switch (type) { case WStype_DISCONNECTED: // WebSocket断开连接 break; case WStype_CONNECTED: // WebSocket连接 break; case WStype_TEXT: // 处理WebSocket文本消息 handleWebSocketMessage(payload, length); break; } } ``` 以上是ESP32 Arduino创建WebSocket服务器的基本步骤,你可以根据你的具体需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值