ESP32+超声波避障小车:HC-SR04+舵机扫描做自动避障

2026-10-22 16:11:05 3阅读

给小车装上"眼睛"

做遥控小车是入门,做避障小车才算真正开始学机器人。这个项目用ESP32做主控,HC-SR04超声波传感器装在舵机上做"摇头扫描",L298N驱动两个直流电机,做出一台能自动避开障碍物的小车。成本大概80块,一个下午就能搞定。

HC-SR04超声波测距的原理很简单:发一个40kHz的超声波脉冲,碰到障碍物反射回来,算时间差就知道距离。测量范围2-400厘米,精度约3毫米。装在舵机上可以左右转头扫描,每扫一个角度测一次距离,就能构建一个简单的"障碍物地图"。

硬件连接

HC-SR04有4根线:VCC接5V、GND接地、Trig接GPIO5(发射触发)、Echo接GPIO18(回波接收)。注意Echo输出是5V电平,ESP32的GPIO是3.3V容忍,中间需要加分压电阻(1k欧+2k欧)把5V降到3.3V,不然可能烧引脚。

舵机用SG90,信号线接GPIO13,负责 carrying HC-SR04左右转。L298N电机驱动的IN1-IN4分别接GPIO25/26/27/32,ENA和ENB接PWM做调速。两个直流电机用带减速箱的TT马达就行,搭配6V电池盒供电。

避障算法

避障逻辑分三层:首先是"看",舵机从-60度扫到+60度,每15度停一下测一次距离,一轮扫完得到9个距离数据。然后是"判断",把9个数据分成左、中、右三个区域,找最远的方向。最后是"行动",如果前方15厘米内有障碍就停车,舵机扫描找路,然后转向最开阔的方向。

具体实现上,我用了一个简单的状态机:正常前进→检测到障碍→停车扫描→选择方向→转向→继续前进。转向的角度根据障碍物的位置决定,左边有障碍就右转,右边有障碍就左转,正前方有障碍就转90度。

代码关键部分

超声波测距的核心代码就是一个pulseIn函数:Trig引脚拉高10微秒触发测量,然后读Echo引脚的高电平时间,乘以声速除以2就是距离。ESP32的LED Control定时器可以精确到微秒级别。

舵机控制用ESP32的LED PWM功能,50Hz频率,脉冲宽度500-2400微秒对应0-180度。避障扫描的时候,舵机每到一个角度就延时30毫秒等稳定,然后连续测3次取中值防干扰。

调试技巧

HC-SR04最常见的问题是测量值跳变。原因可能是供电不稳(和电机共用电源时会这样),解决办法是给HC-SR04单独加一个100uF滤波电容。另外超声波在软质吸音材料上反射很差,如果你家的沙发是它的"天敌",测试的时候换硬纸板当障碍物会稳定很多。

这个小车是学传感器融合和简单决策逻辑的好项目。后面可以加WiFi图传、加激光雷达做SLAM,一步步升级。先把基础的避障跑通了再谈高级功能。


作者:隔壁老王的教程
链接:https://www.aiddithome.com/p/39d9fc5c83d6.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
线比代码多
1楼 · 3小时前

80块就能做一套,学生党友好

调参到凌晨
2楼 · 3小时前

中值滤波防干扰这个技巧学到了,之前用平均值总是被毛刺影响

深圳打工人Alan
3楼 · 3小时前

舵机扫描+超声波这个方案虽然原始但是可靠,比红外避障准多了

触底反弹的Tony
4楼 · 3小时前

Echo引脚要分压这个细节很重要,很多人直接接5V到ESP32然后烧了引脚