本帖最后由 Lily李 于 2025-10-5 12:50 编辑
申请原创
@21小跑堂
ESP32-S3(N4) IoT 开发板具有WIFI功能,并可创建一个WIFI服务器,在客户端连接到该服务器的情况下,即可控制LED的亮灭。 以WIFI方式控制LED的步骤为:1)在手机的蓝牙设置功能中找到“ESP32 S3”,在选取连接后,输入WIFI的密码“123”
2)在手机的网址栏输入“http://192.168.4.1/ON”,则可来打开LED灯;否则若输入“http://192.168.4.1/OFF”,则关闭LED灯。
3)此外在出现访问界面的情况下,还可通过点击上下2行的 here 来便捷地控制LED灯的亮灭,而无需要输入网址的操作。 在Arduino IDE的情况下,相应的准备条件为: #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #define myLED 21 const char *ssid = "ESP32 S3"; const char *password = "123"; WiFiServer server(80);
实现WIFI控制LED的初始设置为: - void setup() {
- pinMode(myLED, OUTPUT);
- Serial.begin(115200);
- Serial.println();
- Serial.println("Configuring access point...");
- WiFi.softAP(ssid, password);
- IPAddress myIP = WiFi.softAPIP();
- Serial.print("AP IP address: ");
- Serial.println(myIP);
- server.begin();
- Serial.println("Server started");
- }
实现功能处理的循环处理程序为: - void loop() {
- WiFiClient client = server.available();
- if (client) {
- Serial.println("New Client.");
- String currentLine = "";
- while (client.connected())
- {
- if (client.available())
- {
- char c = client.read();
- if (c == '\n') {
- if (currentLine.length() == 0) {
- client.println("HTTP/1.1 200 OK");
- client.println("Content-type:text/html");
- client.println();
- client.print("Click <a href="/ON">here</a> to turn ON the LED.<br>");
- client.print("Click <a href="/OFF">here</a> to turn OFF the LED.<br>");
- client.println();
- break;
- }
- else
- {
- currentLine = "";
- }
- }
- else if (c != '\r')
- {
- currentLine += c;
- }
- if (currentLine.endsWith("/ON")) {
- digitalWrite(myLED, HIGH);
- }
- if (currentLine.endsWith("/OFF")) {
- digitalWrite(myLED, LOW);
- }
- }
- }
- client.stop();
- Serial.println("Client Disconnected.");
- }
- }
经程序上传,其测试效果如图1至图5所示。 图1 串口输出连接信息
图2 串口监视器输出连接信息
图3 手机操作界面
图4 点亮绿灯
图5 熄灭绿灯
为了产生更丰富的色彩,可外观一个RGB_LED模块,其引脚被分别连接到GPIO11、GPIO12及GPIO13,相应的定义为: #define myLED 21 #define myLED1 12 #define myLED2 13 #define myLED3 11 将所用引脚设置为输出模式的语句为: pinMode(myLED, OUTPUT); pinMode(myLED1, OUTPUT); pinMode(myLED2, OUTPUT); pinMode(myLED3, OUTPUT); 为便于进行控制,更新后的页面生成代码为: - client.print("Click <a href="/ON">here</a> to turn ON the LED.<br>");
- client.print("Click <a href="/OFF">here</a> to turn OFF the LED.<br>");
- client.print("Click <a href="/RED">here</a> to turn RED the LED.<br>");
- client.print("Click <a href="/GREEN">here</a> to turn GREEN the LED.<br>");
- client.print("Click <a href="/BLUE">here</a> to turn BLUE the LED.<br>");
对应的页面控制效果程序为: - if (currentLine.endsWith("/ON"))
- {
- digitalWrite(myLED, HIGH);
- }
- if (currentLine.endsWith("/OFF"))
- {
- digitalWrite(myLED, LOW);
- digitalWrite(myLED1, LOW);
- digitalWrite(myLED2, LOW);
- digitalWrite(myLED3, LOW);
- }
- if (currentLine.endsWith("/RED"))
- {
- digitalWrite(myLED1, HIGH);
- }
- if (currentLine.endsWith("/GREEN"))
- {
- digitalWrite(myLED2, HIGH);
- }
- if (currentLine.endsWith("/BLUE"))
- {
- digitalWrite(myLED3, HIGH);
- }
经程序上传,其测试效果如图6至图8所示,由此可见其色彩表现力还是很不错的。 图6 点亮红灯
图7 产生黄色效果
图8 产生紫色效果
|