博主主页:单片机辅导设计
博主简介:专注单片机技术领域和毕业设计项目。
主要内容:毕业设计、简历模板、学习资料、技术咨询。
主要介绍
通过长期的社会观察以及网上数据调研发现,雷达的应用十分广泛。但普遍的雷达设备体积大,不利于携带。而民用的常用小型雷达如:车载雷达、扫地机器人等,存在精确度不高、功能单一等缺点。故本系统针对这一现状设计出一种精确度高、小型易携带、能显示障碍物的雷达探测设备。本设备采用STM32F103C8T6作为主控制核心板,选择使用超声波信号作为主要探测信号,避免探测时对人体或物体造成伤害,具有成本低、速度快的特点。超声波信号发送出去后,通过计算模块记录数据并经过算法处理得出障碍物的方位以及距离,同时添加预警功能模块根据所得位置信息判断当前是否要发出报警信号,提高预测性和安全性。软件程序部分主要控制整个单片机进行信号发送、接收数据并处理数据能让数据正确显示在界面上。经过多次实验结果测试:在忽略温湿度和声波衰减影响下,本探测雷达设备在可测距范围内可实现准确的距离测量,实验结果最大的平均误差不高于5%。在整个信息处理过程,数据都能够快速实时更新,实验结果能够达到预期效果。
关键词:STM32 雷达扫描 超声波测距 距离报警 蓝牙通信
一、系统主要功能
针对本设计目的和需求,多次对比市面目前主流的单片机最后采用的单片机具体型号是STM32F103C8T6单片机。主要因为STM32F103C8T6这款单片机是一款具有低功耗、高性能的微控制器,51单片机的地址空间只有64KB,仅有三个定时器和一个串口,操作系统运行效率低下而32地址空间有4GB,拥有AD、DA、Timer、CRC、SPI等众多外设,整个32单片机系统采用的是uClinux和uC/OS。所以32单片机比51单片机功能强大。两系列单片机对比下,32单片机多了很多功能优势以及可塑性。STM32F103C8T6是一种ARM32的内核单片机主要用于工业应用的单片机。它的作用是将外部设备得到的数据进行内部计算处理,然后发出控制信号给到被控制外部设备进而控制各种传感器和外设进行相对应的设备操作,达到控制机器设备的目的。
STM32单片机不仅有9个通信串口还有2个16位ADC转换通道,无需在系统外部再添加ADC进行转换且具有7个定时器(3个普通定时器、1个高级控制定时器、2个看门狗定时器、1个系统时间定时器)能够让系统进行多种不同情况的时钟模数以供系统需要。单片机支持使用ST-LINK进行程序调试和程序下载,工作频率默认为72MHz,拥有2个SPI接口,可切换从或主两种模式并且全双工和半双工的通信频率可达18兆位/秒。3位的预分频器可产生8种主模式频率可配置成每帧8位或者16位。硬件的CRC产生/校验支持基本的SD卡和MMC模式,所有的SPI接口都可以使用DMA操作。
关于单片机的时钟挑选,其实整个STM32系统在设备上电时就已经挑选了其内部8MHz的RC振荡器更是在系统进行复位时被当作初始CPU时钟,系统接着选择外部且具失效监控的4-16MHz时钟。当系统检测到外部时钟功能无效时,它将被系统进行隔离然后系统自动地切换到内部的RC振荡器,在使能中断的情况下,上位机程序也会接收到相应的中断。同样,在需要时可以采取对PLL时钟完全的中断管理(当一个间接使用的外部振荡器失效时)。振晶模块同时也可以给STM32内置的RTC运用,相对较低的负荷模式,没有像传统的圆柱晶振一样,避免了还需要专门的时钟芯片对定时器进行处理等。STM32单片机实物如图2-1所示。
图2-1
二、系统设计
本系统计出一种性能优势高于传统雷达的小型易携带雷达探测系统。受倒车雷达的启发,在其基础上进行功能添加,使功能性和应用范围得到增加。本次设计的雷达探测系统主要包含有单片机控制部分、超声波信号处理部分、上位机软件部分、预警提示部分、蓝牙通信部分等。
本系统其设计思路是主要以STM32单片机为核心元件,当系统被开启时,超声波发射模块会向前方发射超声波信号且定时器开始记录过程时间,信号抵达目标物体表面处遭到阻碍折射,当折射回来的超声波信号被超声波接收模块一获取到定时器便停止记录时间。超声波测距模块则开始根据所记录到的时间数据从而算出本超声波发射模块与障碍物的位置距离。由于避免只能固定扫描一个方向的角度范围,故添加舵机实现转动扫描增加灵活性。经过一轮数据整合通过蓝牙模块传输到PC端上显示,为了更加人性化、智能化,更好地体现本系统的工作状况。PC端上位机软件可以显示障碍物位置方位及其距离让使用者一目了然。上位机模块里面还可包含有设置预警距离大小的功能按钮,可根据实际环境需要而设置,避免功能固定化。图3-14为系统总体框图。
图3-14
三、系统实现
编写代码无错误后,点击启动选项,软件便会自动生成显示界面,此时我们开始将电脑蓝牙和单片机蓝牙相互连接。这里要注意的是,Windows10系统自带的蓝牙模块并不支持HC-05蓝牙模块,需要在设备管理器将Windows10系统自带的蓝牙模块禁用,外加一个蓝牙适配器才可以连接上单片机的蓝牙模块。为了增加本系统的保密性,在电脑蓝牙模块跟单片机蓝牙模块相互连接时需要输入密码,密码设定为1234。如图4-5所示。
图4-5
这时我们选择波特率为9600,在设备管理器查找单片机的端口。本设计的端口为COM3,选择COM3端口,点击连接串口选项,显示界面便会生成一个半圆大小的扫描图形。当单片机检测到障碍物的时候,障碍物的数据信息会实时以红点的形式显示在界面上。如图4-6所示。
图4-6
因为障碍物的数据信息会永久在显示界面上保存。随着长时间的探测,红点数量会越来越多,避免影响使用,需要使用一段时间进行清屏功能处理。除此以外,本系统还支持修改报警距离。当前设置的报警距离为10,障碍物的距离小于10,单片机便会进行声光报警。
程序
单片机程序全部源码:
#include <Servo.h> /* 舵机驱动库 */
#include <math.h>
#define trigPin PB4 /* 超声波的触发引脚 */
#define echoPin PB5 /* 超声波的反馈引脚 */
#define servoPin PB6 /* 舵机的控制引脚 */
#define buzzerPin PB7 /* 蜂鸣器的控制引脚 */
#define pi 3.14159
Servo servo; /* 舵机控制对象 */
float limit = 10; /* 距离限制,小于这个限制会报警,蜂鸣器鸣响 */
void setup() {
servo.attach(servoPin); /* 给舵机控制对象添加控制引脚 */
Serial