关于这个项目

这个项目是关于如何使用超声波传感器和Arduino创建一个自动洗手液。你已经看到了很多基于红外传感器的洗手液,这些洗手液非常简单,很容易制作。但这些消毒剂不如基于超声波传感器的洗手液高效、准确。基于红外传感器的洗手液的主要问题是,你不能把它们放在阳光直射下,因为阳光会干扰红外传感器。此外,用于检测手的红外传感器的最大距离不到10cm,但在基于超声波传感器的洗手液中,可以设置超过10cm的距离。

在开始这个项目之前,让我们先了解什么是超声波传感器以及它是如何工作的。超声波传感器是一种基于超声波的传感器。它有一个超声波发射器和一个超声波接收器。当你使用微控制器给传感器一个输入信号时,发射器发送一个超声波,然后它被出现在传感器前面的物体反射回来,并被超声波接收器接收。然后,传感器输出声音从物体反射后从传感器到传感器所花费的总时间。

超声波传感器的引脚图

超声波传感器的引脚图

超声波传感器的工作

超声波传感器的工作

自动洗手液的工作原理

我们将使用超声波传感器对手进行检测。检测手的距离可以根据您的要求在Arduino代码中轻松设置。Arduino会反复发送一个信号来触发超声波传感器,当你的手出现在传感器前面时,传感器将输出声音在物体之间传播所花费的总时间。然后Arduino读取信号。基于这个信号,我们将编写代码,当传感器检测到手时,它将打开洗手液,当手不在传感器前时洗手液将关闭。为此,我们将使用直流水泵。

自动洗手液框图

自动洗手液框图

自动洗手液电路图

自动洗手液电路图

自动洗手液的Arduino代码

int泵= 2;int trig_Pin = 3;int echo_Pin = 4;长时间;int距离;void setup() {Serial.begin(9600);pinMode (trig_Pin、输出);pinMode (echo_Pin、输入);pinMode(泵、输出);} void loop() {digitalWrite(trig_Pin,LOW); delayMicroseconds(2); digitalWrite(trig_Pin,HIGH); delayMicroseconds(10); digitalWrite(trig_Pin,LOW); Time=pulseIn(echo_Pin,HIGH); distance=Time*0.034/2; Serial.print("Distance:"); Serial.println(distance); if(distance<15) { digitalWrite(pump,HIGH); } else { digitalWrite(pump,LOW); } }

工作的代码

int泵= 2;int trig_Pin = 3;int echo_Pin = 4;

创建变量,用于存储连接水泵信号引脚、传感器三角引脚和回波引脚的引脚编号。

长时间;int距离;

创建一个变量来存储来自传感器的时间和一个变量来存储距离。

void setup() {Serial.begin(9600);pinMode (trig_Pin、输出);pinMode (echo_Pin、输入);pinMode(泵、输出);}

使用serial.begin()设置串口通信的波特率。然后将三角引脚设置为输出,因为Arduino将使用这个引脚触发传感器。然后将echo引脚设置为输入,因为Arduino将使用该引脚从传感器获取时间数据。

void loop() {digitalWrite(trig_Pin,LOW);delayMicroseconds (2);digitalWrite (trig_Pin、高);delayMicroseconds (10);digitalWrite (trig_Pin、低);

为了触发传感器,你必须在三角引脚上发送10微秒的逻辑HIGH。因此,要做到这一点,首先我们将通过感知逻辑低清除三角引脚。那么我们将给2个us的延迟。然后我们将在三角引脚上发送逻辑LOW,并给出10us的延迟。在那之后,我们将发送逻辑低到那个引脚。

时间= pulseIn (echo_Pin、高);距离=时间* 0.034 / 2;

然后我们将使用pulseIN()函数存储来自传感器的时间数据。然后,用速度=距离/时间的公式来计算物体的距离。我们已经知道了声速和时间。所以,你可以很容易地计算出距离。我们把这个值除以2因为我们从传感器得到的时间是声音从传感器传到物体所花费的时间加上声音从物体传到传感器所花费的时间。我们只需要单向时间这就是为什么我们要除以2。这里0.034是声速,单位是厘米/我们,因为我们从传感器得到的时间,单位是微秒。

并同时“距离:”);以(距离);

我们将使用print命令在串行监视器上打印距离。

如果距离(< 15){digitalWrite(泵、高);}

我们会检查手的距离是否小于15cm你可以在这里设定距离。如果距离小于给定值,消毒泵将打开。

其他{digitalWrite(泵、低);}

如果在传感器前没有任何东西存在,消毒泵将被打开。

作者

评论都关门了。

Baidu