US-100超声波测距模块,stm32串口接收加OLED显示

步骤一 准备材料

1,stm32开发板
2,us-100超声波测距模块
3,oled屏幕(用于显示)
4,杜邦线若干(连接用)
/电脑啥的就不说了/

步骤二 硬件连接

一,看图(原理图)连线

aaa
注意:我在这使用的是串口测距模式,所以此跳线帽必须插上
在这里插入图片描述

在这里插入图片描述
注意:TX与单片机串口TX连,RX与串口RX连

测距模块连好之后我们再来连OLED(只是为了显示用,也可以用串口发送到上位机在电脑上看)
在这里插入图片描述
这是端口定义,采用SPI,为了方便用了PD2-6六个连续的引脚,把屏幕对应连接就好了

注意:此工程用的是cube配置生成的代码,开发板使用的是正点原子F4的开发板,(如果相同可以直接把程序拿过去用)关于cube配置和代码讲解在第三四部分

现在我们假装已经连好了,效果如下(有点乱哈哈)
在这里插入图片描述

步骤三 cube配置部分(不用cube用库函数也一样)

1-配置串口

在这里插入图片描述
在这里用的是串口2(串口1我自己调试的时候用的,不用管)
1-mode选择Asynchronous(异步模式)
2-parameter Settings,只需要把波特率改成9600就行,其余默认。
(改成9600的原因是需要以9600波特率向测距模块发送0x55,其才会工作)

2配置GPIO(给oled用)

配置结果如下(根据自己情况配置和连线)
在这里插入图片描述
配置完这两个就可以生成代码了,(注意路径不要包含中文字符),然后开始快乐的程序环节。

步骤四 程序讲解部分

oled部分和cube自己生成的就不讲了,主要说一下关于测距模块的部分。

定义部分

都有注释,就不说了。
在这里插入图片描述
在这里插入图片描述

主函数部分

在这里插入图片描述
110行处为开启接收中断,在接收到数据时,会进入接收中断,第一个参数是串口号,第二个参数是存放数的地址,第三个参数是接收数据的个数。注意此函数要在中断回调函数中调用,否则只会执行一次,就是只能接受到两个数据后面就不再进入中断了。

回调函数部分

在这里插入图片描述
上面用到的几个关于串口的函数都可以在hal库里面uart.h里面找到。关于发送和开启接收中断直接用就行,回调函数需要自己写。(不理解回调函数的可以去百度一下,简单看来就是进入中断这个函数会被执行)

步骤五 原理及整体思路讲解

原理部分(应该放在最开始?懒得改了哈哈)

在串口模式下只需要在 Trig/TX 管脚输入 0X55 (波特率 9600),
系统便可发出 8 个 40KHZ 的超声波脉冲,然后检测回波信号。
当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过 Echo/RX管脚输出。
输出的距离值共两个字节,第一个字节是距离的高 8 位
(HDate),第二个字节为距离的低 8 位(LData),单位为毫
米。即距离值为 (HData*256 +LData)mm。
在这里插入图片描述

程序思路

在while(1)里面一直发送0x55给测距模块,模块就会返回两个八位的数据,分别是距离的高八位和低八位,单位mm,每次接收到返回的数据时都会进入中断把返回的数据保存下来,然后在while(1)里面对数据进行处理和显示。(思路很简单,我却弄了好长时间,好想哭)

步骤六 成果验收

emm一个人不太方便拍,几十厘米(多的没验证,据说可以测四米)内还是挺准的,误差大概几mm吧。

工程链接https://download.csdn.net/download/qq_45010210/12232502

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值