设计报告
——题目名称:基于STM32的倒车雷达系统
一、题目要求
使用STM32F401VE芯片为核心,添加超声波测距模块、DHT11温湿度检测模块、串口打印模块等,实现测距报警、温湿度检测并显示等功能。
二、设计目的
随着人们生活水平质量的日益提高,私家车现在十分的普遍了,但是道路上行驶的车辆越来越多,由此引发的交通问题也值得人们关注。在开车行驶的过程中,车辆会有很多的视野盲区,无法观察到前后的障碍物,导致交通事故频发。
倒车雷达是汽车泊车安全辅助装置,能够以声音或者更为直观的显示,告知驾驶员在视野盲区外的障碍物的信息,以降低驾驶者在倒车时出现事故的概率。
温湿度检测模块可以用来检测汽车内外环境的温湿度,以便于在车内了解实际的温湿度数据
让驾驶者能够更为灵活的使用空调或者加热设备,来调整汽车内的温湿度,保证了汽车内的环境适宜,给驾驶者和乘坐者一个更为舒适的环境。
三、设计原理
(1)系统整体设计
图1、系统整体设计框图
    将系统框图搭建完成后接下来对模块进行分别的设计,来完成最终的效果。
(2)温湿度检测模块
                图2、温湿度检测模块设计框图
    温湿度检测模块使用的是DHT11数字温湿度传感器,所以只需要通过STM32芯片对数据位进行读取,不需要经过AD转换的操作,使用起来比较方便,将获取到的数据显示到八位
数码管上以提供观察,使得更为直观,并且串口也有相关的数据进行打印。
(3)HCSR04超声波测距模块
                图3、超声波测距模块设计框图
    超声波测距模块使用了HCSR04超声波测距器件,该器件通过TR触发测距,通过ECHO得到高电平时间,最终通过公式计算出距离。
(4)报警距离改变模块
            图4、报警距离改变模块设计框图
通过两个按键,将所预设的标注距离来进行改变,通过使用不同的预设距离来对不同的实际情况进行一个调整,以满足在不同情况下的需求,保证其灵活性。
四、设计内容
4.1设计方案
    通过四个按键来进行不同功能之间的进入,使用标志位来判断不同的按键按下,使得在不同功能之间的切换。
    在MDKARM中编写各个模块的详细内容。使用Proteus软件进行仿真电路的搭建,最终测试代码的可用性。
4.2实施步骤
    首先进行仿真电路图的搭建,将电路图搭建好之后对相关的管脚进行选择,以便于程序的编写。
    在Proteus仿真软件中,选择STM32F401VE芯片作为主芯片,将PA9和PA10管脚作为串
口打印的TX和RX接口;PB0到PB3四个管脚作为控制按钮所连接的管脚;PC0到PC2三个管脚作为八位数码管的位选,外接74LS138译码器进行位选的操作;PC6到PC13作为了八位数码管的段选控制管脚;PD0和PD1是用来外接倒车雷达报警蜂鸣器和报警LED灯;PD9作为了DHT11的数据读取管脚;PD14和PD15管脚作为HCSR04的触发和数据接收管脚。
    最终的仿真电路图如下图所示。
                    图5、仿真电路图最终搭建结果
(1)温湿度测距模块
DHT11数字温湿度传感器每次的数据以40个bit的帧格式进行发送而每一个bit的传输时序逻辑为:每一个bit都以50us的低电平(DHT11将总线拉低)为先导,然后紧接着DHT11拉高总线,如果这个高电平持续时间为26~28us,则代表逻辑0,如果持续70us则代表逻辑1。其数据位逻辑为,0到7位是湿度的整数数据,8到15位是湿度的小数数据,1汽车倒车雷达6到23位是温度的整数数据,24到31位是温度的小数数据,最后的32到39位是校验位
图6、DHT11数据时序图
在代码中通过延时函数来对这40位的数据进行读取,最终将读取到的数据保存在数组之中。
(2)超声波测距模块
超声波测距模块使用的器件为HCSR04超声波测距模块,两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。单片机触发TR测距,给至少10us的高电平信号,模块内部自动发送8个40KHz的方波,自动监测是否有信号返回,当有信号返回,通过ECHO输出一高电平,通过单片机计算高电平的持续时间。
        图7、HCSR04超声波测距时序图
测试距离=(高电平时间*声速(340M/S))/2,通过这个公式将距离测定出来,再将数据打印到串口。
4.3调试过程
使用串口读取DHT11的温湿度信息时,需要使用到延时函数,延时函数需要使用到系统时钟来,对系统时钟进行分频操作,得到与实际时间相符的延时时间。串口无法正常的读取到DHT11所发送到的信息,,经过调试后,发现为延时函数的误差,导致读取DHT11数据位的时候,无法准确的读取到相应的数据位信息,在system_stm32f4xx.c系统文件中,将芯片的频率进行调整,使得延时函数更为准确。
按键中断过程中,当按键按下时,将会出现抖动现象,无法准确的将按键的上升和下降沿进行准确的判断,所以就需要对按键抖动进行去抖动处理,需要将延时函数加入到按键按下的模块中。
由于使用仿真软件进行操作,仿真将会运行十分缓慢,导致八位数码管的显示总是会显示不全,经过排查是仿真的运行速度非常慢,在实际运行的三分钟后,Proteus软件下方的仿
真运行时间为9秒左右,所以导致了数码管实际上是以十分缓慢的速度进行运行,导致了其闪烁和显示不全。
4.4结果分析
点下温湿度开关,进入温湿度检测模块,此时运行结果如下图所示。
8、温湿度检测模块运行结果
    可以看到串口可以将温湿度数据进行打印,在八位数码管上进行显示温湿度数据。再次按下温湿度的按钮,结束温湿度的测量和显示。
    按下距离检测按键,此时进入距离检测模块,运行结果如下图所示。
                    图9、距离检测模块运行结果
    所设置的距离时50cm,当测距小于50cm之后,串口将会打印出警告的信息,并且蜂鸣器进行报警。
                图10、距离检测模块报警显示结果
五、设计总结
此次课程设计历时十天,接触的是此前没有很多经验的STM32嵌入式系统,在短短的十天
中,对于我快速学习的能力,进行了一次十分有力的锻炼。在短时间内去接触新的知识,再练习将各个部分进行整合,使得各个部分发挥出其应该有的作用,对于我来说是一个既有趣又很有挑战的过程。