关于这个项目

该项目是如何使用超声波传感器和Arduino创建自动手动消毒器的。您已经看到了基于IR传感器的许多手动消毒器,那些手动消毒剂非常简单易于制作。但是,这些消毒剂根据超声波传感器的手动消毒剂并不高效且准确。基于IR传感器的手动消毒剂的主要问题是,当阳光干扰IR传感器时,您无法将它们放在直射阳光下。此外,用于检测手的IR传感器的最大距离小于10cm,但在超声波传感器的手动消毒器中,您可以将距离设置为大于10厘米。

在搬到项目之前,让我们首先了解超声波传感器是什么以及它的工作原理。超声波传感器是一种基于超声声的传感器。它具有一个超声波发射器和一个超声波接收器。当您使用微控制器向传感器提供输入信号时,发射器发送超声波,然后通过超声波接收器接收的物体并由超声波接收器接收的对象反射。然后,传感器输出声音从传感器行进的总时间,然后在从物体反射后返回传感器。

超声波传感器的销图

超声波传感器的销图

超声波传感器的工作

超声波传感器的工作

自动洗手液工作

我们将使用超声波传感器来检测手。检测手的距离可以根据您的要求轻松设置在Arduino码中。Arduino将重复发送信号以触发超声波传感器,当您的手在传感器前面存在时,传感器将输出声音往返于物体的总时间。然后,Arduino读取该信号。基于该信号,我们将写入代码,当传感器检测到手动时,它将打开手动消毒剂,并且当手上不存在于传感器前方的手中,将关闭手动清理器。我们将使用DC水泵为此目的。

自动洗手盒框图

自动洗手盒框图

自动洗手液电路图

自动洗手液电路图

Arduino代码为自动洗手液

int pump = 2;int trig_pin = 3;int echo_pin = 4;很久;距离;void setup(){serial.begin(9600);Pinmode(Trig_pin,输出);Pinmode(Echo_pin,输入);Pinmode(泵,输出);void循环(){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 pump = 2;int trig_pin = 3;int echo_pin = 4;

创建存储PIN码的变量,其中连接了电路的信号引脚,触发销和传感器的回声销。

很久;距离;

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

void setup(){serial.begin(9600);Pinmode(Trig_pin,输出);Pinmode(Echo_pin,输入);Pinmode(泵,输出);}

使用Serial.Begin()设置串行通信的波特率。然后将TRIG引脚设置为输出,因为Arduino将使用此引脚触发传感器。然后将echo引脚设置为输入,因为Arduino将使用此引脚从传感器获取时间数据。

void循环(){digitalwrite(trig_pin,low);Delaymicroseconds(2);DigitalWrite(Trig_pin,高);Delaymicroseconds(10);DigitalWrite(trig_pin,low);

为了触发传感器,您必须在TRIG PIN上发送高电平的逻辑高10微秒。因此,首先我们将通过传感逻辑低,清除Trig引脚。然后我们将延迟2us。然后我们将在Trig PIN上发送逻辑低,并延迟10us。之后,我们将向该引脚发送低电平的逻辑。

Time = Plablein(Echo_pin,高);距离=时间* 0.034 / 2;

然后,我们将使用PlauliN()函数来存储来自传感器的时间数据。之后,通过使用公式速度=距离/时间,我们将计算对象的距离。我们已经知道了声音和时间的速度。因此,您可以轻松计算距离。我们将该值划分为2,因为我们将从传感器中获得的时间是从传感器到Object + Object +从物体到传感器拍摄的对象+时间所花费的时间。我们只需要单向时间,这就是我们必须将其划分为2的单向时间。在这里,0.034是CM / US的声音速度,因为我们从传感器中获得的时间是微秒的。

serial.print(“距离:”);serial.println(距离);

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

if(距离<15){DigitalWrite(泵,高);}

我们将检查手的距离是否小于15cm。您可以在此处设置距离。如果距离小于给定值,则会打开Sanitizer泵。

否则{digitalwrite(泵,低);}

如果在传感器前面存在任何东西,则消毒器泵将转动。

作者

评论被关闭。