运行环境

  • Windows10
  • STM32CubeMX___Version 6.1.0
  • Keil5(MDK5)___Version 5.27

简介

这是一个针对智能车 有来有往 单收单发超声波模组的一个教程


模组图片

一、参数简介

最远接收距离:
>5 米
最短接收距离:
<4 厘米
最大接收角度:
>90 度
数据波动范围:
<3 毫米
模块工作电压:
5V
模块工作方式:
串口
模块发送频率:
50HZ
模块通信波特率:
115200

二、使用过程

发送超声波模块:发送超声波模块只需要上电即可。发送超声波模块上电后,
送超声波模块上的 LED 会快闪,此时证明,发送超声波模块已经在正常工作了。
(注:发送超声波模块上面留有了 RX TX,这是用来刷超声波固件。)
接收超声波模块:发送超声波模块通上电之后。
需要将发送超声波模块接收超声波模块对准,此时接收超声波模块需上的 LED
会快闪。
此时证明接收超声波模块已经接收到发送超声波模块发射的超声波。
此时接收超声波模块上接收到的数据即是发送和接收超声波的距离数据。
值得注意的是,2 个超声波发射头需要对准,才会通信成功,发送超声波模块
需上电即可工作(发送上的 LED 闪烁),此时只是证明了发送超声波模块已经成
功发射出超声波,但并不能证明接收超声波模块会接收到数据,只有接收到发送
超声波模块的声波后,接收超声波模块上的 LED 闪烁后,才能证明这两者已经通
信成功。接收超声波模块才会有距离数据输出。

三. 数据格式

接收超声波已经接收到发送超声波的数据后,接收超声波模块上的
LED 灯会快速闪烁,会通过串口以 50Hz 的频率发送出距离数据。
数据格式是:0XA5+两个字节数据(16 进制),距离的单位是 mm,
例如:返回数据是: A5
00 C8,意思就是:200mm。
数据的含义是什么呢?
0XA5 是帧头,另外 2 个是数据存储字节。
A5
00
C8
帧头
高八位数据存储字节
低八位数据存储字节
如何解算:很简单,把 2 个字节数据移位然后逻辑运算即可。
如下:
distance_left = dat_left[1]<<8 | dat_left[2];

四、STM32CubeMx的配置

1、开启时钟

2、下载配置

3.开启一个串口

4.打开NVIC

五、代码详解

1.头文件包含

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

2.变量定义,以及中断逻辑处理

/* USER CODE BEGIN 0 */unsigned char   dat_left[3];                         //存放超声波串口接收的字节数unsigned char   num_left;                                        //超声波数据接收变量int            distance_left;                    //计算出来的距离void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if( huart == &huart2 ){HAL_UART_Receive_IT(&huart2,&dat_left[num_left],sizeof (num_left));if(dat_left[0] != 0xA5){num_left = 0;}else num_left++;if(num_left==3){num_left = 0;distance_left = dat_left[1]<<8 | dat_left[2]; }
}
}#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);//注意把&huart1改为自己的stm32使用的串口号return ch;
}/* USER CODE END 0 */

3.开启中断接受

  /* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart2,&dat_left[num_left],sizeof (num_left));/* USER CODE END 2 */

4.连续接受

  while (1){printf("distance_left=%d\r\n",distance_left);HAL_Delay (100);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

六、总结

市面上大部分的 智能车的单收单发模组原理都一样,最关键的是掌握核心串口处理函数,切勿急躁,静心能事半功倍,欲速则不达。

智能车 有来有往 单收单发超声波模组 STM32CubeMx HAL库相关推荐

  1. LiteOS基于Sensorhub的超声波模组移植

    摘要:本文为你带来LiteOS基于Sensorhub的超声波模组移植的应用. 1.Sensor Hub LiteOS传感框架即Sensor Hub,是一个基于Huawei LiteOS物联网操作系统的 ...

  2. 第十七届智能车竞赛英飞凌专题培训 ——四轮摄像头组入门讲解

      四轮摄像头组,作为走过16年仍然最纯粹的竞速组,充满着速度与激情,既有高手选择该组挑战极限,也是新手最喜欢的传统组,还是最能体现智能汽车竞赛魅力和初心的组别,可以说集万千宠爱于一身啦!每届参加人数 ...

  3. 第十七届智能车竞赛英飞凌专题培训 ——无线充电组浅析及LED驱动方案讲解

      第十七届全国大学生智能汽车竞赛重新定义了无线充电组,不再强调节能,而是通过限定超级电容的容量来降低单次电量的续航里程,需要在行进中自行规划是否需要补充电能以及补充多少,对充电策略.速度控制策略提出 ...

  4. 【第十六届全国大学生智能车竞赛回顾——华东赛区单车拉力组(全国二等奖)】

    一.简述 作为第二次参加智能车大赛的"老队员",有了前一届的参赛经验,上手起来确实轻松了不少.因此,在选择组别的时候,我便想挑战一下自己,选择了这个今年新加入的且难度较大的单车拉力 ...

  5. 第十六届全国大学生智能车竞赛(安徽赛区)信标组蒟蒻的想法

    前言:作为一名准大三的软件工程学生,刚刚结束了他的为期十几天的智能车之旅,学习了很多,受益匪浅. 1. 什么是智能车? 印象里面好像就是一个车在赛道上跑,然后一群人在哪里看着它跑,就像遥控车那样简单, ...

  6. 智能车竞赛技术报告 | 单车拉力组 - 哈尔滨工业大学 - 紫丁香

    简 介: 本设计以第十六届全国智能车大赛为背景,采用大赛组委会统一指定的K型车模,以16位单片机STC16F为核心控制器,实现电单车的平衡并能通过指定赛道元素.以Keil为开发环境,利用陀螺仪获取车模 ...

  7. 2021年的疫情下的智能车竞赛

    简 介: 本文汇集了在2021年参加第十六届全国大学生智能车竞赛同学的一些提问. 关键词: 智能车竞赛,学生提问 §01 艰苦组赛道 卓老师我们的艰苦组赛道 . ▲ 图1.1 艰苦的赛道 §02 延期 ...

  8. 第十六届智能车竞赛赛前补充比赛信息

    简 介: 本文给出了在第十六届全国大学生智能车竞赛中,关于AI视觉组以及信标组中补充的信息. 关键词: 智能车竞赛,AI视觉组,信标组 §01 AI视觉组 根据 第十六届全国大学生智能车竞赛竞速组-室 ...

  9. 智能车竞赛中视觉AI组别的打把问题

    简 介: 根据同学提出的关于室内视觉组激光靶标演示视频中激光光斑从靶标边缘移到靶标中心的过程,对于靶标系统对激光斑点判断原则提出了疑问进行解释. 关键词: 智能车竞赛,AI,视觉组,激光靶标 §01 ...

  10. 基于RT106x电磁智能车AI算法

      今天,来自NXP公司的宋岩和张岩向我展示和讨论了他们使用部署在智能车单片机中上的人工神经网络控制电磁车模运行的实验情况情况.下面的视频中,车模的方向控制是由单片机中的神经网络模型给出了.车模运行速 ...

最新文章

  1. linux awk 获取最后一列 获取倒数第二列
  2. SUMO输出车辆相关参数
  3. [数据库] SQL语句select简单记录总结
  4. lamda表达式修改数据_图解sql面试题:如何按条件修改数据?
  5. 一叶知秋:基于“单目标域样本”的领域自适应方法
  6. python计算长方体体积编程_计算体积 编程创建一个Box类(长方体) 联合开发网 - pudn.com...
  7. Exchange 2013 、Lync 2013、SharePoint 2013
  8. Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题
  9. 写一个VSCode插件
  10. 查看ip命令 linux centos7,如何centos7查看ip(地址)命令?
  11. Carsim工况设置:道路场景的构建
  12. Linux下串口的配置
  13. 蜗牛君漫聊设计模式---建造者模式
  14. 5.22非常虚伪的集训总结
  15. ADT无法识别飞思卡尔的解决办法
  16. 条件判断语句 if case
  17. java 调用foxmail_JavaMail(JAVA邮件服务) API详解
  18. 从《乔布斯传》里得到的20条经验和教训
  19. theano 安装_Theano-安装
  20. PSP上所有模拟器的使用方法

热门文章

  1. pip install 时 WARNING: No metadata found in e:\anaconda\lib\site-packages 问题解决
  2. 复杂性思维第二版 三、小世界图
  3. touch: cannot touch ‘***’: Read-only file system
  4. 磁盘阵列RAID卡组建设置
  5. centos 7查看CPU温度
  6. 花两年时间去面试一个人——给准备面试的启发
  7. html5转换成mp4,ffmpeg将mov文件转换为mp4的HTML5视频标签IE9
  8. python实现格兰杰因果关系检验
  9. 6410启动问题排除
  10. 各类常见时间复杂度复习「o(1), o(n), O(n^2), o(logn), o(nlogn)」