1. 项目概述:手机无线控制ESP32的实用场景
去年为一个智能家居客户调试灯光系统时,我第一次尝试用手机APP直接控制ESP32开发板。当客厅的射灯随着手机滑动条实时改变亮度时,突然意识到这种控制方案在物联网原型开发中具有普适价值。通过手机控制ESP32的核心在于建立无线通信链路,目前主流方案包括蓝牙直连、Wi-Fi局域网和云端中转三种模式。本方案采用Wi-Fi局域网架构,主要考虑家庭环境下路由器的普及性以及比蓝牙更远的传输距离。
这种控制方式特别适合以下场景:
- 智能家居设备调试(无需额外遥控器)
- 教学演示中的硬件交互(学生用自己手机操作)
- 创客项目的快速原型验证(省去屏幕和按键模块)
关键提示:ESP32的Wi-Fi模块支持STA和AP两种模式,本方案采用STA模式连接现有路由器,相比AP模式更省电且网络更稳定。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与网络配置
2.1 基础硬件清单
- ESP32开发板(推荐ESP32-WROOM-32D)
- 安卓/iOS智能手机(系统版本需支持WebSocket)
- 5V/2A电源适配器
- 微型USB数据线(用于初始烧录)
- 可选配件:LED模块/舵机等被控设备
2.2 网络环境搭建
在家庭路由器后台需要确认:
- 开启2.4GHz频段(ESP32不支持5GHz)
- 关闭AP隔离功能(允许设备间通信)
- 建议分配静态IP给ESP32(避免DHCP变更地址)
实测发现,当路由器开启WMM(Wi-Fi多媒体)功能时,控制指令的延迟会从平均120ms降低到80ms左右。这是因为QoS机制优先处理了控制数据包。
3. 固件开发关键实现
3.1 WebSocket服务端实现
使用Arduino IDE开发时,需要先安装以下库:
arduino复制#include <WiFi.h>
#include <WebSocketsServer.h>
建立WebSocket服务的关键代码段:
arduino复制WebSocketsServer webSocket = WebSocketsServer(81);
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t l
