文章目录

  • 1 简介
  • 1 背景
  • 2 设计概要
  • 3 硬件选型
    • 3.1 主控 - STM32
    • 3.2 电机驱动
    • 3.3 红外遥控设计
    • 3.4 传感器部分
      • 3.4.1 循迹模块
      • 3.4.2 红外避障模块
      • 3.4.3 超声波模块
      • 3.4.4 WIFI 视频模块
  • 4 小车成品展示
  • 5 泊车算法设计
    • 5.1 侧方位泊车
    • 5.2 倒车入库
  • 6 测试效果
  • 7 最后

1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目

基于 STM32 的自动泊车系统

大家可用于 课程设计 或 毕业设计

单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

1 背景

目前我们所能见到的汽车企业大多数都控制在 L2 级半自动驾驶, 其中包括半自动泊车系统: 传感器技术的组成配合下收集精确的环境信息实现“泊车路径规划” 、 系统进行“车辆控制” 等功能, 在部分自动泊车(高级泊车辅助 APA)系统的辅助下驾驶员可以在监控下实现泊车动作。 现实中, 车辆激增带来的停车问题变得更加复杂, 大城市停车空间有限, 将汽车驶入各式各样的停车位置是每个驾驶员一项必备的技能。 与之相随而来的交通压力、 复杂多样的停车环境、 有限苛刻的停车空间, 停车难成为众多驾驶员的一大难题。 泊车过程中出现的轻微碰撞以及剐蹭事件的频繁发生, 市场需求的增长, 环境检测基础的相对成熟, 推进了自动泊车系统研究的技术发展。

2 设计概要

自动泊车系统(Automated Parking System,简称 APS)是一项属于无人驾驶的重要技术,随着车辆的激增, 汽车自动驾驶技术的不断创新与发展, 自动泊车系统尚未普及, 为降低当下人工停车的难度, 设计了一种基于 STM32F103ZET6 实现自动倒车入库和侧方位停车的智能化小车系统。

该自动泊车系统利用红外光感 HJ-IR2 传感器、 超声波 HC-SR04 模块、 循迹 TCRT5000模块、 标准的 IEEE 802.11nd 的 WIFI 模块组成进行环境检测, 实现了障碍物识别, 并将采集到的数据传送到处理器, 处理器将数据转换为电信号驱动小车的控制 L298N 驱动模块, 这些模块在 Keil uVsion5 编译环境下整合到一起, 在路径规划下对小车进行速度控制和转向控制。

系统根据停车位识别在模拟停车环境下控制小车进行入库操作, 满足了在不同的停车环境下进行智能化自动泊车, 此系统属于嵌入式系统兼容于多数汽车实现侧方位泊车和倒车入库并自行细微调整, 实现更稳定的入库停车。

3 硬件选型

3.1 主控 - STM32

意法半导体公司中的 STM32 系列芯片


3.2 电机驱动

为了更真实模拟汽车运作状态, 本设计安装了四个电机, 如下图所示。 本设计通过 PWM 占空比来调节直流电机的转速, 并通过控制前后轮的不同速度完成小车的转向。


电机用到了主控板的 8 个 IO 口, 通过对电机的高低电平控制使之正反转, 电机分有正负极, 前进时: 先将正极的电平置 1, 负极复位 0; 后退则正极复位 0, 负极置 1; 停止则都复位 0。

电机与芯片管脚配置表

小车由于左右两边各用一个驱动, 所以 A 和 C 两个电机只需要 C 电机控制, B 和 D电机只需 B 控制, 这里将 D 电机控制脚当电机使能: 将 DUP 和 DDOWN 的电平置 1。

3.3 红外遥控设计

学长设计的系统采用红外遥控来实现对小车的初步控制, 红外线遥控是目前使用最广泛的一种通信和遥控手段, 具有体积小、 功耗低、 功能强、 成本低的优点。 通用红外遥控系统由发射和接收两大部分组成, 应用编/解码专用集成电路芯片来进行控制操作, 发射部分包括键盘、 编码调制、 LED、 红外发送器; 接收部分包括光、 电转换放大器、 解调、 解码电路。

红外遥控器

红外接收及解码


相关技术原理:

    1. 引导码: MCU 检测到正确的引导码之后确认接收后面的数据, 以此来保证数据的稳定性和正确性,
    1. 客户码: 区分不同红外遥控设备
    1. 操作码: 客户操作时产生的编码, 通过操作的不同产生不同的码值, 等待红外接收头接收。
    1. 解码: 芯片通过接收到的电平信号, 解析操作码的码值, MCU 在根据码值做出相应动作。

根据遥控器提供的键码, 优先满足小车的基本运动, 前进、 后退、 左转、 右转、 以及停止, 设计算法, 短按则为 200MS 运作, 长按则持续运行。 预留其他按钮进入自动驾驶状态, 即: 循迹模式、 避障模式、 超声波模式、 摄像头模式、 侧方位自动泊车, 倒车入库自动泊车等。

3.4 传感器部分

3.4.1 循迹模块


遵循既有的道路现状, 给定小车相关的循迹算法, 基于一个三路循迹和两个二路循迹的循迹模块, 使得小车自动行驶在路劲规划下, 称为循迹技术。

3.4.2 红外避障模块


红外光电传感器(HJ-IR2), 发射出探测的脉冲, 当在一定距离中探测到物体会重新输入到 MCU 中进行处理, 它相当于一个红外开关, 检测到障碍物输出低电平, 未检测到则反之。 在得知在停车过程中遇到的障碍物可以依据此对小车进行控制避免碰撞, 此为避障功能。

接收管接收到信号之后, 经集成电路进行放大, 会点亮模块的 LED 灯管, 并同时输出给 MCU 一个低电平信号。

3.4.3 超声波模块

HC-SR04 超声波测距可提供 2cm-40cm 的非接触式距离感测功能测距精度可达高到3mm; 模块包括超声波发射器、 接收器与控制电路。 本设计利用超声波传感器来达到对自动泊车中精细调整。 小车在进入自动泊车模式后, 环境检测部分会通过超声波收集左右部掐障碍物的具体位置, 在侧方位泊车中可以利用检测前后车辆的停车距离,倒车入库泊车中可以检测左右车辆的精准距离, 实现更完美的泊车路径规划。 超声波模块如图

3.4.4 WIFI 视频模块

设计模拟倒车途中的后视摄像头, 将倒车时的情景展示在与上位机的屏幕当中,模拟出更真实的停车环境, 实时监控倒车时的情况, 并通过 WIFI 模块, 在上位机编写好指定代码传送给小车上的 WIFI 模块, WIFI 模块中的芯片进行解码并发送电信号给 MCU进行控制, MCU 根据 WIFI 模块中的信号对小车进行控制。

PC控制软件

软件中的界面基本满足对小车的基本控制, 附带有打开摄像头的指令, 在设置中也可以按照需求编写新指令发送给主控芯片。 操作界面如下图所示

这里的设计需要注意, 同时开启数据的收发, 根据收到的 WIFI 信号进行判断, 串口 WIFI 解码代码如下:

unsigned char rec_data;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{USART_ClearITPendingBit(USART3, USART_IT_RXNE);
/* Read one byte from the receive data register */
rec_data = USART_ReceiveData(USART3);
if(start!=0&&rec_data!=0xff) //如果已收到包头并且当前收到的不是包尾
{buf[start-1]=rec_data; //缓存数据
start++;
}
else if(start!=0&&rec_data==0xff)//如果收到包尾
{mode[0]=buf[0]; //给状态存储数组赋值
mode[1]=buf[1];
mode[2]=buf[2];
start=0;
mode1=1; //指示主函数循环检测一次
}
else if(rec_data==0xff&&start==0) //如果收到的是包头
start++;
}

4 小车成品展示

摄像头则安装在车尾处, 可以观察倒车时后视的环境, 也适用于作为图像处理的后续功能推进, WIFI 模块在开发板的下方, 不影响信号的前提下也得到了合理的空间放置。

5 泊车算法设计

常见的泊车方式有: 侧方位泊车和倒车入库泊车, 本设计根据两种泊车方式设计了不同的算法。

5.1 侧方位泊车

侧方位停车位的设置主要是为了道路的宽度而设置, 机动车驾驶证考试中的科目二就有一项侧方位停车法。 本设计由科目二驾驶中的侧方停车为标准, 侧方位泊车如图所示。

根据停车的不同场景, 本设计通过收集的环境信息进行了不同的处理, 并作出不同的控制电信号。

如果未扫描到障碍物和相邻小车, 系统主要通过循迹模块对停车线反射的强度不同来定位停车位的具体位置。 具体算法逻辑如流程图所示:

算法步骤:

  • 1、 按下遥控器按钮平行泊车模式, 开始检测周围环境信息, 如果超声波反射回来的距离小于 10CM 则判断为障碍物, 大于 10CM 则判断为无障碍物。
  • 2、 减速后退直到超声波判断距离大于 10CM 且红外避障无感应。
  • 3、 红外避障有感应则继续后退, 重复(1)(2)步骤。
  • 4、 左循迹模块感应到停车线, 系统收集到此时车辆左转角度, 然后继续左转。
  • 5、 右循迹模块感应到停车线, 系统收集到此时车辆位置信息, 由于小车左转角度还不足, 系统此时再给予一个 200MS 的左转信号。
  • 6、 车辆左转角度已经足够, 停车时的车辆速度不能过快, 修改高电平的占比, 降低速度, 给出一个持续前进的电信号
  • 7、 中循迹模块感应到边缘停车线, 小车停止。
  • 8、 开始摆正车身, 根据左转的角度, 给出相同延时右转信号摆正车身
  • 9、 右转进行时, 对中循迹模块进行判定, 如果收集到电信号, 对小车进行后退调整,然后完成整个系统泊车操作。

关键代码

if(LL_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
auto_flag = 1;
}
CarRight();
}
else if (auto_flag == 1)
{if(RR_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
CarRight();
delay_ms(6000);
CarStop();
delay_ms(18000);
auto_flag = 2;
}
CarRight();
}
else if(auto_flag == 2)
{SPEED_DUTY = 10;
if(SEARCH_M_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
CarBack();
delay_ms(6000);
back_time = 0;
back_flag = 0;
auto_flag = 3;
}
CarGo();
}
else if(auto_flag == 3)
{SPEED_DUTY = 30;
if(back_time <= 600)
{CarLeft();
if(SEARCH_M_DATA == BLACK_AREA)
{back_flag = 1;
}
if(back_time == 599)auto_flag = 4;
}
}
else if (auto_flag == 4)
{if(back_flag == 0)sensor_flag = 0;
else if(back_flag == 1)
{SPEED_DUTY = 20;
CarBack();
delay_ms(4000);
CarStop();
sensor_flag = 0;
}
}

5.2 倒车入库

倒车入库是多数停车场中的停车建设, 停停车场都有较为规范的停车线规划和停车建设, 对于线条的感应也更容易, 倒车入库示意图如图所示

算法设计

算法流程:

  • 1、 按下遥控器按钮垂直泊车模式, 开始检测周围环境信息, 如果超声波反射回来的距离小于 10CM 则判断为障碍物, 大于 10CM 则判断为无障碍物。
  • 2、 减速后退直到超声波判断距离大于 10CM, 且红外避障未感应到障碍物, 开始左转
  • 3、 左循迹模块感应到停车线, 系统收集到此时车辆左转角度, 然后继续左转
  • 4、 右循迹模块感应到停车线, 系统收集到此时车辆位置信息,
  • 5、 车辆左转角度已经足够,调整车身, 左转至车身垂直。
  • 6、 根据车身调整位置, 三路循迹在同一条直线上, 给出前进信号。
  • 7、 倒车入库完成。
void AUTO_Vertical(void)
{if (auto_flag == 0 )
{if(obstacle_flag == 0)
{if(distance_cm < 15 )
{SPEED_DUTY = 10;
CarGo();
return;
}
else if(distance_cm >= 15 )
{CarStop();
obstacle_flag = 1;
}
}
if( obstacle_flag == 1)
{SPEED_DUTY = 30;
CarRight();
if(LL_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
auto_flag = 1;
}
}
}
else if (auto_flag == 1)
{if(SEARCH_L_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
auto_flag = 2;
}
CarRight();
}
else if(auto_flag == 2)
{SPEED_DUTY = 10;
CarGo();
if(SEARCH_M_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
CarBack();
delay_ms(8000);
auto_flag = 3;
back_time = 0;
}
}
else if(auto_flag == 3)
{SPEED_DUTY = 30;
if(back_time >= 12)auto_flag = 4;
if(back_time <= 14)
{CarRight();
}
}
else if(auto_flag == 4)
{if(SEARCH_M_DATA == BLACK_AREA)
{CarStop();
delay_ms(18000);
CarBack();
delay_ms(6000);
sensor_flag = 0;
}
SPEED_DUTY = 10;
CarGo();
}
}

6 测试效果

优先模拟的周围无障碍物的情形, 会通过判断停车线然后根据算法步骤将车停进去车位。 经过多次测试, 小车多次稳定的停入车位, 但若控制者将车驶在与停车位平行的位置, 会导致停车缓慢且容易出错, 车位可供停车的范围需对小车的位置有限制。 运行完侧方位泊车之后小车的位置如图



单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

7 最后

【毕业设计】基于 STM32 的自动泊车系统 -智能小车 - 物联网单片机相关推荐

  1. 单片机毕业设计 基于stm32的自动泊车系统

    文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...

  2. 毕业设计 STM32自动泊车系统 - 智能小车 自动停车

    文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...

  3. 单片机毕业设计 STM32自动泊车系统 - 智能小车 自动停车

    文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...

  4. 毕业设计 stm32自动泊车系统 智能小车

    文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...

  5. 毕业设计 嵌入式 STM32自动泊车系统 - 智能小车 自动停车

    文章目录 1 简介 1 背景 2 设计概要 3 硬件选型 3.1 主控 - STM32 3.2 电机驱动 3.3 红外遥控设计 3.4 传感器部分 3.4.1 循迹模块 3.4.2 红外避障模块 3. ...

  6. STM32毕业设计——基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码)——智能家居系统

    基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于STM32+MQTT+WiFi技术的智能家居系统设计与实现,文章末尾附有本毕业设计的论文 ...

  7. 毕业设计 —— 基于STM32手势控制显示系统的设计

    目录 一.前言 二.项目背景及资源分享 三.项目简介 1.项目名称 2.系统框架 3.功能简介 4.控制核心 5.最小系统: 6.外围模块: 四.相关设计原理及框图 1.系统设计的原理 2.手势识别原 ...

  8. 物联网毕业设计-基于stm32的温湿度监控系统

    一.引言 近年来,随着科技的进步,计算机和电子技术在各个领域的应用越来越广泛,人们对温湿度的要求也越来越高.现在用于食品.药品和环境监测的仪器.仪表和计算机等设备越来越多,它们与人们生产.生活的关系越 ...

  9. 毕业设计 - 基于STM32的肺活量检测系统 - 物联网 单片机

    基于STM32单片机的肺活量检测 由 STM32F103C8T6单片机最小系统+压力传感器+语音模块+显示屏. 采用STM32F103C8T6单片机为主控制器 利用压力传感器模块采集实时值,并将实时值 ...

最新文章

  1. 将整个ASCII文件读入C ++ std :: string [重复]
  2. 《Windows PowerShell实战指南(第2版)》——1.5 安装Windows PowerShell
  3. 黑马程序员C语言基础(第六天)指针
  4. hibernate乐观锁_Hibernate Collection乐观锁定
  5. Android:JNI 与 NDK的区别(含实例教学)
  6. 搭建学习linux的系统环境准备
  7. 【JVM】JVM的生命周期
  8. 互联网时代的了解和未来的预期_互联网时代品牌农业该如何营销 后园带你了解这五点...
  9. mysql 用户权限管理
  10. java非静态内部类如何创建对象实例
  11. 360安全浏览器安装adblock plus
  12. Mysql查询去空格方法汇总
  13. 求大佬发一个unity curvy的资源包啊
  14. IIS7管理器设置网站首页
  15. 16个千兆光口8个千兆Combo光电复用口管理型工业以太网交换机环网+WEB管理+SNMP+VLAN
  16. ipad pro network error occurred
  17. 深度linux安装宝塔,Linux 安装宝塔
  18. 回归模型评价指标-SST、SSR、SSE、R-square
  19. 【域名检测】使用CNN实现DGA恶意域名检测(TensorFlow)【代码】
  20. 三职计算机基础Word,职高三计算机应用基础(win7+office2010)word

热门文章

  1. 资源---2020考研---百度云---资料2(自己看文章简介)
  2. Python爬取安居客新房信息
  3. Navicate使用
  4. 如何使用云服务器以及宝塔面板快速搭建discuz论坛网站?
  5. 【Windows】能上QQ却打不开网页(提示未连接到互联网,代理服务器出现问题,或者地址有误。)的解决办法
  6. 树莓派 公网IP变动后 自动邮件通知 python
  7. ‘大案牍术’告诉你为什么《长安十二时辰》这么火!
  8. 【可见光室内定位】(一)概览
  9. java中abstract怎么使用
  10. web开发—— 前端基础(6) ——语义化标签