在这篇博客中,我将展示如何使用ESP32或ESP8266开发板通过WiFi搭建一个简单的Web服务器,并使用它来控制一个LED的开关。首先确保esp32与自己的手机或者电脑在同一WiFi环境下
效果展示
led
项目准备
在开始之前,请确保你已经准备好以下材料:
一块ESP32或ESP8266开发板
一只LED
面包板和跳线
Arduino IDE(并安装好ESP32或ESP8266的开发板库)
连线
ESP32 (GPIO 5) -> LED 正极
LED 负极 -> 电阻 -> GND
编写代码
打开Arduino IDE,并将以下代码复制到新的草图中。这段代码将会创建一个Web服务器,通过浏览器发送的请求来控制LED的开关。
完整代码
#include <WiFi.h>// 设置WiFi网络的SSID和密码
const char* ssid = "你的SSID";
const char* password = "你的密码";// 创建一个WiFiServer对象,监听端口80
WiFiServer server(80);// 定义LED引脚
const int ledPin = 5;void setup() {// 初始化串口通信Serial.begin(115200);pinMode(ledPin, OUTPUT); // 设置LED引脚模式digitalWrite(ledPin, LOW); // 默认关闭LEDdelay(10);// 连接到WiFi网络Serial.println();Serial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());// 启动服务器server.begin();
}void loop() {WiFiClient client = server.available(); // 监听进入的客户端if (client) { // 如果有客户端连接,Serial.println("New Client."); // 打印一条消息到串口监视器String currentLine = ""; // 创建一个字符串来保存客户端发送的数据while (client.connected()) { // 当客户端保持连接时if (client.available()) { // 如果有客户端数据可读char c = client.read(); // 读取一个字节Serial.write(c); // 打印到串口监视器if (c == '\n') { // 如果该字节是换行符// 如果当前行是空行,表示HTTP请求结束,发送响应:if (currentLine.length() == 0) {// HTTP响应头client.println("HTTP/1.1 200 OK");client.println("Content-type:text/html");client.println();// HTTP响应内容client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 5 on.<br>");client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 5 off.<br>");// HTTP响应结束client.println();break;} else { // 如果收到换行符,清空currentLine:currentLine = "";}} else if (c != '\r') { // 如果收到的不是回车符,currentLine += c; // 添加到currentLine的末尾}// 检查客户端请求是否为"GET /H"或"GET /L":if (currentLine.endsWith("GET /H")) {digitalWrite(ledPin, HIGH); // GET /H 打开LEDSerial.println("LED turned ON"); // 打印调试信息}if (currentLine.endsWith("GET /L")) {digitalWrite(ledPin, LOW); // GET /L 关闭LEDSerial.println("LED turned OFF"); // 打印调试信息}}}// 关闭连接:client.stop();Serial.println("Client Disconnected.");}
}
在arduino ide上配置好合适的开发版和端口,点击上传。
在出现上传中的字样后,长按esp32上的boot键3秒,如何上传,上传成功后,打开串口监视器。在自己的浏览器打开下面的ip地址。
显示以下界面
点击链接,即可控制LED的开关。
结语
通过这个项目,我们了解了如何使用ESP32或ESP8266搭建一个简单的Web服务器,并通过HTTP请求控制LED的开关。这只是物联网应用的冰山一角,你可以在此基础上实现更多功能,比如控制多个设备,读取传感器数据等。