廊坊网站建设佛山厂商,wordpress神主题,页面设计工作内容自述,学做土建资料员的网站ESP32客户端-服务器Wi-Fi通信
本指南将向您展示如何设置ESP32板作为服务端#xff0c;PC作为客户端#xff0c;通过HTTP通信#xff0c;以通过Wi-Fi#xff08;无需路由器或互联网连接#xff09;交换数据。简而言之#xff0c;您将学习如何使用HTTP请求将一个板的数据发…ESP32客户端-服务器Wi-Fi通信
本指南将向您展示如何设置ESP32板作为服务端PC作为客户端通过HTTP通信以通过Wi-Fi无需路由器或互联网连接交换数据。简而言之您将学习如何使用HTTP请求将一个板的数据发送到访问该服务器的设备。ESP32板将充当服务器。
概述
如果一个ESP32板作为服务器那么客户端可以通过在服务器IP地址后分别添加/temperature、/humidity等路径来请求温度、湿度等数据。使用的ESP32S3微处理器和BHT20传感器。
设置服务器ESP32
配置为接入点首先您需要将ESP32设置为接入点AP并定义SSID和密码。处理路由然后处理ESP32将监听的路由。例如当ESP32服务器收到/temperature URL的请求时它会发送由readTemp()函数返回的温度值。
为了测试服务器是否工作正常您可以在智能手机的Wi-Fi设置中连接到ESP32-Access-Point密码为123456789然后在浏览器中输入192.168.4.1/temperature、192.168.4.1/humidity等URL来查看相应的数据。
设置客户端
连接到服务器网络客户端PC或者手机将作为Wi-Fi站连接到服务器ESP32的网络。发送HTTP请求客户端将向服务器发送HTTP GET请求以获取温度、湿度等数据。
代码实现
在服务器上传相应的代码代码见下。服务器代码负责创建接入点、处理路由并发送数据而客户端代码负责连接到服务器网络、发送HTTP请求并显示数据。
// Import required libraries
#include WiFi.h
#include Grove_Temperature_And_Humidity_Sensor.h
#include ESPAsyncWebServer.h
#include Wire.h#define DHTTYPE DHT20 // DHT 20
DHT dht(DHTTYPE); // DHT10 DHT20 dont need to define Pin// Set your access point network credentials
const char* ssid ESP32-Access-Point;
const char* password 123456789;// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
float temp_hum_val[2] {0};
char buffer_hum_0[10];
char buffer_hum_1[10];
const char* str1;
const char* str2;void setup(){// Serial port for debugging purposesSerial.begin(115200);Serial.println();Wire.begin(); // 初始化I2C通信, D4, D5dht.begin();// Setting the ESP as an access pointSerial.print(Setting AP (Access Point)…);// Remove the password parameter, if you want the AP (Access Point) to be openWiFi.softAP(ssid, password);IPAddress IP WiFi.softAPIP();Serial.print(AP IP address: );Serial.println(IP);//路由在服务器启动时设置一次server.on(/temperature, HTTP_GET, [](AsyncWebServerRequest *request){request-send_P(200, text/plain, str1);});server.on(/humidity, HTTP_GET, [](AsyncWebServerRequest *request){request-send_P(200, text/plain, str2);});// Start serverserver.begin();
}void loop(){// 实时更改温湿度信息if (!dht.readTempAndHumidity(temp_hum_val)) {Serial.print(Humidity: );Serial.print(temp_hum_val[0]);Serial.print( %\t);Serial.print(Temperature: );Serial.print(temp_hum_val[1]);Serial.println( *C);// trans float to const char*sprintf(buffer_hum_0, %.2f, temp_hum_val[0]);sprintf(buffer_hum_1, %.2f, temp_hum_val[1]);str1 buffer_hum_0;str2 buffer_hum_1;} else {Serial.println(Failed to get temprature and humidity value.);}delay(1000);
}
测试
在ESP32板正确连接和供电的情况下PC接入WIFI发送请求192.168.4.1/temperature、192.168.4.1/humidity您应该能够在客户端显示屏上看到从服务器ESP32获取到的温度、湿度数据。 PC端 手机端
总结
通过本教程您已经学会了如何使用ESP32和HTTP请求通过Wi-Fi在两个板之间发送数据而无需连接到互联网。虽然本教程中演示的是发送BHT20传感器的读数但您可以使用任何其他传感器或发送任何其他数据。
ESP32参考指南