You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Arduino IDE下实现移动应用向ESP32发送RGB值及Modem式通信

ESP32 SoftAP模式下接收移动APP RGB调节值的实现方案

核心实现思路

将ESP32配置为SoftAP(热点),同时搭建轻量Web Server,移动APP连接该热点后通过HTTP请求发送RGB数值,ESP32解析请求后通过PWM输出控制LED亮度。

ESP32端代码(Arduino IDE)

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

// SoftAP配置参数
const char* ap_ssid = "ESP32_RGB_Control";
const char* ap_password = "rgb_ctrl_123";

// RGB LED引脚(选择ESP32支持PWM的引脚,如GPIO2、4、5)
const int pin_red = 2;
const int pin_green = 4;
const int pin_blue = 5;

// PWM通道配置
const int pwm_ch_red = 0;
const int pwm_ch_green = 1;
const int pwm_ch_blue = 2;
const int pwm_freq = 5000;
const int pwm_res = 8; // 分辨率8位,对应0-255亮度范围

WebServer server(80);

// 处理RGB设置请求
void handle_rgb_update() {
  // 检查请求参数是否完整
  if (!server.hasArg("r") || !server.hasArg("g") || !server.hasArg("b")) {
    server.send(400, "text/plain", "Error: Missing RGB parameters");
    return;
  }

  // 解析参数并限制范围
  int r = constrain(server.arg("r").toInt(), 0, 255);
  int g = constrain(server.arg("g").toInt(), 0, 255);
  int b = constrain(server.arg("b").toInt(), 0, 255);

  // 更新PWM输出(若LED为共阳极,需改为255 - r)
  ledcWrite(pwm_ch_red, r);
  ledcWrite(pwm_ch_green, g);
  ledcWrite(pwm_ch_blue, b);

  server.send(200, "text/plain", "RGB Updated: R=" + String(r) + " G=" + String(g) + " B=" + String(b));
}

void setup() {
  Serial.begin(115200);

  // 初始化PWM通道
  ledcSetup(pwm_ch_red, pwm_freq, pwm_res);
  ledcSetup(pwm_ch_green, pwm_freq, pwm_res);
  ledcSetup(pwm_ch_blue, pwm_freq, pwm_res);

  // 绑定引脚到PWM通道
  ledcAttachPin(pin_red, pwm_ch_red);
  ledcAttachPin(pin_green, pwm_ch_green);
  ledcAttachPin(pin_blue, pwm_ch_blue);

  // 启动SoftAP
  WiFi.softAP(ap_ssid, ap_password);
  IPAddress ap_ip = WiFi.softAPIP();
  Serial.printf("SoftAP IP: %s\n", ap_ip.toString().c_str());

  // 注册请求路由
  server.on("/setrgb", handle_rgb_update);
  server.begin();
  Serial.println("Web Server started");
}

void loop() {
  server.handleClient();
}

移动APP端实现要点

  1. 网络连接:移动端先手动连接ESP32创建的SoftAP(SSID:ESP32_RGB_Control,密码:rgb_ctrl_123)
  2. UI组件:添加三个滑动条(范围0-255)分别对应红、绿、蓝三色
  3. 数据传输:滑动条数值变化时,发送HTTP GET请求到http://192.168.4.1/setrgb?r=xxx&g=xxx&b=xxx,其中xxx为对应颜色的数值
    • 原生开发可使用Android的OkHttp、iOS的URLSession实现请求
    • 快速测试可使用手机浏览器直接访问上述URL,修改参数验证功能

常见问题排查

  • LED无反应:检查RGB LED接线方式(共阳/共阴),共阳需将PWM输出值改为255 - 数值;确认引脚是否为ESP32支持PWM的引脚
  • 连接失败:检查SoftAP的SSID和密码是否正确,移动端是否成功连接到该热点
  • 请求无响应:查看ESP32串口输出,确认Web Server是否正常启动,IP地址是否为192.168.4.1

内容的提问来源于stack exchange,提问作者Burak Tanrıverdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:44:52