给小车装上"眼睛"
做遥控小车是入门,做避障小车才算真正开始学机器人。这个项目用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,一步步升级。先把基础的避障跑通了再谈高级功能。










80块就能做一套,学生党友好
中值滤波防干扰这个技巧学到了,之前用平均值总是被毛刺影响
舵机扫描+超声波这个方案虽然原始但是可靠,比红外避障准多了
Echo引脚要分压这个细节很重要,很多人直接接5V到ESP32然后烧了引脚