900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用Arduino的自动开门器

使用Arduino的自动开门器

时间:2021-11-13 06:01:15

相关推荐

使用Arduino的自动开门器

原文地址:/microcontroller-projects/automatic-door-opener-project-using-arduino

使用Arduino的自动开门器

ARDUINO的

经过**萨达姆** 7月12日96

您一定在购物中心和其他商业建筑中看到过自动开门器。当有人靠近入口时,他们将门打开,过一段时间后将其关闭。有许多技术可用于制造这类系统,例如PIR传感器,雷达传感器,激光传感器,红外传感器等。在这个基于arduino的项目中,我们尝试通过使用PIR传感器来复制同一系统。

它使用运动检测传感器(PIR传感器)打开或关闭门,以检测人体遗漏的红外能量。当有人来到门前时,传感器检测到的红外能量发生变化,只要有人接近门,它就会触发传感器打开门。信号进一步发送到控制门的arduino uno。

电路元件

Arduino UNO16x2液晶屏被动红外传感器连接线面包板1 k电阻电源供应马达驱动器CD盒(DVD Troly)

被动红外传感器

PIR传感器检测到任何热量变化,每当检测到热量变化时,其输出PIN就会变为高电平。它们也称为热释电或IR运动传感器。

在这里,我们应该注意,每个物体在加热时都会发出一定量的红外光。人体也会因人体热量而发出红外线。PIR传感器可以检测到红外线的少量变化。每当物体通过传感器范围时,由于空气和物体之间的摩擦,它都会产生红外线,并被PIR捕获。

PIR传感器的主要组件是热释电传感器(如图所示)(塑料盖后面的矩形晶体)。连同BISS0001(“微功率PIR运动检测器IC”),一些电阻器,电容器和其他用于构建PIR传感器的组件。BISS0001 IC接收来自传感器的输入,并进行处理以相应地使输出引脚为HIGH或LOW。

热释电传感器分为两半,当没有运动时,两个半体保持相同状态,这意味着它们都感测到相同的红外水平。一旦有人进入上半部,一半的红外水平就会变得比另一半更大,这将导致PIR做出反应并使输出引脚变高。

热释电传感器被一个塑料盖覆盖,里面有许多菲涅尔透镜阵列。这些透镜是弯曲的,因此传感器可以覆盖很大的范围。

电路图和说明

上图显示了基于arduino的开门器电路的连接。此处,PIR传感器用于感测人体运动,该传感器具有三个端子Vcc,GND和Dout。Dout直接连接到arduino uno的针号14(A0)。16x2 LCD用于显示状态。连接到arduino的13和12的LCD的RS,EN引脚和数据引脚D0-D7连接到arduino数字引脚11、10、9、8。RW直接接地。L293D电机驱动器连接到arduino引脚0和1,用于打开和关闭门。在电路中,我们使用了门电机。

编程说明

此处用于编程的概念非常简单。在程序中,我们仅使用数字输入输出。

DigitalRead用于读取PIR传感器的输出。

此后,如果PIR传感器检测到任何运动,则程序会发送一条命令以打开闸门,停止闸门,关闭闸门和停止闸门。

请参阅以下基于arduino的自动开门器的完整代码。

#include <LiquidCrystal.h>LiquidCrystal lcd(13, 12, 11, 10, 9, 8);#define PIR_sensor 14#define m11 0#define m12 1void setup() {lcd.begin(16, 2);pinMode(m11, OUTPUT);pinMode(m12, OUTPUT);pinMode(PIR_sensor, INPUT);lcd.print(" Automatic ");lcd.setCursor(0,1); lcd.print(" Door Opener ");delay(3000);lcd.clear();lcd.print("CIRCUIT DEGEST ");delay(2000);}void loop() {if(digitalRead(PIR_sensor)){lcd.setCursor(0,0);lcd.print("Movement Detected");lcd.setCursor(0, 1);lcd.print(" Gate Opened ");digitalWrite(m11, HIGH); // gate openingdigitalWrite(m12, LOW);delay(1000);digitalWrite(m11, LOW);// gate stop for a whiledigitalWrite(m12, LOW);delay(1000);lcd.clear();lcd.print(" Gate Closed ");digitalWrite(m11, LOW); // gate closingdigitalWrite(m12, HIGH);delay(1000);digitalWrite(m11, LOW); // gate closeddigitalWrite(m12, LOW);delay(1000);}else {lcd.setCursor(0,0);lcd.print(" No Movement ");lcd.setCursor(0,1);lcd.print(" Gate Closed ");digitalWrite(m11, LOW);digitalWrite(m12, LOW);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。