汽车辅助系统

目录

一,项目描述

二,项目 功能

三,代码实现

(1)倒车雷达

(2)AD(对 雨滴与光敏电阻传感器进行AD采集)

(3)雨刷

(4)灯光

最后总结:


一,项目描述

       当前移动互联网、物联网、云计算、大数据、人工智能为代表的信息技术的 运用促进社会向智能化进化,汽车交通领域智能化成为科技发展的必然趋势,车 联网、汽车驾驶辅助系统(ADAS)是汽车领域创新应用的重点。车联网技术是借 助人、车、环境、云平台之间全方位的连接和信息交互,精确感知和预测周边环 境状态,而 ADAS 作为一种实现人工智能驾驶过渡的技术,其原理是借助车辆上 感知层将检测到的车内外的环境信号转换成电信号,并经过数字信号处理完成智 能判断和车辆的自动控制。ADAS 功能的实现通常需要通过摄像头、激光雷达、 毫米波雷达、红外线探头等感知层、决策层和控制层完成信息的采集、分析和自 动驾驶动作的转换;而光学元件作为车载镜头、激光雷达等感知层信息采集的重 要入口,将受益于智能驾驶市场的发展。

二,项目 功能

该汽车驾驶辅助系统包含四大功能模块:倒车预警,感应雨刷、 自动大灯、中控显示。

(1)倒车预警 倒车预警功能是在倒车过程中检测车辆与后方障碍物的距离,实时在中控屏 进行距离显示。且当距离小于安全距离(可以在移动端进行修改)时,发出警报 声予以提示。

(2)感应雨刷 感应雨刷能够监测前挡风玻璃上是否有水,如果检测到有水,则会自动开启 雨刷,并且会根据雨水量的大小来相应改变雨刷的档位,即雨刷刷动频率。

(4)自动大灯 自动大灯功能能够实时监测行车环境光线的强弱,当检测到光照强度较弱时, 能够自动开启车灯;反之,当光照强度较强时会自动关闭大灯。

(5)中控显示。 中控显示指将其他辅助功能中检测到的环境参数、车辆状态、操作等信息在 中控屏上进行显示

三,代码实现

(1)倒车雷达

hcsr.c(使用定时器4进行距离计算)

void hcsr04_NVIC()
{NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;             NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       NVIC_Init(&NVIC_InitStructure);
}//IO口初始化 及其他初始化
void Hcsr04Init()
{  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG;      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);GPIO_InitStructure.GPIO_Pin =   HCSR04_ECHO;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);  GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);   TIM_DeInit(TIM4);TIM_TimeBaseStructure.TIM_Period = (1000-1); TIM_TimeBaseStructure.TIM_Prescaler =(72-1); TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);          TIM_ClearFlag(TIM4, TIM_FLAG_Update);  TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);    hcsr04_NVIC();TIM_Cmd(TIM4,DISABLE);     
}//打开定时器4
static void OpenTimerForHc()  
{TIM_SetCounter(TIM4,0);msHcCount = 0;TIM_Cmd(TIM4, ENABLE); 
}//关闭定时器4
static void CloseTimerForHc()    
{TIM_Cmd(TIM4, DISABLE); 
}//定时器4终中断
void TIM4_IRQHandler(void)  
{if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)  {TIM_ClearITPendingBit(TIM4, TIM_IT_Update  ); msHcCount++;}
}//获取定时器4计数器值
u32 GetEchoTimer(void)
{u32 t = 0;t = msHcCount*1000;t += TIM_GetCounter(TIM4);TIM4->CNT = 0;  delay_ms(50);return t;
}//通过定时器4计数器值推算距离
float Hcsr04GetLength(void )
{u32 t = 0;int i = 0;float lengthTemp = 0;float sum = 0;while(i!=5){TRIG_Send = 1;      delay_us(20);TRIG_Send = 0;while(ECHO_Reci == 0);      OpenTimerForHc();        i = i + 1;while(ECHO_Reci == 1);CloseTimerForHc();        t = GetEchoTimer();        lengthTemp = ((float)t/58.0);//cmsum = lengthTemp + sum ;}lengthTemp = sum/5.0;return lengthTemp;
}

hcsr.h

#ifndef __HCSR_H
#define __HCSR_H	#define HCSR04_PORT     GPIOB
#define HCSR04_CLK      RCC_APB2Periph_GPIOB
#define HCSR04_TRIG     GPIO_Pin_11
#define HCSR04_ECHO     GPIO_Pin_10
#define ECHO_Reci  PBin(10)
#define TRIG_Send  PBout(11)
void hcsr04_NVIC(void);
void Hcsr04Init(void);
static void OpenTimerForHc(void);
static void CloseTimerForHc(void);
void TIM4_IRQHandler(void);
void NVIC_Configuration(void);
float Hcsr04GetLength(void );#endif

(2)AD(对 雨滴与光敏电阻传感器进行AD采集)

#include "stm32f10x.h"                  // Device header
#include "stm32f10x_adc.h"
void AD_Init(void)
{ADC_InitTypeDef ADC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1);while (ADC_GetResetCalibrationStatus(ADC1) == SET);ADC_StartCalibration(ADC1);while (ADC_GetCalibrationStatus(ADC1) == SET);
}uint16_t AD_GetValue(uint8_t ADC_Channel)
{ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTime_55Cycles5);ADC_SoftwareStartConvCmd(ADC1, ENABLE);while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);return ADC_GetConversionValue(ADC1);
}

main.c(倒车雷达)

 //倒车雷达if(KEY1 ==0) //按键1进行加{delay_ms(100);if(KEY1==0)biaozhun+=changdu;}if(KEY2==0) //按键2进行减{delay_ms(100);if(KEY2==0)biaozhun-=changdu;}printf("距离为:%.3fcm\n",Hcsr04GetLength());printf("阈值为:%d\n",biaozhun);//阈值showhanzi(10,40,4);showhanzi(40,40,5);LCD_ShowNum(90,40,biaozhun,4);LCD_ShowString(120,40,"cm");//距离showhanzi(10,80,6);showhanzi(40,80,7);LCD_ShowNum(90,80,Hcsr04GetLength(),4);LCD_ShowString(120,80,"cm");//达到阈值时进行蜂鸣器警报if(Hcsr04GetLength()<biaozhun){GPIO_ResetBits(GPIOB, GPIO_Pin_12);  }else {GPIO_SetBits(GPIOB, GPIO_Pin_12);}

(3)雨刷

if((AD1<4100) &&(AD1>3600))   {TIM_SetCompare1(TIM2, 500);TIM_SetCompare2(TIM2, 500);delay_ms(1000);TIM_SetCompare2(TIM2, 500);TIM_SetCompare1(TIM2, 500);printf("1");}else if((AD1<3599) &&(AD1>1500)){TIM_SetCompare1(TIM2, 500);TIM_SetCompare2(TIM2, 500);delay_ms(1000);TIM_SetCompare2(TIM2, 1000);TIM_SetCompare1(TIM2, 1000);printf("2");}else{TIM_SetCompare1(TIM2, 500);TIM_SetCompare2(TIM2, 500);delay_ms(500);TIM_SetCompare2(TIM2, 1000);TIM_SetCompare1(TIM2, 1000);printf("3");}

(4)灯光

		//车灯逻辑判断if((AD0<4000) &&(AD0>3001))   {GPIO_ResetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_14);printf("4");}else if((AD0<3000) &&(AD0>1500)){GPIO_SetBits(GPIOC, GPIO_Pin_13);GPIO_ResetBits(GPIOC, GPIO_Pin_14);printf("5");}else{GPIO_SetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_14);printf("6");}
}

最后总结:

在进行舵机转动的时候注意一定将舵机接入5V,血的教训,在舵机电压不够的时候将会出现程序死机的 现象,当时以为 中断 的问题,用串口进行调试 ,最后因为 舵机电压不够导致的。需要程序的可以私信哦

小编码字不容易 留一个赞吧

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

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

相关文章

vue 树状结构数据渲染 (java 处理 list ->树状)

树状结构 Element ui https://element.eleme.cn/#/zh-CN/component/tree <el-tree :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>export default {data() {return {data: [{label: 一级…

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高&#xff0c;消费者对生活质量有着越来越高的期望。生活中&#xff0c;各式各样的电气设备为我们的生活带来了便利&#xff0c;在安装使用这些用电器时&#xff0c;需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…

pdf转二维码怎么做?pdf二维码制作简单技巧

pdf是一种很常见的文件储存格式&#xff0c;一般通知、发票、简历都会保存为这种格式来使用&#xff0c;那么需要将pdf格式文件做成二维码&#xff0c;该用什么方式来制作呢&#xff1f;下面给大家分享一个pdf转二维码的在线工具&#xff0c;可以通过上传文件一键生成二维码&am…

优思学院|六西格玛的发展历程是怎样的?

在商业世界的星空中&#xff0c;有一颗璀璨的星星&#xff0c;它的名字叫做六西格玛。这颗星星不是一夜之间闪耀登场的&#xff0c;而是在商界的无尽深夜中&#xff0c;逐渐积累了耀眼的光芒。今天&#xff0c;我就来为大家介绍一下六西格玛的发展历程吧。 西格玛是啥&#xff…

设备健康管理系统PreMaint如何帮助制药企业符合GMP认证要求

在制药行业&#xff0c;确保药品的质量、安全性和有效性是至关重要的。为了满足这一需求&#xff0c;药品生产质量管理规范&#xff08;GMP&#xff09;被广泛采用作为制药企业达到国际质量标准的基础。然而&#xff0c;制药企业在追求GMP认证标准时面临着不少挑战。本文将探讨…

解决 阿里云oss 对象存储 bucket 中的文件不能在线预览 只能下载

我的域名是在腾讯云的&#xff0c;所以点开腾讯云的域名解析后台。 点击添加记录&#xff1b; 记录类型选 CNAME&#xff1b;主机记录 随便写&#xff1b;解析线路 默认&#xff1b; 记录值 填你的bucketname 就是你存储文件的bucket的名字 然后 . 域名所在区域 北京就是oss-c…

001.第一个C语言项目

Visual studio2022的使用 创建第一个C语言项目和源文件 https://blog.csdn.net/qq_45037165/article/details/124520286 第一个C语言项目 #include<stdio.h> int main() {printf("Hello World");return 0; }运行结果&#xff1a; 第一行为库函数&#xff0…

Richard Stallman 正在与癌症作战

导读为了纪念 GNU 项目成立 40 周年&#xff0c;自由软件基金会&#xff08;FSF&#xff09;已计划在 10 月 1 日&#xff08;即GNU 40&#xff09;为家庭、学生以及美国的其他人群组织一场黑客马拉松活动。 活动之前&#xff0c;GNU 项目于 9 月 27 日迎来了 40 岁生日&#…

windows中elasticsearch7中添加用户名密码验证

1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书&#xff0c;输入密码时直接回车即可&#xff0c;否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…

airflow报ModuleNotFoundError: No module named ‘dags‘原因和解决方法

ModuleNotFoundError: No module named ‘dags’ 原因&#xff1a;airflow默认是从dags目录下开始搜所有模块&#xff0c;如果你加上dags目录名&#xff0c;就相当于在dags目录下找dags包。 解决方法&#xff1a;导入的时候&#xff0c;去掉dags&#xff0c;详细可以参考下面案…

Eclipse Xtext 实现PLC ST 语言到C的转换

Eclipse Xtext 是开发领域专用语言&#xff08;DSL&#xff09;的工具。例如数据库的SQL 语言&#xff0c;PLC 的ST 语言都是一种领域专用语言。在开放自动化领域&#xff0c;提倡基于模型的设计方法。DSL 是描述模型的强有力工具。 在开发PLC 程序IDE时&#xff0c;开发ST编译…

【红日靶场】vulnstack5-完整渗透过程

系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 【红日靶场】vulnstack4-完整渗透过程 文章目录 系列文章目录描述虚拟机密码红队思路 一、环境初始化二、开始渗透外网打点上线cs权限提升域信息…

尚硅谷Flink(四)处理函数

目录 &#x1f98d;处理函数 &#x1f412;基本处理函数 &#x1f412;按键分区处理函数&#xff08;KeyedProcessFunction&#xff09; &#x1f435;定时器&#xff08;Timer&#xff09;和定时服务&#xff08;TimerService&#xff09; // 1、事件时间的案例 // 2、处理…

“揭秘!如何通过京东商品详情接口轻松获取海量精准商品信息!“

京东商品详情接口可以通过HTTP GET请求获取商品详情信息。 请求参数包括num_iid&#xff0c;表示JD商品ID。 请求示例&#xff1a; GET /jd/item_get/?num_iid10335871600 HTTP/1.1 Host: api-vx.Taobaoapi2014.cn Connection: close Accept-Encoding: gzip 点击获取…

双11必看,2023京东双11红包首发时间介绍

双11必看&#xff0c;2023京东双11红包首发时间介绍 10月15日星期日消息&#xff1a;在双十一期间姐妹们最关心的就是商品价格、双11红包、跨店满减&#xff0c;因为这3样就决定我们购物成本。据悉&#xff0c;2023年京东双11京享红包首发时间已经确定了10月23日20点。下面小编…

sd卡的坏块管理与负载均衡

坏块管理 坏块是指在存储介质中出现物理损坏或不可靠的数据块。由于SD卡使用的是闪存技术&#xff0c;它也面临着坏块的问题。 SD卡通过实现坏块管理机制来处理坏块。具体的坏块管理方法可能因制造商和产品型号而有所不同&#xff0c;但通常会采取以下策略&#xff1a; 坏块标…

HarmonyOS/OpenHarmony原生应用开发-华为Serverless服务支持情况(四)

文档中的TS作者认为就是ArkTS之意。 一、云存储 AppGallery Connect&#xff08;简称AGC&#xff09;云存储是一种可伸缩、免维护的云端存储服务&#xff0c;可用于存储图片、音频、视频或其他由用户生成的内容。借助云存储服务&#xff0c;您可以无需关心存储服务器的开发、…

中文连续视觉语音识别挑战赛

视觉语音识别&#xff0c;也称唇语识别&#xff0c;是一项通过口唇动作来推断发音内容的技术。该技术在公共安全、助老助残、视频验真等领域具有重要应用。当前&#xff0c;唇语识别的研究方兴未艾&#xff0c;虽然在独立词、短语等识别上取得了长足进展&#xff0c;但在大词表…

如何设计 API?

在前后端分离的设计中&#xff0c;不管使用什么语言&#xff0c;后端都需要提供 WebAPI 给前端使用。如果是一个平台级的产品&#xff0c;还有可能需要将平台的公共 API 提供给第三方系统使用&#xff0c;这些都要考虑到 API 的设计。 本文聊下 API 设计可能遇到的问题以及处理…

【广州华锐互动】利用VR开展建筑塔吊安全操作学习的好处?

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活带来了前所未有的便利。在工程教育领域&#xff0c;VR建筑塔吊安全操作学习作为一种新型的教学手段&#xff0c;正逐渐成为提高教学质量和培养高素质工程…