ESP32避障小车从接线到自主巡行的4阶段搭建路径【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32当测试台架没有网络、小车需要自己完成一圈巡逻时一台 ESP32 智能小车就够了一块 ESP32 DevKitC、两只 N20 减速电机、一块 L298N 驱动板、一个 HC-SR04 超声波模块加上 arduino-esp32 这个 Arduino 核心就能搭出无需服务器和配套 App 的自主避障小车。以下是我实际走通一遍的搭建路径硬件 BOM 大约 150-220 元第一次让避障逻辑稳定跑起来动手时间约 1-2 小时。项目全景arduino-esp32 核心对小车意味着什么arduino-esp32 是乐鑫官方的 ESP32 系列 Arduino 兼容核心覆盖 C2/C3/C5/C6/S2/S3/H2 全家族仓库当前主线版本 3.3.11见 cores/esp32/esp_arduino_version.h根目录 boards.txt 收录了 400 多款开发板定义libraries/ 内置 WiFi、BLE、USB 等 40 余个项目库。对小车项目而言这意味着 Arduino 草图里写的 PWM、GPIO、串口背后都有现成的硬件驱动不需要接触 ESP-IDF 的底层 API。整车成本与学习曲线主要由驱动板和传感器决定而不是固件层参考预算是 BOM 150-220 元、首次跑通 1-2 小时、迭代到稳定自主巡逻约 1-2 周。动手清单ESP32 避障小车的硬件版本与 IDE 环境 先把 BOM 定下来每项都标了规格采购时直接对照。硬件7 项ESP32 DevKitCESP32-WROVER4MB Flash / 8MB PSRAM×1——最通用的板型引脚与官方引脚图完全对应教程按图抄引脚号即可N20 减速电机带轮6-12V42 速比×2L298N 双 H 桥驱动板 ×1输入 5-35VHC-SR04 超声波测距模块 ×15V 供电量程 2cm-4m2S 18650 电池组7.4V≥2000mAh 电源开关 ×1两轮亚克力或 3D 打印底盘 万向轮M3 螺丝与立柱若干杜邦线100µF 电容并接在电机电源输入端软件3 项Arduino IDE ≥1.8.192.x 系列均可在 IDE 首选项填入官方 stable 版板管理器地址Boards Manager 中安装 esp32 核心选择 3.3.x 系列对应本仓库当前主线 3.3.11支持数据传输的 USB 线——只充电的数据线是烧录失败的头号来源搭建路径接线、烧录、测距、联调 4 个阶段阶段一环境与固件安装完成信号IDE 中选中 ESP32 Dev Module 后端口列表出现串口Blink 示例编译通过。 在首选项的附加开发板管理器网址中添加官方稳定版地址打开 Boards Manager 安装 esp32 平台。ESP32 开发板包在 Boards Manager 中的安装界面搜索 esp32 后选择 3.3.x 系列版本阶段二电源与接线完成信号上电后手动置位 IN 引脚两轮转向相反电机声音正常无打齿。 先固定电源链路电池 → L298N 的 VL298N 的 5V 输出 → ESP32 的 5V 脚电池、L298N、ESP32、超声波模块的 GND 全部共地。2S 的 7.4V 是 N20 带负载的最低舒适电压用单节 3.7V 车会明显没劲。信号接线如下引脚号以 ESP32 DevKitC 引脚图为准全部避开 STRAP 引脚信号ESP32 GPIOL298N 引脚左轮速度 PWMGPIO25ENA左轮方向GPIO26 / GPIO27IN1 / IN2右轮速度 PWMGPIO32ENB右轮方向GPIO33 / GPIO17IN3 / IN4超声波 TrigGPIO5—超声波 EchoGPIO18—⚠️ 这里我踩过坑网上不少示例把电机分到 GPIO12/13/15但 DevKitC 上这三个引脚与外部 Flash 共享复位后不能当普通 GPIO 用上车直接不转。ESP32 DevKitC 引脚图GPIO12/13/15 标有 !STRAP 引脚因此电机信号改走 GPIO25/26/27/32/33/17阶段三测距验证完成信号串口 115200 输出随你手部移动实时变化的距离值30cm 处误差不超过 1cm。 这一步只烧一个跑pulseIn的最小草图先不接电机把传感器链路单独验证掉。阶段四避障联调完成信号小车在 20cm 处停住倒转方向后直行转弯过渡不来回摆动。 阈值先定 20cm/10cm 两档减速/刹停转向起步速度给小一点占空比 400 左右出现摆动的第一个动作是降速而不是反复微调阈值。核心机制拆解PWM 差速与 HC-SR04 超声波测距链路差速驱动占空比 → PWM → H 桥 → 轮速。输入是 0-1023 的整数LEDC 定时器 10 位分辨率ESP32 的硬件 PWM 模块产生波形GPIO 矩阵IO_MUX把它路由到物理引脚L298N 的 H 桥再把 PWM速度与 IN1/IN2 电平方向合成电机驱动。arduino-esp32 3.x 已移除 2.x 的ledcSetup/ledcAttachPin现在直接按引脚调用ledcAttachledcAttach(25, 25000, 10); // GPIO25 输出 25kHz PWM10 位分辨率0~1023 ledcAttach(32, 25000, 10); // GPIO32 右轮同参数 ledcWrite(25, 800); // 占空比 → 左轮转速1023 为满速频率给到 25kHz 可避开可听频段电机不会伴随尖啸。GPIO 矩阵与 IO_MUX 路由图LEDC 的 PWM 信号经 GPIO 矩阵分配到物理引脚超声波测距触发 → 回波高电平 → 距离 → 阈值决策。HC-SR04 自己完成回波计时Echo 的高电平宽度正比于距离digitalWrite(5, HIGH); delayMicroseconds(10); digitalWrite(5, LOW); // 10us 触发 long t pulseIn(18, HIGH, 30000); // Echo 高电平宽度us超时 30ms float cm t * 0.017; // 距离 t × 340m/s ÷ 2化简为 cm/us决策层就是个三档状态机cm 20 全速直行10 cm 20 减速cm ≤ 10 刹停倒转。void avoid(float cm) { if (cm 10) stopAndTurn(); // 危险区刹停 倒转 else if (cm 20) setSpeed(300, 300); // 警告区减速 else setSpeed(800, 800); // 正常区 }一个硬约束回波高电平宽度与距离成正比长距离下单次测量要 20ms 以上循环刷新率被它卡住决策逻辑不要依赖比这更快的更新。避坑对照表ESP32 电机驱动接线的 5 个高频问题⚠️ 按出现概率排序排查动作都是实际做过的。现象大概率原因 排查动作电机不转或明显没劲电池电压不足N20 带载低于约 5V 会堵转或 L298N 的 5V 输出被 MCU 负载拉低。用万用表量 V 端实际电压换 2S 7.4V 电池组不要用单节 3.7V 带电机一只轮转一只不转或方向反电机两根相位线接反或 IN1/IN2 逻辑接反。对调电机线或在软件里反转 IN 输出先手动上电确认两轮方向超声波读数恒为 0 或 589cm589 是超 4m 的溢出值近距离恒 0 多为无触发脉冲或 Echo 线断路。先用万用表确认 TRIG 引脚有 10us 脉冲注意 Echo 是 5V 逻辑ESP32 GPIO 为 3.3V长期直连有风险加 1kΩ/2kΩ 分压烧录卡在 Connecting...开发板状态不对按住 BOOT 点上传进入 Connecting 后再松开确认是数据线DevKitC 的 USB 转串口是外置 CP2102/CH340先装驱动电机啸叫或草图编译报错3.x 已移除ledcSetup/ledcAttachPin照抄 2.x 示例会编译失败或通道错乱。改用ledcAttach并把频率设为 ≥20kHz 移出可听段能力边界与下一步HC-SR04 精度与遥控升级路径当前方案能做什么、不能做什么实测口径HC-SR04 有效量程 2cm-4m近程30cm 内精度约 ±3mm波束角约 30°——细障碍物桌腿、线缆和低反射率深色布料都容易漏检L298N 是双极驱动H 桥压降 1-2V持续大负载时发热明显车速上限被它而不是固件卡住电机换向噪声会干扰 WiFi 天线后续加无线功能后若经常掉线把电机走线挪离天线区或先在驱动板输入端加大电容两条有具体路径的升级方向循墙跟随车身左右各加一只 HC-SR04接法相同只改 GPIO 号再加一路红外循迹把前方避障扩展为前 侧 线小车即可沿墙边完成循墙巡航遥控与数据回传用仓库自带的 libraries/WiFi/ 把小车配成 station 模式接入家里网络把循环里的距离值每秒经 UDP 发到手机或电脑拓扑见下图若要做平滑遥控可在开发板菜单的 LoopCore 选项里把 Arduino 循环和 WiFi 任务分到两个核心ESP32 以站点STA模式连接 AP遥控与数据回传升级的基础网络拓扑资源入口安装指南板管理器地址与 IDE 版本要求docs/en/installing.rstLEDC PWM API 参考docs/en/api/ledc.rstGPIO 矩阵 / IO_MUX 路由原理docs/en/tutorials/io_mux.rstBlink 示例烧录验证第一步libraries/ESP32/examples/GPIO/BlinkRGB/故障排查 FAQdocs/en/faq.rst开环版本稳定跑起来之后下一步建议把 N20 换成带编码器的版本用pulseIn读速度反馈做闭环——那是这辆车值得做的第一件升级。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考