运行环境

  • 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. java统计大于0的个数_java中0的问题(依据0统计数量时出错)
  2. hub设备_HUB选择困难症?从这里解决
  3. 访问tomcat manager应用遇到的403 access denied错误
  4. .net 导出excel_Qt编写的项目作品18-数据导出到Excel及Pdf和打印数据
  5. 《飞鸽传书》把写程序和文学创作相提并论
  6. ZZULIOJ 1103: 平均学分绩点(函数专题)
  7. 百度AI学习-错误类型大全
  8. pdf英文转换成html网页,PDF文件转换成html网页文件小方法
  9. 【luogu P3979 遥远的国度】 题解
  10. 【语音识别】基于matlab特定人的语音识别分辨【含Matlab源码 534期】
  11. 国五条催生末班车效应 郑州二手房交易量激增
  12. 招聘中的热门技术技能:SQL、Java、Python 和 Linux
  13. fanuc机器人空间信号解析
  14. Navicat提示Access violation at address ... in module ‘navicat.exe‘.Write of address ...
  15. 并发知识体系大全:饿了么4面(Java岗)面经分享,干货满满
  16. 我100米跑了7秒会不会太慢了
  17. 计算机校本培训心得,校本培训心得体会总结
  18. VOLTE网络架构、接口与功能实体
  19. 计算机电子专业好的学校6,中国最好的计算机专业学校
  20. D2550安装OctoPrint实现众多3D打印机管理功能

热门文章

  1. 时钟芯片AD9520
  2. 时间戳 天数 php,php时间戳转天数
  3. 2021牛客寒假算法基础集训营1 C 无根树问题的处理策略 前序后序遍历 奇偶匹配 DFS
  4. 【动态规划 记忆化搜索】JZOJ_6287 扭动的树
  5. 西安交大计算机考研分数线2020院线,西安交大考研分数线2020院线_全国硕士研究生招生考试网...
  6. Kubernetes Pod调度策略
  7. HTML5 Canvas 画钟表
  8. 在项目中如何做图片优化
  9. 计算机加硬盘后速度变慢,硬盘速度变慢怎么办 硬盘速度慢解决方法步骤介绍【详解】...
  10. 飞凌ok6410一键烧写linux文件,飞凌OK6410-B Linux学习之一刷机过程