本文将介绍如何使用STM32F103C8T6单片机和HC-SR04超声波测距模块来实现测距功能,并通过0.96寸OLED屏幕显示测距结果。
首先,我们需要了解一下HC-SR04超声波测距模块的工作原理。该模块通过发送超声波脉冲并接收回波信号的时间来计算物体与模块之间的距离。具体实现过程如下:
- 发送一个10微秒的高电平脉冲至Trig引脚,该脉冲将触发模块发送一组8个40kHz的超声波脉冲。
- 当超声波脉冲发射后,模块将Echo引脚输出高电平,并持续时间与超声波传播路径的长度成正比。
- 使用STM32F103C8T6单片机的定时器(Timer)来测量Echo引脚输出高电平的时间,即为超声波传播路径的时间t。
- 计算物体与超声波模块之间的距离:距离 = t * 340m/s / 2,其中340m/s是声速,除以2是因为超声波信号从模块发出后需要返回。
接下来,我们需要连接硬件。
准备硬件:
1.HC-SR04超声波测距模块
2.stm32c8t6核心板
3.OLED屏幕(4个引脚的)。
4.ESP-01S,wifi模块
准备软件
1.keil5
2.串口助手
将的Trig引脚连接到STM32F103C8T6单片机的GPIO口(例如PB11),将Echo引脚连接到另一个GPIO口(例如PB10)。同时,将0.96寸OLED屏幕模块连接到单片机的I2C口(例如PA5和PA7)。
接下来我们需要在STM32F103C8T6单片机上编写程序。首先,我们需要定义一些参数:
后面主要是通过定时器4的中断处理
这是一个测量超声波传感器距离的函数。
函数使用HC-SR04超声波传感器进行测量,该传感器通过发送超声波脉冲并测量返回的回响时间来计算物体与传感器之间的距离。
在代码中,变量"t"保存回响时间,变量"lengthTemp"保存单次测量得到的距离值(以厘米为单位),变量"sum"保存多次测量时得到的距离值总和。 这个函数会进行5次测量,然后将这5次测量的平均值作为最终的距离值,并返回。
在主函数中,我们首先初始化GPIO口和I2C接口。然后进入一个无限循环中,在循环中发送超声波脉冲并使用定时器测量Echo引脚输出高电平的持续时间。最后,通过计算得到物体与模块之间的距离,并将其显示在OLED屏幕上。 需要注意的是,在程序中使用了延时函数和sprintf函数,需要自行实现或使用相应库函数。 以上就是使用STM32F103C8T6单片机和HC-SR04超声波测距模块实现测距功能,并通过0.96寸OLED屏幕显示测距结果的方法。
直接找我要例程,对应的接上线,就可以复现一模一样的功能
上传数据到onenet
只需要在代码这样写就可以了
关于onenet上传数据的内容,可以看我其他的文章,都有写。