做了一个小项目——用ESP32搭一个轮式机器人,不需要装任何App,打开手机浏览器就能遥控。ESP32自带的WiFi和蓝牙双模能力做这个太合适了,整个控制方案比传统Arduino加蓝牙模块简洁很多。

为什么选ESP32而不是Arduino
Arduino Nano或UNO做遥控机器人需要额外加蓝牙模块(HC-05),而且只能走串口通信,手机必须装App。ESP32原生支持WiFi和BLE,开一个WiFi热点就能让手机连上,跑一个Web服务器在浏览器里做控制界面,零安装零依赖。
另一个好处是ESP32的PWM通道比Arduino多,直接驱动多颗舵机不需要额外扩展板。做四足、六足这种多关节机器人时优势明显。
硬件方案:ESP32加L298N加两个直流电机
底盘用常见的双驱四轮结构(或三轮结构更灵活),两颗TT电机用L298N驱动板控制。ESP32的GPIO接L298N的IN1-IN4引脚做方向控制,ENA和ENB接PWM做调速。供电用3S锂电池(11.1V),L298N降压到电机电压,ESP32通过板载稳压器从电池取电。
如果想加更多功能,可以挂超声波传感器做避障、MPU6050做姿态检测、摄像头做图传。ESP32-CAM模块自带摄像头,一块板子解决主控加图像采集。
Web控制界面:HTML加JavaScript就够了
ESP32跑一个轻量Web服务器,HTML页面里放方向键按钮和速度滑块。按按钮时JavaScript发HTTP请求到ESP32,ESP32解析指令后控制电机。不需要任何前端框架,一个index.html文件搞定。
关键点:ESP32创建自己的WiFi热点(softAP模式),手机连上后直接访问ESP32的IP地址就能打开控制页面。不需要路由器,不需要互联网,户外也能玩。
速度控制用PWM调占空比
ESP32的LEDC定时器做PWM输出,8位分辨率(0-255),默认频率1000Hz。Web界面上的速度滑块映射到0-255的PWM值,实时控制电机转速。如果想做更细腻的速度控制可以提到12位(0-4095)。
注意L298N的ENA和ENB需要拔掉跳线帽才能接受外部PWM信号,很多新手在这步卡住。
避障逻辑:P控制器比阈值判断稳
如果加了超声波传感器做巡线或避障,别用简单的阈值判断(障碍<15cm就停),加一个P控制器(比例控制器)效果更好。偏差乘以Kp系数得到修正量,修正量叠加到左右轮速度差上。机器人会平滑地避开障碍而不是急停急转。
Kp值需要调,太大震荡、太小反应迟钝。从Kp=30开始试,逐步调到你觉得合适的灵敏度。
扩展玩法
加ESP-NOW协议可以实现多机协同——一台做主机发指令,多台从机同时响应。加摄像头做实时图传可以在Web页面上看第一视角。加GPS模块做室外循迹也很有乐趣。ESP32生态里现成的库很多,大部分功能几行代码就能接入。








ESP-NOW多机协同最多几台
softAP模式手机连接距离大概多远
L298N的跳线帽确实坑了我好久
ESP32-CAM做图传延迟大吗