【毕业设计】Stm32酒驾检查系统 - 单片机 嵌入式 物联网

本文主要是介绍【毕业设计】Stm32酒驾检查系统 - 单片机 嵌入式 物联网,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 0 前言
  • 1 简介
  • 2 主要器件
  • 3 实现效果
  • 4 设计原理
    • 4.1 MQ-3酒精乙醇传感器模块
    • 4.2 STM32F103C8T6
  • 5 部分核心代码
  • 6 最后


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于Stm32的酒驾检查系统设计与实现

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:3分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md


1 简介

基于STM32单片机酒精浓度检测报警系统。

2 主要器件

  • STM32F103C8T6,主控芯片
  • MQ-3传感器,检测酒精浓度数据
  • 蜂鸣器
  • 案件
  • 语音播报模块
  • 风扇

3 实现效果

屏幕上会显示实时的酒精浓度

整体展示
在这里插入图片描述

酒精浓度超标是,指示灯变化,语音播报模块播报,风扇转动,蜂鸣器报警

在这里插入图片描述

4 设计原理

4.1 MQ-3酒精乙醇传感器模块

简介

MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn02)。当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-3气体传感器对酒精的灵敏度高,可以抵抗汽油、烟雾、水蒸气的干扰。这种传感器可检测多种浓度酒精气氛,是一款适合多种应用的低成本传感器

实物图

在这里插入图片描述
MQ-3气体传感器对酒精的灵敏度高,可以抵抗汽油、烟雾、水蒸气的干扰。这种传感器可检测多种浓度酒精气氛,是一款适合多种应用的低成本传感器。

该模块主要特点如下:

  • 具有信号输出指示。
  • 输出的双通道信号(模拟量输出与 TTL 输出)。
  • TTL 输出有效信号为低电平。
  • 模拟输出电压为 0~5V, 浓度高则电压高。
  • 对乙醇蒸汽拥有很高的灵敏度和不错的选择性。
  • 它具有较长的使用寿命和可靠的稳定性。
  • 快速的响应恢复特性。

4.2 STM32F103C8T6

简介
STM32F103C8T6是一款基于ARM Cortex-M3内核(ARM公司在ARM11以后改用Cortex命名,并分成A、R和M三类,M系列有M0、M0+、M3、M4、M7)的32位的微控制器,采用LQFP48封装,由意法半导体公司(ST)推出,属于STM32系列(ST公司还有SPC5X系列微控制器)。其程序存储器FLASH容量是64KB (64K x 8bit),RAM容量是20KB(20K x 8bit),2个12bit ADC合计12路通道(外部通道只有PA0到PA7、PB0到PB1,并不是18通道),37个通用I/O口(PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1),4个16bit定时器(TIM1(高级控制定时器,带死区插入,常用于产生PWM控制电机)、TIM2、TIM3、TIM4),2IIC,2SPI,3USART,1CAN,工作电压2V~3.6V,工作温度为-40°C ~ 85°C,系统时钟最高可到72MHz(一般是由8MHz的外部时钟经锁相环9倍频到72MHz)。

相关引脚分布

本项目中STM32主要通过ADC采集MQ-3模块的值转换为酒精浓度值显示在LCD屏幕上。同时,驱动语音播报模块、风扇和蜂鸣器。

5 部分核心代码

/* USER CODE BEGIN PV */uint32_t adc_value=0;
uint32_t Alcohol=0;
uint8_t a=1;
/* USER CODE END PV *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_ADC_Start_DMA(&hadc1,&adc_value,1);	Alcohol=((float)adc_value*3.3/4096*0.36-1.08)*10000;//电压数据转换(此处由于还未找到相关公式,暂时这样代替,如有了解的大佬可以在评论区补充一下)printf("Alcohol=%d\r\n",Alcohol);		HAL_Delay(1000);}/* USER CODE END 3 */
}//中断回调函数,当有酒精时,DO口电平由高电平边低电平,PA4触发外部中断,进入中断函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){if(GPIO_Pin==Alcohol_DO_Pin){HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,1);}//设置一个按键中断,为了把酒精触发的LED点亮之后熄灭(实际项目中可改为关闭蜂鸣器等)if(GPIO_Pin==KEY1_Pin){HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,0);}
}/* USER CODE END 4 */
//显示提示信息POINT_COLOR=BLACK;//设置字体为蓝色	      LCD_ShowString(10,100,136,16,16,"Alcohol: .   mg/L");LCD_ShowString(10,120,120,16,16,"Threshol1: .   ");LCD_ShowString(10,140,120,16,16,"Threshol2:0.500");while(1){adcx=Get_Adc_Average(ADC_Channel_1,10);//LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值temp=((float)adcx*(5.0/4096))*0.36-1.08;printf("value:%f",temp);t=KEY_Scan(0);		//得到键值if(t==KEY0_PRES){threshol1+=0.01;}else if(t==KEY1_PRES){threshol1-=0.01;}threshol_1=threshol1;LCD_ShowxNum(90,120,threshol_1,1,16,0);//显示浓度值threshol_2=(threshol1-threshol_1)*1000;LCD_ShowxNum(106,120,threshol_2,3,16,0);if(temp > threshol1 && temp < threshol2)		//如果浓度大于阈值{PB9=0;						//开启蜂鸣器delay_ms(1000);	delay_ms(1000);	PB9=1;						//蜂鸣器关闭delay_ms(1000); LCD_Fill(70,200,170,300,RED);}else if(temp > threshol2){		//急促PB9=0;						//开启蜂鸣器delay_ms(300);	PB9=1;						//蜂鸣器关闭delay_ms(50);LCD_Fill(70,200,170,300,BROWN);}else{PB9=1;		//蜂鸣器关闭LCD_Fill(70,200,170,300,GREEN);}adcx=temp;LCD_ShowxNum(74,100,adcx,1,16,0);//显示浓度值temp-=adcx;temp*=1000;LCD_ShowxNum(90,100,temp,3,16,0);LED0=!LED0;delay_ms(250);	}			

6 最后

这篇关于【毕业设计】Stm32酒驾检查系统 - 单片机 嵌入式 物联网的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325555

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网