基于HC-SRO4与nrf24l01的超声波对射实时测距系统
来源:互联网 发布:量角器cad软件 编辑:程序博客网 时间:2024/05/22 12:46
硬件搭设
超声波
HC-SRO4超声波模块的一些基本资料大家可以在某度上随便输入几个字就能找到好多,在这里我就不啰嗦了,接下来我们重点来研究一下它的原理图,以便于我们对对射有更好的了解。下面就是我找到的我们的超声波的原理图
在这里我要先简单介绍下对射的原理:两个超声波,通过一些特定的设置,让一个只发送,一个只接收,这样两个超声波就形成了对射关系。进而进行一个实时单向的测距工作。
超声波的原理大家应该略知一二,它是依据声音的物理反射的来测距的,声波从一端传出,开始计时,当另一端接收到传出的信号时停止计时利用公式推算出距离。
在这里,负责发送的模块不需要做任何处理,不明白为什么不需要做处理的同学在你们实际操作的时候会明白。负责接收的模块我们需要对他做一些特定的处理,处理的目的是让它不接受自己发射的超声波而是接受发射端发射的超声波。接收端对超声波的处理有两种方式:
软处理
所谓软处理就是通过程序来更改内部的设置,如关闭发射端。这种方法是最容易想到也是大家最接受的,但是理想是丰满的现实很骨感。个大家看一下超声波的发射接收程序
void EXTI9_5_IRQHandler(void){ delay_us(10); //延时10us if(EXTI_GetITStatus(EXTI_Line7) != RESET) { TIM_SetCounter(TIM2,0); TIM_Cmd(TIM2, ENABLE); //开启时钟 while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平 TIM_Cmd(TIM2, DISABLE); //定时器2失能 UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/200.0; //计算距离 if(UltrasonicWave_Distance>0) { printf("distance:%f cm",UltrasonicWave_Distance); } EXTI_ClearITPendingBit(EXTI_Line7); //清楚EXTI7线路挂起位}}----------/* * 开始测距,发送一个>10us的脉冲,然后测量返回的高电平的时间 */void UltrasonicWave_StartMeasure(void){ GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10us的高电平RIG_PORT,TRIG_PIG这两个在define中有定义 delay_us(20); //延时20US GPIO_ResetBits(TRIG_PORT,TRIG_PIN);}
分析程序不难看出,定时器的开启是由超声波的发射端控制的,而失能却是由接收端控制,一旦关闭了发射端,定时器就无法工作。当然也有人提议说修改定时器的失能不就行了吗,可以是可以,但是太麻烦,我不想弄。。。至于程序的如何修改本人目前还没有过多的如研究,还需要膜拜大神,以后或许会有补充。见谅。
硬处理
所谓硬处理,毫无疑问是直接从硬件下手,能拆就拆,咳咳,保证拆了也能用的条件上。还记得上面让大家找的原理图吗?现在派上用场了在这里我们不需要看太多东西,对于原理图只需要找到接收和发射端就好。
从上图可以看到,发射端是由两个引脚控制,分别是TIOUT和T2OUT。我们上面想的阻止发射端发射的想法行不通,那我们就让超声波来个“自欺欺人”,所谓自欺欺人就是让超声波认为自己已经发送了超声波,其实没有发送出去。最好的方法就是直接切断发送端的线路,直白点就是切断7、14号两个引脚。方法有很多,建议大家直接用破坏的方法去完成。下图为本人的“成果”。
- 24L01
无线收发模块我在这里选用的是正点原子家的,不建议大家图便宜去买一些小厂家的元器件,真心有风险。 - 开发板
stm32mini板,这里不过多解释。
相关程序
- 超声波模块
(未完待续)
- nrf2401模块
- 主函数
注意事项
- 基于HC-SRO4与nrf24l01的超声波对射实时测距系统
- HC-SRO4测距模块的程序设计
- STM32与HC-SR04超声波测距
- STM32与HC-SR04超声波测距
- 基于stm32的超声波测距
- 基于Openmv的超声波测距
- 基于STM32F103的超声波测距
- HC-SR04超声波测距代码
- 基于89C51单片机的超声波测距系统设计与制作
- 树莓派-超声波测距(HC-SR04)的使用
- 基于FPGA的超声波测距(一)
- 基于fpga的超声波测距(二)
- 基于STM32F407的超声波测距程序
- 基于51单片机超声波测距的学习
- HC-SR04 超声波测距模块/硬件/软件
- Arduino+HC-SR04 实现超声波测距
- STM32f407驱动hc-sr04超声波测距模块
- STM32控制超声波测距模块HC-SR04
- 五子棋游戏
- 浙大博士在阿里:曾想低头离开,没想到一干就停不下来……
- Java 并发之 CountDownLatch、CyclicBarrier 和 Semaphore
- 【社交系统ThinkSNS研发日记十二】Laravel Model 利用 Macroable 为数据模型添加宏能力
- 《C++ Primer》第五版课后习题解答_第二章(1)(01-08)
- 基于HC-SRO4与nrf24l01的超声波对射实时测距系统
- jq替换网页上所有img的src值中某个字符串
- hdu1024 最大M个子段和 Max Sum Plus Plus
- 麻将出牌时检测孤立的牌
- 栈的链式和数组存储实现
- lintcode刷题——螺旋矩阵
- 十分钟教程,eclipse配置maven + 创建maven项目
- 现代 PHP 新特性系列(五) —— 闭包和匿名函数
- NodeJs服务器启动后在浏览器访问时中文显示乱码处理方法