Lily李 发表于 2025-10-5 11:37

ESP32-S3(N4) IoT 开发板以WIFI方式控制色彩效果

本帖最后由 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 21const 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 产生紫色效果

qintian0303 发表于 2025-10-6 20:33

ESP32的控制器做物联网开发就是方便,自带wifi,无线的需求直接满足

Lily李 发表于 2025-10-6 23:11

qintian0303 发表于 2025-10-6 20:33
ESP32的控制器做物联网开发就是方便,自带wifi,无线的需求直接满足

是,我也最近才体验到它的特点和优势。

mini1986 发表于 2025-10-13 10:22

最近闲来无事,也是买了个ESP32的开发板,学习下蓝牙和wifi相关的知识

Lily李 发表于 2025-10-13 11:32

mini1986 发表于 2025-10-13 10:22
最近闲来无事,也是买了个ESP32的开发板,学习下蓝牙和wifi相关的知识

ESP32开发板还是比较好用的
页: [1]
查看完整版本: ESP32-S3(N4) IoT 开发板以WIFI方式控制色彩效果