超声波测距代码_11.树莓派3B+ HCSR04超声波测距

两年前在CSDN上面也写过HC-SR04模块的使用,当时是使用的wiringPi库操作的,这次使用的Node.js。这个系列的文章也都是使用Node.js操作树莓派。

1.产品特点

HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能, 测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:

  1. 采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号;

  2. 模块自动发送  8 个 40khz 的方波,自动检测是否有信号返回;

  3. 有信号返回,通过  IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声

波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

2.实物图

d10a5f127f9b50ee682aebe3b530624d.png560a9d4b3ff3ad93ec560ea15c63bc45.png

3.引脚说明

序号引脚说明
1Vcc电源正极 DC 5V
2Trig触发信号控制引脚
3Echo回响接收引脚
4Gnd电源负极 

注意:

  1. 此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响 模块的正常工作。

  2. 测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的

4.超声波时序图

0a4ae00da4896f3faa28ef4f68fb9a2d.png

这里的时序图和产品特点中介绍的也就一样了。

5.电路原理图

dd48a74fbcb1d910f5eb3552ec9dd089.png

6.实验电路图

55bfcd5f0a7434d8d1f71e18567b3240.png

7.实验代码

const Gpio = require('pigpio').Gpio;// 每ms的声速const MICROSECDONDS_PER_CM = 1e6/34321;const trigger = new Gpio(23, {mode: Gpio.OUTPUT});          // 设置 trigger 引脚为输出引脚const echo = new Gpio(24, {mode: Gpio.INPUT, alert: true});  // 设置 echo 引脚为输入trigger.digitalWrite(0); // 设置 trigger 引脚为低电平const watchHCSR04 = () => {  let startTick;  echo.on('alert', (level, tick) => {    if (level == 1) {      startTick = tick;    } else {      const endTick = tick;      const diff = (endTick >> 0) - (startTick >> 0); // 无符号的 32位数据      console.log('测量的距离 = ',diff / 2 / MICROSECDONDS_PER_CM + 'cm');    }  });};watchHCSR04();// 每1s测量一次巨鹿setInterval(() => {  trigger.trigger(10, 1); // 设置 trigger 为高电平 10ms 时长}, 1000);

这次使用的是pigpio这个库,这个库使用的引脚关系是BCM编码,之前的rpio这个库使用的物理引脚BOARD编码。这里是最大的区别,其他的就是看文档怎么使用了。

关于引脚图可以看之前的文章。

8.测量数据

root@raspberrypi:/home/pi/Desktop/nodePai# node 4.hc-sr042.js测量的距离 =  133.5944925cm测量的距离 =  133.1826405cm测量的距离 =  132.3932575cm测量的距离 =  196.48772499999998cm测量的距离 =  196.57352749999998cm测量的距离 =  196.48772499999998cm测量的距离 =  135.56795cm测量的距离 =  31.403715cm测量的距离 =  29.7734675cm

经过最近的使用发现,在用Node.js操作树莓派使用这些模块,都不需要去怎么在乎时序图,在I2CSPI中这两个中体现还要明显。

这里我们可以发散一下,当距离小于某一个值的时候,就让蜂鸣器响,随着距离的减小,蜂鸣器的响动频率越来越大;这里就是我们常见的汽车后面的超声波雷达了,汽车后面使用的收发一体的超声波探头。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值