基于单片机的超声波测距仪设计_kaic

摘    要

如今社会持续深化转型,在人工智能领域,传感器采集外部数据,经过处理器对数 据运算和处理,从而实现相应的功能。比如自动驾驶技术中,超声波传感器应用广泛, 超声波是一种频率在 20khz 以上的声波,具有声波传输的物理基本特性反射、折射、干 涉、衍射和散射。
本次选题经过对超声波技术的深入了解,旨在设计一个超声波测距仪,进行无接触 式空间距离测量,通过优化硬件,以及升级软件算法,使超声波技术在人们的生活中得 到广泛应用。该超声波测距仪器基于 stm32 单片机,利用超声波发射接收头,实现短距 离的数字信号传输,运用温湿度传感器采集所处环境的温度和湿度,集中处理数据,对 测量数据进行校准,保障数据的准确性,使得测距仪在严苛的条件下,仍然可以稳定运 行。最终在液晶显示屏呈现测量数据,能够达到便捷、快速、准确的距离测量。同时, 能够在手机客户端操作,利用蓝牙传输信息,更加便捷测距。但是,由于系统硬件的限 制,仪器存在一定程度上数据误差。

关键词:超声波;stm32;手机客户端
 


Design of ultrasonic rangefinder based on single chip computer

Abstract

Today's  society  continues  to  deepen  the  transformation,  in  the  field  of  artificial intelligence, sensors collect external data, through the processor to calculate and process the data,  so  as  to   achieve  the   corresponding  function.  For   example,  in  automatic  driving technology, ultrasonic sensors are widely used. Ultrasonic wave is a kind of sound wave with a  frequency  above  20khz,  which  has  the  physical  basic  characteristics  of  sound  wave transmission: reflection, refraction, interference, diffraction and scattering.
After  in-depth  understanding  of ultrasonic  technology,  this  topic  aims  to  design  an  ultrasonic rangefinder for non-contact space distance measurement, through optimizing the  hardware, as well as upgrading the software algorithm, so that ultrasonic technology is widely  used in people's life. The ultrasonic ranging instrument is based on stm32 microcontroller,  using ultrasonic  transmitting  and  receiving  head,  to  achieve  short  distance  digital  signal  transmission, the use of temperature and humidity  sensors to collect the temperature and  humidity of the environment, centralized data processing, calibration of the measured data,  ensure the accuracy of the data, so that the rangefinder in harsh conditions, still can run stably. Finally, the measurement data is presented on the LCD screen, which can achieve convenient,  fast and accurate distance measurement. At the same time, can operate in the mobile client,  using Bluetooth transmission information, more convenient ranging. However,  due to the  limitation of system hardware, the instrument has a certain degree of data error.

Key Words:Ultrasonic Wave;Stm32;Mobile Client
 


目    录
摘    要
Abstract 
1 绪论
1.1 选题背景及意义
1.2 选题的目的
1.3 课题主要内容
2 方案设计
2.1 超声波原理
2.2 整体方案
3 硬件电路设计
3.1 核心模块
3.1.1 STM32 处理器
3.1.2 HC-SR04 超声波传感器
3.2 辅助模块
3.2.1 蜂鸣器
3.2.2 温湿度传感器
3.2.3 显示屏
3.2.4 蓝牙串口通信
3.3 硬件电路
4 软件开发
4.1 微处理器程序设计
4.1.1 超声波测距仪的算法设计
4.1.2 主程序
4.1.3 超声波发射和收集中断子程序
4.1.4 辅助模块子程序
4.2 客户端应用软件设计
4.2.1 功能需求
4.2.2 软件设计
5 系统测试
5.1 功能实现
5.1.1 超声波测距仪实物
5.1.2 客户端应用软件功能
5.2 注意事项
结    论
参 考 文 献
致    谢
 

1 绪论

1.1 选题背景及意义
传统的测距方法在实际使用中存在局限性,当空间环境状况不明晰的情况下,传统 测距无法准确计量距离数据。在自然界,蝙蝠依靠自身特殊结构发出高频声波能够在黑 夜中判断飞行轨迹,进行捕猎觅食,不过这种频段的声波人耳无法听到。人们通过自然 界研究出超声波用于无接触式空间测距,并不断改进技术,超声波技术的应用,也越来 越普及。
目前国内外的研究现状,主要是对硬件性能优化,以及数据算法改良等方面。王楠 等通过设计新型硬件板块,提高性能。熊春山等使用波头技术与零交叉点检测的方式[1], 胡跃辉等对测距数值采取加权算术平均处理的方法,都是进一步改善超声波测距的精 度。随着研究的深入,超声波技术在机械制造、石油化工、航海交通等领域,此外在医 学、生物科学等领域中也占据重要地位。
超声波测距仪能够在空间环境复杂,比如当前区域可见度低或者具有腐蚀性化学物 质在地面上,那么超声波测距能够完全达到测量标准,并且保证人员相对安全,因为超 声波探头发射和接收都在整体模块上,它是一种非接触式测量距离的技术,这些优势是 传统测距所达不到的,也使得该项技术广泛应用。
1.2 选题的目的
超声波测距仪相较于传统测距,具有便捷、无接触式等测量优势。本测距仪基于 stm32 单片机,通过超声波发射接收头,实现对短路径精准测量。
(1)本设计使用 stm32 系列单片机为主控板,其它传感器为辅助模块,制作实物; (2)将超声波测距仪输出的的数据进行短距离传输,并在显示终端进行结果显示; (3)利用温湿传感器,收集环境温湿度数据,对距离数值进行校准,降低误差值; (4)使用 APP Inventor 工具设计手机客户端应用软件,采用蓝牙通信,传输数据; (5)通过在客户端应用软件设置参数,使蜂鸣器对安全距离做出相应的提醒。
1.3 课题主要内容
本文主要包括方案设计、硬件电路组装优化、软件开发、系统测试及总结。通过分 析研究和方案规划设计出满足实际应用需求的超声波测距仪实物。
(1)了解技术本质原理,收集资料;
(2)根据需求,分析模块功能结构;
 


(3)确定仪器硬件整体方案,选购各项模块,并组装仪器;
(4)分析功能需求,设计程序框架,编写主控板和手机客户端程序;
(5)对系统进行测试以及展现,手机客户端调用主控板,并进行距离测量。
 


2 方案设计

2.1 超声波原理
超声波属于特殊的声波[2] ,声波属于机械波的范畴。机械波是由物体振动引起的, 必须依靠介质传输,具有基本的物理特性。超声波具有机械波的特性,并广泛应用于清 洗、消毒、碎石等广泛应用于行业。超声波发射模块内部构造,如图 2.1 所示。


 
图 2.1 超声波发射模块内部构造

超声波模块的设计,原理是电磁感应。通过磁场作用拨片,并产生震动,发射出去。 同时,反射回来之后,再把振动频率转化为电信号。
2.2 整体方案
超声波测距仪选用 STM32 系列单片机为主控板,以及其他模块为辅助模块。通过分 析各项模块的电路接入需求,设计组装连接图,以面包板为基础电路板,使用镊子、美 工刀、电路表等工具将各个模块连接起来,局部到整体,逐步将个模块之间连接起来, 构建仪器模型。并采用电流表和电压检测接处,判断电流和电压稳定情况,判断是否有 虚接问题,同时要保障相关电路连接准确。
实际组合过程中,由于 LCD10602 屏幕分辨率较低,引脚过多,不适用实际设计。 所以,进行综合分析,选择 0.96 寸液晶显示屏,其性能好,引脚仅有四个,利用 IIC 协议通信,极大提高引脚端口利用率。
在完成硬件后,使用 KEIL 工程软件,进行程序模块化编程,能够有效对单项区域
 


程序功能进行测试,而主程序主要负责调用和整合子程序,使得整体架构稳定合理。在 算法设计上,采用准确数学公式理论,利用硬件设备提供的算力,能够使得计算数据快 速精准,为实际应用保障测量数据的准确性。对于手机客户端,登录谷歌插件 Inventor 官网,设计界面排版和逻辑设计。整体系统架构,如图 2.2 所示。

 
图 2.2 整体系统架构

对系统进行调试,优化稳定性,实现超声波测距仪无接触式空间测距,同时提供手 机客户端对仪器进行短距离无线操作。手机客户端通讯简图,如图 2.3 所示。

 
图 2.3 手机客户端通讯简图
 


3 硬件电路设计

3.1 核心模块

3.1.1 STM32 处理器
STM32 系列单片机具有高性能、低成本的特性,基于 Cortex-M3 架构[3] ,内置高速 的处理器以及运算内存 , 能够轻松运行复杂的程序 。本仪器采用芯片型号为 STM32F103RCT6 的系统板作为仪器主控板,对传感器采集的数据进行处理和运算,并控 制各项模块实现相应功能。同时本设计核心功能程序复杂度中等,STM32 系列单片机可 以提供充足的算力支持,保障程序稳定的运行。STM32F103RCT6 系统板,如图 3.1 所示。

 
图 3.1 STM32F103RCT6 系统板

 
图 3.2 STM32F103RCT6 系统板原理图
 


STM32F103RCT6 系统板原理图,如图 3.2 所示。系统板整体电路由单片机、复位电 路、晶振电路构成[4] ,外围电路接口包括 SWD 烧录接口和 USB 电源接口。
3.1.2 HC-SR04 超声波传感器
超声波传感器具有特殊结构,能够发射出高频的声波,经过时间间隔,接收反射回 来的声波,并通过处理器计算得到当前位置距离目标物的精确数据。
本仪器选用 HC-SR04 型号的超生波传感器,其测量最大范围是 4m,误差是±1cm, 价格便宜,能够满足设计基本功能要求 。模块在接入仪器的过程中断电操作,带电情 况下会损坏内部电子元器件,影响其工作寿命,并且需要选择被测物体反射面平整,否 则会影响测量数据准确性。超声波时序图,如图 3.3 所示。

 
图 3.3 超声波时序图

主控板向模块 Trig 引脚端口发送大于 10us 的高电平脉冲,触发模块发射和接收声 波,并通过 Echo 引脚端口反馈与距离等比的脉冲信号,进而主控板处理脉宽时间得出 时间间隔,计算距离数据。超声波传感器与主控板引脚端口连接,Trig 与 B5,Echo 与 B6。HC-SR04 超生波传感器,如图 3.4 所示。

 
图 3.4 HC-SR04 超生波传感器
 


3.2 辅助模块

3.2.1 蜂鸣器
蜂鸣器通过电压振动拨片,发出鸣响,对安全距离进行报警。本仪器设计选用型号 是有源高电平蜂鸣器,主控板对连接的 I/O 端口拉高电平,即可发出鸣响。模块发生孔 不能存在异物,同时保证在正常温度下工作,超过 40℃或低于 0℃都会影响工作情况。 蜂鸣器与主控板引脚端口连接,I/O 与 A11。有源蜂鸣器,如图 3.5 所示。

 
图 3.5 有源蜂鸣器
3.2.2 温湿度传感器
温湿度传感器,采用内置特殊材料,因温度变化而变化,进而转化为数字信号。本 仪器设计选用 DHT11 型号温湿度传感器,价格便宜。湿度测量范围:25%--90%(0-50℃), 温度测量范围:-15℃--55℃ , 需要注意使用环境[5]。模块应避免长时间下在太阳光照射, 会降低性能,使用高质量屏蔽线,提高数据传输稳定性。
主控板对连接的 DATA 引脚端口发生送信号,模块进入高速模式,开始工作。模块 与主控板之间采用单总线数据格式,数据格式分为两部分。温湿度传感器与主控板引脚 端口连接,DATA 与 A15。DHT11 温湿度传感器,如图 3.6 所示。
 
图 3.6 DHT11 温湿度传感器
 


3.2.3 显示屏
主控板将计算出的距离数据,利用屏幕显示出来,方便用户观察使用。本仪器设计 选用型号 0.96 寸显示液晶屏,其性能比较高,但是价格稍贵一些。模块需要在常温环 境下工作,同时避免碰撞,造成内部背光灯管微型器件损坏,影响成像效果。
模块与主控板之间采用 IIC 通信协议进行数据传输[6] ,IIC 总线完成交互通讯仅需 两条线,一条 SCL 时钟线,另外一条双向数据线 SDA。液晶显示屏与主控板引脚端口连 接,SCL 与 B12,SDA 与 B13。0.96 寸显示液晶屏,如图 3.7 所示。

 
图 3.7 0.96 寸显示液晶屏
3.2.4 蓝牙串口通信
蓝牙技术能够建立临时性的短距离连接,可以双向传输数据,而且功耗较低便于在 移动设备上运行。从性价比方面考虑,采用 JDY-31 类型蓝牙模块。在接入仪器时,注 意电源所提供电压,要适配模块工作电压,否则会对内部元器件造成影响。
模块与主控板之间采用 UART 串口通讯方式,开发方便。同时,与手机客户端采用 蓝牙通讯协议,进行短距离双向数据传输。TXD:数据发送端,与主控板 A10 相接。RXD: 数据接收端,与主控板 A9 相接。JDY-31 蓝牙 3.0 模块,如图 3.8 所示。

 
图 3.8 JDY-31 蓝牙 3.0 模块
 


3.3 硬件电路
本硬件设计采用常规电路,实物采用标准化、模块化制作,并符合硬件基础构造。 另外,充分满足程序功能要求,同时要将硬件设计和软件设计共同规划,做到最佳匹配。 同时,需要确定整体功耗数据,优化电路设计,能够在适合的驱动下稳定运行。主控板 与各模块的电路连接,如表 3.1 表述。

表 3.1 引脚端口对应表

模块名称模块引脚端口STM32 引脚端口


蓝牙串口通讯器RXD
TXD
GND
VCCA9
A10
GND
5v


超声波探头Trig
Echo
GND
VCCB5
B6
GND
5v

液晶显示屏SCL
SDA
GND
VCCB12
B13
GND
3.3v

蜂鸣器I/O
GND
VCCA11
GND
3.3v

温湿度传感器DATA
GND
VCCA15
GND
3.3v

仪器整体的组成,由主控板和超声波传感器作为核心模块[7] ,蜂鸣器、温湿度传感 器、蓝牙模块、显示屏作为辅助模块。同时采用面包板为电路基础板,以及各类杜邦线 连接各项模块。仪器可视化电路图(仅供参考),如图 3.9 所示。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML优化SEO的实用技巧

在网站开发中,除了关注设计和用户体验,SEO(搜索引擎优化)也是提升网站流量和可见度的关键。合理的HTML结构和元素运用能够帮助搜索引擎更好地理解页面内容,从而提高搜索排名。以下是一些基于HTML的SEO优化技巧&#xf…

OpenHarmony实战:小型系统移植概述

驱动主要包含两部分,平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等;器件驱动则主要包含通常在SOC外的器件,如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序,HDF驱动框…

【WebKit架构讲解】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

java面试题(3)|解释 null 和 “null“ 之间的区别,并举例说明它们在编程中的使用场景

null 和 "null" 之间的区别主要在于语义和数据类型上: null 是一个特殊的值,通常用于表示缺少有效值或未定义的变量。在许多编程语言中,null是一个关键字,表示空值。例如,在Java中,当一个对象尚…

解决el-table设置固定高度后,展示不同列时表格高度变小bug

解决el-table设置固定高度后,展示不同列时表格高度变小bug 1、需求分析2、解决方案 1、需求分析 在el-table使用过程中,选择多个参数展示更多列时会出现高度变小问题究其原因可知是el-table列动态发生变化后,el-table__body-wrapper的高度变…

sqlite在非主键创建一个自增字段

sqlite 自增比较奇葩,自增字段必须建在主键上,但主键很重要。不是每种情况都是给自增去做。比如要实现replace into 时, 要主键作为更新标识。用自增很难实现。 开工: 1、建立一个主表,主表的ID是自增ID,…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写,由国家认证认可监督管理委员会批准设立并授权的国家认可机构,统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业,CNAS认可具有重要意义。它标志着一个软件测试公…

站群服务器如何提高搜索引擎排名

站群服务器是一种专门为多个相关联的网站提供支持的服务器,旨在通过网站集合的形式提高搜索引擎排名和曝光度。那么站群服务器如何提高搜索引擎排名呢?Rak部落小编为您整理发布。 站群服务器提高搜索引擎排名的原理主要在于以下几个方面: - **提高网站…

websocket 对于手游的意义

WebSocket作为一个HTTP的升级协议,其实对HTTP协议用的不多,主要是消息头相关部分,WebScoket协议最初的动机应该是给网页应用增加一个更贴近实时环境的通讯方式,让某些网页应用得到更佳的通讯质量(双工,低延…

2024阿里云老用户服务器优惠价格99元和199元

阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…

基于Unet的BraTS 3d 脑肿瘤医学图像分割,从nii.gz文件中切分出2D图片数据

1、前言 3D图像分割一直是医疗领域的难题,在这方面nnunet已经成为了标杆,不过nnunet教程较少,本人之前跑了好久,一直目录报错、格式报错,反正哪里都是报错等等。并且,nnunet对于硬件的要求很高&#xff0c…

mac、windows 电脑安装使用多个版本的node

我们为啥要安装多个不同版本的node? 开发旧项目时,使用低版本Nodejs。开发新项目时,需使用高版本Node.js。可使用n同时安装多个版本Node.js,并切换到指定版本Node.js。 mac电脑安装 一、全局安装 npm install -g n 二、mac电脑…

Go-Gin-Example 第九部分 实现redis缓存

文章目录 前情提要 配置缓存前缀 常量缓存中 key 值问题Redis 工具包redis 使用 首先需要自己安装 redis并提前了解相关知识 前情提要 学习项目github地址,有需要可以从这里查看源码 上一部分学习笔记 配置 在 api.ini 中新增 redis 相关配置 ... [redis] Host 127.0.0.…

Elasticsearch 压测实践总结

背景 搜索、ES运维场景离不开压力测试。 1.宿主机层面变更:参数调优 & 配置调整 & 硬件升级2.集群层面变更:参数调优3.索引层面变更:mapping调整 当然还有使用层面变更,使用API调优(不属于该文章的讨论范围…

四川古力未来科技抖音小店:安全便捷,购物新体验

在数字化浪潮席卷全球的今天,电商平台的安全性与便捷性成为了消费者最为关心的问题。四川古力未来科技有限公司,凭借其强大的技术实力和深厚的行业经验,为广大消费者带来了一个安全可靠的购物新选择——古力未来科技抖音小店。 古力未来科技抖…

Twitter Api查询用户粉丝列表

如果大家为了获取实现方式代码的话可能要让大家失望了,这边文章主要是为了节省大家开发时间,少点坑。https://api.twitter.com/2/users/:id/followers ,这个接口很熟悉吧,他是推特提供的获取用户关注者(粉丝&#xff0…

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长,展览馆作为展示文化、艺术和科技成果的重要场所,其安全监控系统的智能化升级已成为当务之急。为此,旭帆科技(TSINGSEE青犀)基于视频智能分析技术推出了展览…

前端Vue Node.js + Express + MongoDB 构建的后端服务API接口

构建一个使用 Vue.js 作为前端,Node.js + Express + MongoDB 作为后端服务的全栈应用涉及到多个步骤。这里简要概述整个过程,并提供一些基本的代码示例来帮助你开始。 步骤 1: 设置 MongoDB 数据库 安装 MongoDB: 根据你的操作系统从 MongoDB 官网 下载并安装 MongoDB。启动…

sql之日期函数

日期函数 CURDATE()/CURRENT_DATE()返回当前日期 select CURRENT_DATE(),CURDATE();CURRENT_TIME()/CURTIME()返回当前时间 -- 没有日期 select CURRENT_TIME(),CURTIME();CURRENT_TIMESTAMP()返回当前日期和时间 select DATE_FORMAT(CURRENT_TIMESTAMP(),%Y年%m月%d日 %H时…