2021-08-26 11:09:28 索炜达电子 1642
项目编号:E666
文件大小:4.2M
源码说明:带中文注释
开发环境:C编译器
简要概述:
一.本设计的主要功能是,通过心率传感器检测驾驶员脉搏,MPU6050加速度传感器检测驾驶员头部加速度,来判断驾驶员是否犯困(表情并且偷笑)。
本设计包含本设计的原理图,硬件清单,STM32代码,测试时的串口输出内容TXT。
二.硬件组成
-硬件总成本100以内。
-硬件清单截图,表格会放在在资料里。
三.原理图
原理图部分要说明两点
1、MAX30102是网上随便找了个图照着画的。led的部分没画,在淘宝买的模块,没有原理图。
2、mpu6050是参考原子的,实际用的是串口输出的mpu6050,接的是单片机的串口3,mpu6050部分电路中串口部分只画了引脚标号,连接到了单片机的串口3.
四.实现的功能
1、持续实时计算30秒内的平均脉搏
2、按键1按下后将一分钟内的平均脉搏设为正常脉搏,正常脉博值更新后蜂鸣器隔一秒响一次,正常脉博值未更新时蜂鸣器一秒响4次,这样能知道当前什么状态,报警状态就是一直响。如果已经按下过按键一 ,那再按一次就会蜂鸣器快响,并计算平均值,计算完蜂鸣器再慢响,相当于更新了一次平均值。
3、按键2按下,实时检测xyz加速度,并且设置对应的三个报警值,超过报警值蜂鸣器报警,需要按按键4手动取消报警,报警值设置程序中采用宏定义的方式,方便用户更改调试,每次更改后需重新下载程序。再按一次按键2 加虚度检测停止工作。按键2 相当于只检测加速度。
4、第三个按键按下,脉搏报警值和加速度报警值每两分钟改变一次,超过报警值就报警。并开始计时,到达十分钟触发报警。如果中途发生超过报警值的报警按取消报警停止报警10分钟计时停止也不重新计,第三个按键再按一次,就停止。
5、按第四个按键取消报警。
五.
目录│文件列表:
└ 疲劳驾驶检测全套资料
│ 原理图.SchDoc
│ 方案初稿.xlsx
│ 测试时串口输出.txt
│ 硬件清单.xlsx
└ stm32代码
│ keilkilll.bat
├ CORE
│ │ core_cm3.c
│ │ core_cm3.h
│ │ startup_stm32f10x_hd.s
│ └ startup_stm32f10x_md.s
├ HARDWARE
│ ├ EXTI
│ │ │ exti.c
│ │ └ exti.h
│ ├ KEY
│ │ │ key.c
│ │ │ key.h
│ │ │ led.c
│ │ └ led.h
│ ├ MAX30102
│ │ ├ algorithm
│ │ │ │ algorithm.c
│ │ │ └ algorithm.h
│ │ ├ IIC
│ │ │ │ myiic.c
│ │ │ └ myiic.h
│ │ └ MAX30102
│ │ │ MAX30102.c
│ │ │ MAX30102.c.orig
│ │ └ MAX30102.h
│ ├ OLED
│ │ │ bmp.h
│ │ │ oled.c
│ │ │ oled.h
│ │ └ oledfont.h
│ └ TIMER
│ │ timer.c
│ └ timer.h
├ OBJ
│ │ algorithm.crf
│ │ algorithm.d
│ │ algorithm.o
│ │ core_cm3.crf
│ │ core_cm3.d
│ │ core_cm3.o
│ │ delay.crf
│ │ delay.d
│ │ delay.o
│ │ ExtDll.iex
│ │ exti.crf
│ │ exti.d
│ │ exti.o
│ │ key.crf
│ │ key.d
│ │ key.o
│ │ main.crf
│ │ main.d
│ │ main.o
│ │ max30102.crf
│ │ max30102.d
│ │ max30102.o
│ │ misc.crf
│ │ misc.d
│ │ misc.o
│ │ myiic.crf
│ │ myiic.d
│ │ myiic.o
│ │ OLED.axf
│ │ OLED.build_log.htm
│ │ oled.crf
│ │ oled.d
│ │ OLED.hex
│ │ OLED.htm
│ │ OLED.lnp
│ │ oled.o
│ │ OLED.sct
│ │ OLED_Target 1.dep
│ │ startup_stm32f10x_hd.d
│ │ startup_stm32f10x_hd.o
│ │ stm32f10x_adc.crf
│ │ stm32f10x_adc.d
│ │ stm32f10x_adc.o
│ │ stm32f10x_bkp.crf
│ │ stm32f10x_bkp.d
│ │ stm32f10x_bkp.o
│ │ stm32f10x_can.crf
│ │ stm32f10x_can.d
│ │ stm32f10x_can.o
│ │ stm32f10x_cec.crf
│ │ stm32f10x_cec.d
│ │ stm32f10x_cec.o
│ │ stm32f10x_crc.crf
│ │ stm32f10x_crc.d
│ │ stm32f10x_crc.o
│ │ stm32f10x_dac.crf
│ │ stm32f10x_dac.d
│ │ stm32f10x_dac.o
│ │ stm32f10x_dbgmcu.crf
│ │ stm32f10x_dbgmcu.d
│ │ stm32f10x_dbgmcu.o
│ │ stm32f10x_dma.crf
│ │ stm32f10x_dma.d
│ │ stm32f10x_dma.o
│ │ stm32f10x_exti.crf
│ │ stm32f10x_exti.d
│ │ stm32f10x_exti.o
│ │ stm32f10x_flash.crf
│ │ stm32f10x_flash.d
│ │ stm32f10x_flash.o
│ │ stm32f10x_fsmc.crf
│ │ stm32f10x_fsmc.d
│ │ stm32f10x_fsmc.o
│ │ stm32f10x_gpio.crf
│ │ stm32f10x_gpio.d
│ │ stm32f10x_gpio.o
│ │ stm32f10x_i2c.crf
│ │ stm32f10x_i2c.d
│ │ stm32f10x_i2c.o
│ │ stm32f10x_it.crf
│ │ stm32f10x_it.d
│ │ stm32f10x_it.o
│ │ stm32f10x_iwdg.crf
│ │ stm32f10x_iwdg.d
│ │ stm32f10x_iwdg.o
│ │ stm32f10x_pwr.crf
│ │ stm32f10x_pwr.d
│ │ stm32f10x_pwr.o
│ │ stm32f10x_rcc.crf
│ │ stm32f10x_rcc.d
│ │ stm32f10x_rcc.o
│ │ stm32f10x_rtc.crf
│ │ stm32f10x_rtc.d
│ │ stm32f10x_rtc.o
│ │ stm32f10x_sdio.crf
│ │ stm32f10x_sdio.d
│ │ stm32f10x_sdio.o
│ │ stm32f10x_spi.crf
│ │ stm32f10x_spi.d
│ │ stm32f10x_spi.o
│ │ stm32f10x_tim.crf
│ │ stm32f10x_tim.d
│ │ stm32f10x_tim.o
│ │ stm32f10x_usart.crf
│ │ stm32f10x_usart.d
│ │ stm32f10x_usart.o
│ │ stm32f10x_wwdg.crf
│ │ stm32f10x_wwdg.d
│ │ stm32f10x_wwdg.o
│ │ sys.crf
│ │ sys.d
│ │ sys.o
│ │ system_stm32f10x.crf
│ │ system_stm32f10x.d
│ │ system_stm32f10x.o
│ │ timer.crf
│ │ timer.d
│ │ timer.o
│ │ usart.crf
│ │ usart.d
│ └ usart.o
├ STM32F10x_FWLib
│ ├ inc
│ │ │ misc.h
│ │ │ stm32f10x_adc.h
│ │ │ stm32f10x_bkp.h
│ │ │ stm32f10x_can.h
│ │ │ stm32f10x_cec.h
│ │ │ stm32f10x_crc.h
│ │ │ stm32f10x_dac.h
│ │ │ stm32f10x_dbgmcu.h
│ │ │ stm32f10x_dma.h
│ │ │ stm32f10x_exti.h
│ │ │ stm32f10x_flash.h
│ │ │ stm32f10x_fsmc.h
│ │ │ stm32f10x_gpio.h
│ │ │ stm32f10x_i2c.h
│ │ │ stm32f10x_iwdg.h
│ │ │ stm32f10x_pwr.h
│ │ │ stm32f10x_rcc.h
│ │ │ stm32f10x_rtc.h
│ │ │ stm32f10x_sdio.h
│ │ │ stm32f10x_spi.h
│ │ │ stm32f10x_tim.h
│ │ │ stm32f10x_usart.h
│ │ └ stm32f10x_wwdg.h
│ └ src
│ │ misc.c
│ │ stm32f10x_adc.c
│ │ stm32f10x_bkp.c
│ │ stm32f10x_can.c
│ │ stm32f10x_cec.c
│ │ stm32f10x_crc.c
│ │ stm32f10x_dac.c
│ │ stm32f10x_dbgmcu.c
│ │ stm32f10x_dma.c
│ │ stm32f10x_exti.c
│ │ stm32f10x_flash.c
│ │ stm32f10x_fsmc.c
│ │ stm32f10x_gpio.c
│ │ stm32f10x_i2c.c
│ │ stm32f10x_iwdg.c
│ │ stm32f10x_pwr.c
│ │ stm32f10x_rcc.c
│ │ stm32f10x_rtc.c
│ │ stm32f10x_sdio.c
│ │ stm32f10x_spi.c
│ │ stm32f10x_tim.c
│ │ stm32f10x_usart.c
│ └ stm32f10x_wwdg.c
├ SYSTEM
│ ├ delay
│ │ │ delay.c
│ │ └ delay.h
│ ├ sys
│ │ │ sys.c
│ │ └ sys.h
│ └ usart
│ │ usart.c
│ └ usart.h
└ USER
│ EventRecorderStub.scvd
│ JLinkSettings.ini
│ main.c
│ OLED.uvguix.Administrator
│ OLED.uvguix.zheng
│ OLED.uvoptx
│ OLED.uvprojx
│ stm32f10x.h
│ stm32f10x_conf.h
│ stm32f10x_it.c
│ stm32f10x_it.h
│ system_stm32f10x.c
│ system_stm32f10x.h
├ DebugConfig
│ └ Target_1_STM32F103C8_1.0.0.dbgconf
└ Listings
│ OLED.map
└ startup_stm32f10x_hd.lst