1.超声波模块介绍

HC-SR04超声波模块基本工作原理:
超声波发射器向某一方向发射超声波,在发射的时刻开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340*t/2

(1)采用IO口TRIG触发测距,当给它一个最少10us的高电平信号时启动。
(2)模块自动发送8个40khz的方波自动检测是否有信号返回。
(3)通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波发射到返回的时间。
测距距离=(高电平时间×声速(340m/s))/2
trig:控制端 echo:接收端
4)模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测,即可以达到你移动测量的值

2.驱动代码

树莓派驱动超声波模块驱动代码如下:

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>
#define Trig    4
#define Echo    5void ultraInit(void)
{pinMode(Echo, INPUT);  //设置端口为输入pinMode(Trig, OUTPUT);  //设置端口为输出
}float disMeasure(void)
{struct timeval tv1;  //timeval是time.h中的预定义结构体 其中包含两个一个是秒,一个是微秒/*struct timeval{time_t tv_sec;  //Seconds.suseconds_t tv_usec;  //Microseconds.};*/struct timeval tv2;long start, stop;float dis;digitalWrite(Trig, LOW);delayMicroseconds(2);digitalWrite(Trig, HIGH);delayMicroseconds(10);      //发出超声波脉冲digitalWrite(Trig, LOW);while(!(digitalRead(Echo) == 1));gettimeofday(&tv1, NULL);           //获取当前时间 开始接收到返回信号的时候while(!(digitalRead(Echo) == 0));gettimeofday(&tv2, NULL);           //获取当前时间  最后接收到返回信号的时候/*int gettimeofday(struct timeval *tv, struct timezone *tz);The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL.*/start = tv1.tv_sec * 1000000 + tv1.tv_usec;   //微秒级的时间stop  = tv2.tv_sec * 1000000 + tv2.tv_usec;dis = (float)(stop - start) / 1000000 * 34000 / 2;  //计算时间差求出距离return dis;
}int main(void)
{float dis;if(wiringPiSetup() == -1){ //如果初始化失败,就输出错误信息 程序初始化时务必进行printf("setup wiringPi failed !");return 1;}ultraInit();while(1){dis = disMeasure();printf("distance = %0.2f cm\n",dis);delay(1000);}return 0;
}

3 说明

(1)超声波模块的VCC电源要接5V的,如果接3.3V,模块的测距数值会不正确,在同一个数值范围波动;
(2)此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作;
(3)测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的结果;
(4)超声波测距模块(电平触发)得到厘米单位的距离为什么除以58

a.初始化时将trig和echo端口都置低,首先向给 trig发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

树莓派开发之超声波模块相关推荐

  1. 树莓派超声波模块测距

    参考:树莓派超声波模块测距及C语言demo 作者:一只青木呀 发布时间: 2020-07-22 16:54:16 网址:https://blog.csdn.net/weixin_45309916/ar ...

  2. 32、树莓派的简单测试串口通信和超声波模块测距

    基本思想:随手记录一下众灵科技树莓派的测试串口通信和超声波模块,其镜像还是很nice,基本的库都给你安装了,比较大 链接:https://pan.baidu.com/s/11tMdoRh3bHmcYz ...

  3. 树莓派外设开发之超声波

    树莓派超声波测距 树莓派Gpio引脚图: 注意:这里代码中使用的是wiringPi编码,图中GPIO 针脚定义为根据BCM编码定义 超声波模块介绍: 接线参考:模块除了两个电源引脚外,还有Trig,E ...

  4. 超声波模块STM32F1X开发

    一.使用的超声波型号 1.1 型号: AJ-SRO4M-T-X 1.2 产品概述 AJ-SR04M- T-X超声波测距模块,是采用收发一体的防水带线探头,运用 非接触试超声波探测技术设计而成.产品在2 ...

  5. 【GD32使用】基于GD32的超声波模块开发

    基于GD32的超声波模块开发 代码见下: 首先初始化引脚接口,利用PA11作为Triger触发脚,PB12作为Echo脚. (注意如果采集到的超声波信号一直为0,请检查触发脉宽是否大于10us,另外驱 ...

  6. 基于Arduino UNO开发板,超声波模块,直流电机,实现电机驱动

    这:是我的手机,一台能无线充电的华为Mate 30Pro 4G 这:是我的的无线充电器,(虽然速度低,毕竟店家送的) 这是我维持一年多的充电样子,为什么这么做呢......因为无线充电会发烫,毕竟无线 ...

  7. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)

    参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...

  8. 蓝桥杯单片机设计与开发⑫ ---超声波模块

    一.基本原理 超声波发射模块向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时. 二.计算公式 距离 = 声速 × 发 ...

  9. 【物联网】老程序教你一招,10行代码让超声波模块秒变声控开关

    目录 1. 超声波模块的测距原理 2. 超声波模块如何与Arduino开发板连接 3. 先从测距开始 4. 如何将超声波改造成声控开关 5. 再加一个超声波开关 在本文最后有完整的视频讲解 玩Ardu ...

最新文章

  1. linux内核开机显示企鹅logo,批改linux内核kernel开机logo(小企鹅)
  2. 网吧无盘服务器从30台----115台的经验(二)
  3. 架构设计之设计模式 (二) 静态代理和动态代理--间接“美”
  4. 如何启用计算机超级账户,Windows7启用超级管理员账户的方法
  5. 以下哪个不是python财经数据接口工具_这7种Python的全新玩法,大部分人都不知道!...
  6. linux环境下远程访问ftp
  7. 知道吗?BAT去年在KDD上作为第一单位发表了12篇文章!(内附每篇文章解读)...
  8. 损失函数的意义和作用_BN究竟起了什么作用?一个闭门造车的分析
  9. MVC学习笔记三:WebGrid控件的简单使用
  10. 浙江省考三级专业目录计算机类是,你的专业属于哪类?浙江省考报名必备专业分类表!...
  11. 微信公众号之简单使用
  12. fetion-robot是基于web飞信接口的飞信机器人
  13. Roguelike随机地下城 | 二、设置门和优化最终房间的选择
  14. 【惨遭被裁】985毕业,依然过不好这一生
  15. 微创脑科学上市破发:公司市值143亿港元 微创医疗是大股东
  16. py从入门到实践 第四章
  17. 解决vps上的ssh掉线------tmux
  18. 如何兼容IE4:Web浏览器兼容性浅谈
  19. 字节码基础:JVM字节码初探
  20. LSTM 的几种改进方案

热门文章

  1. MongoDB 批量写操作
  2. 不小心把502胶水溅入眼中怎么办?会失明吗?
  3. 虚拟机VMware Workstation与主机间共享文件的七种方法
  4. 【线性代数】第一章 1.1矩阵及其运算
  5. 1~100之间,7的倍数的个数,并打印
  6. 《网络安全工程师笔记》 第十六章:OSI与TCP-IP5层协议
  7. 奇舞周刊第 460 期:详聊前端异常原理
  8. 2021华为3.19面试惨痛经验教训
  9. java浏览器刷新页面_使用js刷新浏览器页面
  10. CSS属性详解——使用border属性设置边框