风筝
发表于: 2021-11-24 16:06:48 | 显示全部楼层

由于路面车辆交通量的大幅增加,道路事故成为一个令人担忧的问题。事故的主要原因是驾驶员在夜间昏昏欲睡。疲劳和困倦是高速公路发生重大事故的一些主要原因。解决此问题的唯一方法是检测疲劳状态并提醒驾驶员。


因此,在本篇文章中,我们考虑使用Arduino Nano开发板、眨眼传感器和RF收发器模块为制作驾驶员疲劳状态检测和警报系统。该系统的基本目的是使用眨眼传感器跟踪驾驶员的眼球运动,如果驾驶员感到困倦,则系统将使用蜂鸣器警报触发警告信息。


所需的组件

●    Arduino Nano开发板

●    眨眼传感器

●    射频收发器模块

●    蜂鸣器

●    9V电池

●    12V直流电源


眨眼传感器简介

Eye-Blink-Sensor.jpg

眨眼传感器(Eyeblink Sensor)用于检测眼睛眨动,使用它我们还可以检测驾驶员在驾驶时的疲倦等活动。它的工作原理基于红外LED技术。它包含一个红外发射器和接收器 LED,用于检测眨眼。简单红外传感器的工作原理如下图所示:

Eye-Blink-Sensor-Working.jpg

如上图所示,红外传感器由两个元件组成:作为源的红外发射器和作为接收器的红外接收器。红外光源包括红外LED,红外探测器包括光电二极管。红外光源发射的能量被物体反射并返回到红外探测器上。当红外LED发出的光落在接收器上时,光电二极管的电阻会显着下降。该光接收器与电位计连接以形成分压器电路,当检测到眨眼活动时,该电路会提供可变的模拟输出。


当光电二极管上的入射辐射更多时,串联电阻器/电位器上的电压降会很高。在运算比较器中,比较参考模拟电压和实际输出电压。如果电阻串联到光电二极管的电压大于参考电压的电压,则比较器的输出为高,否则为低。由于比较器的输出连接到LED,当传感器检测到某些活动(例如眨眼)时,它会发光。可以根据环境条件通过调节电位器来调节阈值电压。


驾驶员疲倦状态检测器电路图

驾驶员疲倦状态检测器由射频发射器和接收器部分组成。发射器部分由射频发射器和眨眼传感器组成,接收器侧使用射频接收器和Arduino Uno进行数据处理。发射器和接收器部分的电路图如下所示。

Driver-Drowsiness-Detector-Circuit-Diagram.jpg

如图所示,首先使用7805稳压器将9V DC电池降压到5V DC,然后将5V DC电源提供给眨眼传感器和RF发射器。眨眼传感器的输出引脚馈入射频发射器,以无线方式将其传输到接收器端。

Driver-Drowsiness-Detector-Circuit-Diagram-Receiver-Side.jpg

如图所示,在接收端,RF 接收器连接到来自Arduino的5V直流电源。 Arduino由外部12V直流电源供电。 RF接收器的输出连接到Arduino的模拟引脚。如图所示,蜂鸣器连接到Arduino的数字引脚。


代码编程

在发射器端和接收器端的硬件连接成功后,现在可以将代码上传到连接到接收器端的Arduino Nano。首先,让我们逐行介绍下面的代码:


首先,声明所需的变量,如下所示。

  1. int flag=0;
  2. int t1=0;
  3. int t2=0;
复制代码

setup()函数中,初始化所有组件,包括串行端口初始化和引脚声明,如下所示。

  1. void setup() {
  2.   Serial.begin(9600);
  3.   pinMode(2,OUTPUT);
  4. }
复制代码

RF 接收器的串行数据输出从模拟引脚A0读取并存储在一个变量中,如图所示。要检查参考值,我们可以使用串口监视器查看它。

  1.   int x=analogRead(A0);
  2.   Serial.println(x);
复制代码

确定参考值后,写一个if-else语句来检测疲劳状态。如下代码所示,millis() 函数用于知道眨眼发生的持续时间。如果它大于该值,则它会发出蜂鸣声以提醒驾驶员。在我们的例子中,持续时间为 1000 毫秒或 1 秒。

  1. if(x<400 && flag==0) {
  2.     flag=1;
  3.     t1=millis();
  4. }
  5. else if(x>400 && flag==1) {
  6.     flag=0;
  7.     t2=millis();
  8.     Serial.println(t2-t1);
  9.     if((t2-t1)>1000) {
  10.         digitalWrite(2,HIGH);
  11.         Serial.println("Alert!!!!!!!!!!!!!!!!!");
  12.         delay(2000);
  13.         digitalWrite(2,LOW);
  14.     }
  15.     else;
  16.   }
  17. }
复制代码

疲倦状态检测测试

将程序成功上传到Arduino后,现在可以测试了。首先打开发射器和接收器两侧的电源。确保两端都有电。戴上有眨眼传感器的太阳镜,尝试正常眨眼,传感器上应该有一个LED发光。如果没有,则尝试改变电位器以改变灵敏度,直到它成功检测到眨眼。检测成功后,通过延时眨眼测试疲倦状态,这时应通过蜂鸣器鸣响报警。


以上就是使用Arduino Nano开发板和眨眼传感器制作驾驶员疲倦状态检测和警报系统的全部内容。如果您有任何疑问,可以在本帖下面进行回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 22:01 , Processed in 0.047720 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表