首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

stm32毕设分享 stm32单片机酒精浓度酒驾检测系统 - 物联网 嵌入式

  • 24-03-18 03:09
  • 4685
  • 11185
blog.csdn.net

文章目录

  • 0 前言
  • 1 简介
  • 2 主要器件
  • 3 实现效果
  • 4 硬件设计
    • MQ-3酒精乙醇传感器模块
    • SIM800C模块
  • 5 软件说明
    • 系统框图
  • 6 部分核心代码
  • 7 最后


0 前言

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

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

? 基于stm32单片机的酒精浓度酒驾检测系统

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

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

1 简介

为了控制酒后驾车,本项目基于STM32平台设计了一套酒后驾车监测系统。

2 主要器件

  • STM32系统板

  • 酒精检测传感器

  • LCD显示屏

  • 供电模块

  • SIM800C模块

  • 蜂鸣器模块

3 实现效果

主要功能

采用酒精传感器采集数据进行分析,发现酒精超标,会通过GPRS模块向指定的手机号码发送提醒短信LCD显示屏可实时显示检测的酒精含量,超标后,本地蜂鸣器也会发出警报,提醒驾驶员。

在这里插入图片描述

在这里插入图片描述

4 硬件设计

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

简介

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

实物图

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

该模块主要特点如下:

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

SIM800C模块

SIM800C模块是一款高性能高性价比工业级的GSM/GPRS模块。本模块采用SIMCOM公司的工业级四频850/900/ 1800/1900MHz SM800芯片,可以低功耗实现语音、SMS、数据和传真信息的传输。

模块特点:

1、支持极限DC5V-18V宽电压输入

2、有电源使能开关引脚EN

3、支持锂电池供电接口VBAT3.5-4.5V

4、输入支持移动和联通手机卡Micro SIM卡

5、送51/STM32/ARDUINO驱动例程

在这里插入图片描述

5 软件说明

系统框图

在这里插入图片描述
系统原理图

在这里插入图片描述

6 部分核心代码

/* 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 */

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
//显示提示信息
	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);	
		
	}			
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

7 最后

单片机电设小铺子
微信公众号
专注单片机项目开发与分享
注:本文转载自blog.csdn.net的MDC_sir的文章"https://blog.csdn.net/MDC_sir/article/details/135382356"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

124
嵌入式
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top