基于STM32的倒车雷达系统设计

news2024/11/14 15:44:05

目录

前言

一、绪论

1.1 设计背景

1.2 设计内容

二、系统硬件设计

2.1 硬件系统框图

2.2 主控制电路

2.3 超声波电路

2.4 OLED显示电路

2.5 键盘输入电路

2.6 声光报警模块电路

三、系统软件设计

3.1 系统主程序设计

3.2 OLED显示程序设计

3.3 键盘设定程序设计

四、系统调试

4.1 硬件调试

4.2 软件调试

4.3 系统调试

五、实物测试

总结


前言

       本设计为博主利用每日闲余时间设计的小作品,有不足之处还请各位在评论区批评指正,部分内容参考来源网络资料,如有侵权请联系博主删除。

一、绪论

1.1 设计背景

        超声波测距是一种传统并且实用的测距方法,利用超声波可以非接触式测量,比起卷尺、激光或者无线电测这些更加方便,并且不存在其他因素等干扰的问题,不管在什么环境中都能正常使用,超声波具有自适应能力,并且超声波收发器成本低廉、结构简单,使用开发非常方便。超声波在各个行业领域使用的非常多,例如在工业控制方面、建筑测量方面、身高测量、声呐定位等都是利用超声波来做探测。

        由于超声波传播速度相对适中,其传播的时间也方便计算出来,通过定时发射,方向性准确,强度好控制,因此人们采用这种方式超声波测距[1]。

        超声波是一种人类听觉范围以外的一种声波,一种真实存在的波,它的传播速度非常慢,光速的万分一都不到,由于其速度传播慢,在传播过程中容易被检测捕获,超声波碰到障碍物介质时能够反射回来。超声波的传播具有方向性和可控制性,故而超声波用于很多方面,例如超声治结石、超声声呐等等,而本设计采用超声波的反射特性来用于测距设备,通过声波发出到反射接受的时间推理计算得到前方实际距离的方法实现测距。超声波技术在工业、计算机领域取得了很好的成就,并且在人们生活中普遍存在,把超声波应用到科技产品当中是开发者义不容辞的责任。

1.2 设计内容

        本设计研究出一款基于超声波的倒车雷达系统。系统采用STM32F103C8T6单片机作为主控制器, 利用超声测距的原理, 设计了一种超声波测距装置,该装置可以对前方的障碍物进行距离探测并把障碍物距离信息通过OLED显示出来。并且根据实际情况在单片机内部设置一个临界值,当通过超声波探测的距离小于临界值时,声光报警,提醒前方距离变小。可以根据声光报警提示报警,通过提示得知距离是否在正常范围,从而达到报警的目的。即本次设计的倒车雷达系统主要具有以下功能:
         1、具有实时测量距离的功能,在一定范围内实现测距,距离小于一定时,发出声光报警提示。
          2、具有实时显示功能,单位精确到厘米。
          3、安全距离可以调,可通过按键修改并保存。

二、系统硬件设计

2.1 硬件系统框图

       本设计硬件设计部分主要由以下几个模块组成:单片机最小系统、超声波模块、报警模块、OLED显示模块、键盘模块。通过这几种模块组成倒车雷达系统,单片机最小系统由复位电路和时钟电路组成。具体硬件系统框图如下图所示:

2.2 主控制电路

       设计中主控芯片采用STM32F103C8T6单片机作为主控制。该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也即代码量可以写到128k字节,足够本次设计。所用STM32F103C8T6最小系统板如下图所示:

2.3 超声波电路

       超声波模块工作电压为5V,Trig为触发控制信号输入连接单片机的PC13引脚,PC13通过该引脚输出高电平信号保持10微秒以上,此时超声波模块才被使能。自动发出方波信号,经过返回,Echo为回响信号输出接口端,直接相连单片机的PA0定时器输入脚,单片机判断该I/O高电平持续的时间来得出实际的距离。本设计中超声波模块电路设计图如下图所示:

2.4 OLED显示电路

        本次采用低功耗的0.96寸OLED显示屏作为本次可穿戴设备的显示器,该OLED具有多种驱动方式,常用的方式主要有SPI和IIC驱动,本次采用IIC接口的方式,IIC只需要两根数据线即可驱动显示,使用原理简单。该模块内部不带任何字符,在显示字符、数字、汉字时都需要制作字库,因此可以显示各图案。该模块具有4个引脚,VCC接电源3.3V供电,GND接地线,SCL接STM32F103C8T6的IIC SCL脚PB6,SDA接STM32F103C8T6的IIC SDA脚PB7,如下图所示为本设计OLED电路设计图。

2.5 键盘输入电路

       本次设计采用三个独立式按键实现对安全距离值进行调整,三个按键分为设置/退出键、设置加键、设置减键。设置键按下一次后,进入安全距离值设定界面,然后才可通过设置加和设置减键进行调整。如下图、为键盘电路设计图,图中三个按键一端接公共端GND,另一端分别接单片机的I/O。三个按键接口分别接单片机的PB12、PB13、PB14引脚,当单片机的相应引脚检测到低电平时,说明该引脚被触发,从而实现相应的动作。

2.6 声光报警模块电路

        本次设计的报警系统设计采用有源蜂鸣器以及发光二极管LED实现声光报警电路,当检测到的距离小于设置好的距离时,单片机控制声光报警模块实现报警。如下图为声光报警电路设计图,由于蜂鸣器是非信号类器件,单片机的I/O不可直接进行驱动,故而利用三极管的开关作用控制蜂鸣器的开关。如图中所示,BUZZER1为蜂鸣器元件,Q1为S8550三极管,通过基极的电平状态从而控制三极管的开关,当单片机BEEP输出高电平时,三极管集电极导通,蜂鸣器通电,从而蜂鸣器发出声响,同时LED灭;当BEEP输出低电平时,三极管集电极处于截止状态,蜂鸣器没有电压从而不发声,LED亮。

三、系统软件设计

3.1 系统主程序设计

       本系统是以STM32F103C8T6单片机为核心,设计的一款基于超声波测距原理的倒车雷达系统。STM32F103C8T6是整个系统的核心部分,利用HC_SR04超声波模块作为测距模块,模块是利用声波测距进行判断前方是否达到一定距离,达到报警的效果。在单片机内部设置一个阀值,当测得的距离小于阀值时,系统进行声光报警提示,用来提示使用者前方距离小于阈值,如果前方距离保持小于该阀值时,报警块循环报警提示,直到使用者前方距离大于阈值,才退出声光提示。整体软件设计的流程图,如下图所示:

3.2 OLED显示程序设计

        本次设计采用OLED屏作为显示器,本次选用的是IIC接口,四针的OLED,通过IIC实现驱动OLED,使用方式非常简单。由上一章节可知,OLED的SDA、SCL分别接STM32的PB6、PB7,通过软件模拟IIC驱动。IIC接口包括IIC起始信号、IIC停止信号、IIC读数据、IIC写数据、IIC响应信号和非响应信号。以下为OLED读取显示数据流程图,首先进行初始化配置,初始化IIC,然后配置指令。接下来进入显示数据工作中,首先确定显示显示为坐标,然后显示字体大小等信息,然后写入显示数据。其流程图如下图所示:

3.3 键盘设定程序设计

       按键在本系统中主要起到修改安全阈值的作用,主要有设置键、设置加键、设置减键等三个。工作如下:首先在正常工作状态下,按下设置键,进入设置菜单界面,OLED显示距离下限值。此时通过按键加、按键减可对距离下限值进行修改,步进值为1cm。设置完成后再次按下设置键将会保存,再自动回到主界面实时显示距离,具体流程图如下图所示:

四、系统调试

4.1 硬件调试

        本次设计采用立创EDA设计出了PCB电路板线路图,该软件是一款高性能、开发方便的EDA软件,该软件能够完成原理图绘制和PCB设计。本次采用该软件绘制出来整个系统的电路图,以及PCB图,在设计过程中要注意以下几点:

      (1)线宽规则:地线铺铜,电源线宽大于信号线宽。

      (2)走线不能直角,尽量45度转角。

      (3)电源电路和信号电路尽量隔远。

      (4)电源线从滤波电容布线输出。

如下图为PCB板设计布线调试图。

4.2 软件调试

       软件调试主要在KEIL5 MDK平台上进行软件bug调试,通过对软件中编译的问题进行修改和调试。本次设计主控是基于STM32F103C8T6的,开发环境是基于KEIL5,通过新建工程、创建主程序、创建子程序、编译、下载调试等步骤,先写出一个小模块,然后点击编译按钮,然后增加完善到最后的理想结果。

4.3 系统调试

      最后一步就是硬件整体测试了,主要运用万用表、直流电源和示波器对焊接好的板子进行整体调试,主要检查每一个器件是不是都正常工作了,主要分为两个环节动态调试和静态调试。其中静态调试主要分为以下三种:

     1.肉眼观察。主要观看焊接点是否饱满,以及相连器件之间是否相连或者器件管脚没有焊接好,出现短路现象。

     2.使用万用表调试。首先查看电源是否短路,然后测量管脚是否连接正确,有没有接线错误。

     3.上电检查。在完成第一步和第二步都没有问题,接下来就可以上电了,上电以后观看每个器件是否正常工作,然后在逐一测试功能。

      动态调试。动态调试主要是静态调试没有任何问题,做最后一步检查,就是每个器件能否正常工作,能否满足我系统开发的功能,防止器件内部损坏,影响系统性能。

五、实物测试

     通过对本次设计的硬件电路设计,最终做出电路板,将电路各个模块进行焊接。在焊接时应该注意先后顺序,先焊接电路模块,将电路接口和电源开关焊接好后,接通电源。接下来利用万用表测试各个电源点是否正常,测试正常后进入下一步的焊接。焊接顺序按照先焊接电源和主控制单片机部分,先焊接小元件再焊接大元件的方式,最终焊接完成图样如下图所示。

    在系统板在开机后,正常运行时,OLED第一行会显示测试距离,第二行显示当前报警阈值,然后自动刷新测试距离,当所测距离小于报警阈值时,蜂鸣器会“滴滴”报警,LED指示灯会持续闪烁,直到所测距离大于报警阈值时,蜂鸣器关闭,LED指示灯停止闪烁。如下图所示为系统数据显示主界面图。在主界面下实时显示该系统所测距离的数据。如下图所示当前距离测量值为37cm,报警阈值10cm。

       在主界面上实时显示,可通过按键实现其他功能,按下切换键时,OLED将切换到阈值设置界面,如下图所示为阈值设置界面图。

      在阈值设置界面下,按下设置减键和设置加加键可以调整报警阈值,如下图所示。

总结

本次设计顺利完成预期设计功能,设计源码、PCB原理图、设计报告见下百度网盘链接:https://pan.baidu.com/s/1RlROmoShmfH6AiuRgY8TFA 
提取码:qe4v 
下一期将制作基于51单片机的脉搏测量仪,创作不易,还请各位多多支持!

       

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

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

相关文章

设计模式-结构型模式之外观模式

4. 外观模式4.1. 模式定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式…

C++11 make_shared函数和std::make_unique详解

make_shared的使用: shared_ptr<string> p1 make_shared<string>(10, 9); shared_ptr<string> p2 make_shared<string>("hello"); shared_ptr<string> p3 make_shared<string>(); 好处&#xff1a;减少分配次数 std::s…

大厂面试内幕:阿里内部整理出的5000页Java面试复盘指南,起飞!!!

互联网的技术岗一直是高薪的代名词&#xff0c;特别是大厂&#xff0c;应届生的年薪基本都20W起&#xff0c;比一般的公司高多了。 看下面这张网上热传的大厂应届生薪酬表就知道了&#xff0c;SP offer甚至能拿到30W以上。 技术社区也有晒出高薪offer的同学&#xff1a; 除了薪…

Unity LOD 技术

Unity LOD 技术 LOD(Level of detail) 多层次细节&#xff0c;常用的Unity 优化技术 它是根据物体在游戏画面中所占视图百分比来调用显示不同精度的模型 说白了就是 当物体距离摄像机距离较近时显示高精度模型 当物体距离摄像机距离较远时显示低精度模型 优点&#xff1a;优化…

Python深度学习实现DIY专属个人表情包

引言&#xff1a; 在现代社交媒体的时代&#xff0c;表情包已经成为了人们日常生活中不可或缺的一部分。表情包可以用来表达情感、传递信息&#xff0c;甚至成为一种文化符号。然而&#xff0c;随着表情包的日益普及&#xff0c;大量的表情包已经不能满足人们的需求&#xff0…

如何对图片批量重命名?

对于爱好摄影的朋友们来说&#xff0c;不管是手机还是相机拍摄的照片&#xff0c;在导入电脑后&#xff0c;它们的文件名通常都是一串长长的乱码。这不仅会导致桌面看起来杂乱无章&#xff0c;还会给我们查找图片带来很多不便&#xff0c;有时候丢失几张图片都发现不了。不过&a…

7、在vscode上利用cmake构建多文件C++工程

文章目录 &#xff08;1&#xff09;创建如下工程文件夹&#xff1a;其中头文件放在include文件夹中&#xff0c;源文件放在src文件夹中&#xff08;2&#xff09;在vscode上打开工程文件夹&#xff0c;在对应的文件夹内建立相应的文件1&#xff09;目录结构2&#xff09;各文件…

【C语言督学训练营 第十一天】三篇文章吃透数据结构中的线性表(二)----- 链表的增删改查与销毁

文章目录 前言一、链表1.基本介绍2.增删改查原理与实战 总结与源码 前言 谭浩强老师说过&#xff1a;“指针是c语言的灵魂”&#xff0c;今天说到的链表就是由C语言的灵魂所筑&#xff0c;学会了链表之后可以使用链表轻松实现树、图等数据结构&#xff0c;可以轻松化解考研数据…

《无线神经调节的微创技术治疗慢性顽固性疼痛:初步观察报告》

**全文概况 **&#xff1a;该文件讨论了一种新型无线和微创神经调节设备&#xff0c;用于治疗之前曾经失败的患者慢性顽固性疼痛。该设备通过经皮植入的电极远程控制&#xff0c;进行高频背根节神经刺激或周围神经刺激。该系统对于患有腰腿疼痛的患者有重要潜力&#xff0c;因为…

车载 Android开发面试习题整合~

随着车联网技术的不断发展和普及&#xff0c;越来越多的汽车厂商开始使用 Android 操作系统作为车载娱乐和信息娱乐系统的核心。在这个趋势下&#xff0c;车载 Android 应用开发程序员的需求也日益增加。 像一些车企大厂在广招这方面的技术人才。给原本处于落寞的Android 开发行…

PTA:C课程设计(7)

山东大学&#xff08;威海&#xff09;2022级大一下C习题集&#xff08;7&#xff09;函数题7-6-1 递增的整数序列链表的插入7-6-2 查找学生链表7-6-3 统计专业人数7-6-4 建立学生信息链表编程题7-7-1 查找书籍7-7-2 找出总分最高的学生函数题 7-6-1 递增的整数序列链表的插入…

五子棋透明棋盘界面设计(C语言)

五子棋透明棋盘设计&#xff0c;漂亮的界面制作。程序设置双人对奕&#xff0c;人机模式&#xff0c;对战演示三种模式。设置悔棋&#xff0c;记录功能&#xff0c;有禁手设置。另有复盘功能设置。 本文主要介绍透明的玻璃板那样的五子棋棋盘的制作。作为界面设计&#xff0c;…

「Bug」OpenCV读取图像为 None 分析

头一次遇到 OpenCV 无法读取图像&#xff0c;并且没有任何提示&#xff0c;首先怀疑的就是中文路径&#xff0c;因为大概率是这个地方出错的&#xff0c;但是修改完依旧是None&#xff0c;这就很苦恼了&#xff0c;分析了下出现None的原因&#xff0c;大概有以下三种情况&#…

ssm--MyBatis基础day01

1.MyBatis概述 1.1 ORM框架 对象关系映射&#xff08;Java中的对象 对应 数据库中的表&#xff09; 1.2 官网地址 mybatis 1.3 MyBatis Plus MyBatis-Plus (baomidou.com)官网 1.4 JPA Java 持久层API 2. MAVEN引入 2.1 配置maven 2.2 导入MyBatis <dependency>…

带你们偷瞄编程绕不开的C语言(三)

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C专栏》&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c;希望可以帮到…

面试篇-学习Java多线程编程必备:深入理解volatile与synchronized

1. 概述 1.1 Volatile概述 Volatile是Java中的一种轻量级同步机制&#xff0c;用于保证变量的可见性和禁止指令重排。当一个变量被声明为Volatile类型时&#xff0c;任何修改该变量的操作都会立即被所有线程看到。也就是说&#xff0c;Volatile修饰的变量在每次修改时都会强制…

8080时序驱动液晶屏

一、TFT-LCD简介。 TFT-LCD&#xff08;thin film transistor-liquid crystal display&#xff09;即薄膜晶体管液晶显示器。液晶显示屏的每一个像素上都设置有一个薄膜晶体管&#xff08;TFT&#xff09;&#xff0c;每个像素都可以通过点脉冲直接控制&#xff0c;因而每个节点…

第一节 法学

目录 法学的概念法学的性质 实践性构成了法学的学问性质 法学的研究对象 1.法律制度问题&#xff08;X法律制度&#xff09;2. 社会现实或社会生活关系问题 (Y社会现实/社会关系)3.法律制度与社会现实之间如何对应的问题 &#xff08;Yf(x) f为什么函数&#xff09; 法学的概…

ChatGPT或要推出APP,OpenAI官宣为ChatGPT招募移动端开发工程师

文 | 兔子酱OpenAI官方招聘页面放出了英雄帖&#xff0c;他们正在为ChatGPT招聘移动端工程师&#xff1a;传送门&#xff1a;https://openai.com/careers/mobile-engineering-manager-chatgpt其中&#xff0c;跨iOS和Android的工程主管年薪为20至37万美元,总薪酬还包括慷慨的股…

ActiveMQ使用(五):在JavaScript中发送的MQTT消息在C#中变为字节数组

ActiveMQ使用(五):在JavaScript中发送的MQTT消息在C#中变为字节数组 1. 问题描述 ** C#中的代码: ** internal class Program{static void Main(string[] args){ConnectionFactory factory new ConnectionFactory("tcp://localhost:61616");IConnection connecti…