想知道怎么用4个引脚就能测出3厘米到3米的距离,而且精度还控制在±3毫米?听起来像卖点,其实这就是HC-SR04超声波传感器在Arduino圈子里被用到烂大街的原因:够简单,也够靠谱。

HC-SR04靠的是40kHz的超声波,跟蝙蝠、海豚用的回声定位一个路子。你给它Trig引脚一个10微秒的脉冲,它就朝外发射超声波,等声波撞到东西弹回来,Echo引脚会持续保持高电平,直到接收到回波。剩下的就是一道小学算术题:距离 = (时间 × 声速) ÷ 2。除以2是因为声波走了个来回。

打开网易新闻 查看精彩图片

这块小板子工作电压5V,电流大概15mA,测量角度小于15度,尺寸也就45mm×20mm×15mm。最让人舒坦的是引脚只有4个:VCC接5V,Trig发触发脉冲,Echo读回波脉宽,GND接地。拆过智能垃圾桶、倒车雷达或者液位检测小玩意儿的人,打开壳子大概率能见到它的身影。

和光学的红外测距传感器不一样,HC-SR04用超声波,不挑光线,大太阳底下或者全黑环境里表现一致,所以不光在机器人避障里吃得开,连一些车库门控制、停车场车位检测都用它。当然缺点也有——碰到吸音材料或者表面倾斜角度太大的物体,回波就可能收不回来,这时候读数会飘。

Arduino这边接起来更是几分钟的事:VCC→5V,GND→GND,Trig和Echo各占一个数字口,代码里发脉冲、算脉宽,几行就能把测距跑通。很多教程上来就给一堆函数库,其实不用,直接用pulseIn()读Echo高电平持续时间,套上上面那个公式,串口监视器里立马出距离,够新手上手第一课用了。