如何在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端实现要点
- 网络连接:移动端先手动连接ESP32创建的SoftAP(SSID:
ESP32_RGB_Control,密码:rgb_ctrl_123) - UI组件:添加三个滑动条(范围0-255)分别对应红、绿、蓝三色
- 数据传输:滑动条数值变化时,发送HTTP GET请求到
http://192.168.4.1/setrgb?r=xxx&g=xxx&b=xxx,其中xxx为对应颜色的数值- 原生开发可使用Android的
OkHttp、iOS的URLSession实现请求 - 快速测试可使用手机浏览器直接访问上述URL,修改参数验证功能
- 原生开发可使用Android的
常见问题排查
- LED无反应:检查RGB LED接线方式(共阳/共阴),共阳需将PWM输出值改为
255 - 数值;确认引脚是否为ESP32支持PWM的引脚 - 连接失败:检查SoftAP的SSID和密码是否正确,移动端是否成功连接到该热点
- 请求无响应:查看ESP32串口输出,确认Web Server是否正常启动,IP地址是否为
192.168.4.1
内容的提问来源于stack exchange,提问作者Burak Tanrıverdi
相关产品推荐
相关产品推荐

