Наверняка вы в своей жизни неоднократно уже видели автоматически открывающиеся двери, например, в торговых центрах или других коммерческих зданиях. Эти двери автоматически открываются когда кто-нибудь к ним подходит и закрываются спустя некоторое время. Для реализации этой функции можно использовать различные устройства, например, инфракрасный детектор движения (PIR sensor), радар, лазерный датчик и т.д. В нашем проекте мы будем использовать инфракрасный детектор движения.
Принцип работы инфракрасного детектора движения (PIR sensor) основан на обнаружении инфракрасной энергии (тепловой), излучаемой человеческим телом. Когда кто-нибудь подходит к двери, инфракрасный детектор движения обнаруживает изменение инфракрасной энергии и дает сигнал Arduino на открытие двери.
Необходимые компоненты
- Плата Arduino UNO (купить на AliExpress).
- ЖК дисплей 16x2 (купить на AliExpress).
- Инфракрасный детектор движения (PIR sensor) (купить на AliExpress).
- Драйвер двигателей L293D (купить на AliExpress).
- Бокс для CD или DVD дисков.
- Резистор 1 кОм (купить на AliExpress).
- Источник питания.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Инфракрасный детектор движения
Инфракрасный детектор движения обнаруживает любые изменения тепловой энергии и всегда, когда он это обнаруживает, он устанавливает на своем выходном контакте (output PIN) высокий уровень (HIGH). Подобные детекторы также еще называют пироэлектрическими датчиками.
Необходимо отметить, что любой объект при нагревании излучает некоторое количество инфракрасной тепловой энергии. И человек в этом плане не исключение – его тело также излучает эту энергию из-за того что нагрето. Инфракрасный детектор движения обнаруживает даже небольшие изменения в инфракрасной тепловой энергии. Даже когда какой то объект перемещается вблизи данного детектора он все равно генерирует инфракрасную тепловую энергию из-за трения с воздухом – и детектор может обнаружить это.
Основным компонентом инфракрасного детектора движения является пироэлектрический датчик, показанный на нижеприведенном рисунке – прямоугольный кристалл под пластиковой крышкой. Также детектор содержит микросхему BISS0001, которая обрабатывает сигнал с пироэлектрического датчика и формирует соответственно на выходном контакте напряжение высокого (HIGH) или низкого (LOW) уровня, несколько резисторов, конденсаторов и других компонентов.
Пироэлектрический датчик разделен на две половины – когда нет никакого движения, обе половины находятся в одинаковом состоянии, то есть каждая из них улавливает одинаковое количество инфракрасной тепловой энергии. Когда кто-нибудь (человек, к примеру) оказывается в поле зрения первой половины, инфракрасный уровень первой половины становится больше чем второй, соответственно, датчик реагирует на это изменением уровня на своем выходном контакте.
Пироэлектрический датчик накрыт пластиковой крышкой, которая состоит из массива линз Френеля. Эти линзы изогнуты таким образом, чтобы поле действия датчика было как можно шире.
Работа схемы
Схема устройства представлена на следующем рисунке.
Инфракрасный детектор движения (PIR sensor) предназначен для обнаружения движений людей и имеет 3 контакта: Vcc, GND и Dout. Контакт Dout подсоединен к контакту 14 (A0) платы Arduino UNO. ЖК дисплей 16x2 используется для отображения статуса (открыта или закрыта дверь). Контакты RS и EN ЖК дисплея подсоединены к контактам 13 и 12 Arduino, а контакты данных ЖК дисплея D4-D7 подсоединены к контактам 11, 10, 9, 8 Arduino. Контакт RW ЖК дисплея замкнут на землю. Драйвер двигателей L293D подсоединен к контактам 0 и 1 Arduino и используется для управления открытием и закрытием двери.
Исходный код программы
В нашем устройстве мы используем только цифровые входы и выходы Arduino. Функция DigitalRead используется для считывания состояния выходного контакта инфракрасного детектора движения.
После этого если инфракрасный детектор движения обнаруживает какое либо движение дается соответствующая команда на открытие двери, закрытие двери или остановку двери.
Далее приведен полный текст программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include <LiquidCrystal.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // контакты, к которым подключен ЖК дисплей #define PIR_sensor 14 #define m11 0 #define m12 1 void 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); // открытие двери digitalWrite(m12, LOW); delay(1000); digitalWrite(m11, LOW); // остановка двери digitalWrite(m12, LOW); delay(1000); lcd.clear(); lcd.print(" Gate Closed "); digitalWrite(m11, LOW); // закрытие двери digitalWrite(m12, HIGH); delay(1000); digitalWrite(m11, LOW); // дверь закрыта digitalWrite(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); } } |