Датчик движения ардуино
Датчик движения ардуино позволяет отследить перемещение в закрытой зоне объектов, излучающих тепло (люди, животные). Такие системы часто применяют в бытовых условиях, например, для включения освещения в подъезде. В этой статье мы рассмотрим подключение в проектах ардуино PIR-сенсоров: пассивных инфракрасных датчиков или пироэлектрических сенсоров, которые реагируют на движение. Малые габариты, низкая стоимость, простота эксплуатации и отсутствие сложностей в подключении позволяет использовать такие датчики в системах сигнализации разного типа.
Описание датчика движения ардуино
Конструкция ПИР датчика движения не очень сложна – он состоит из пироэлектрического элемента, отличающегося высокой чувствительностью (деталь цилиндрической формы, в центре которой расположен кристалл) к наличию в зоне действия определенного уровня инфракрасного излучения. Чем выше температура объекта, тем больше излучение. Сверху PIR-датчика устанавливается полусфера, разделенная на несколько участков (линз), каждый из которых обеспечивает фокусировку излучения тепловой энергии на различные сегменты датчика движения. Чаще всего в качестве линзы применяют линзу Френеля, которая за счет концентрации теплового излучения позволяет расширить диапазон чувствительности инфракрасного датчика движения Ардуино.
PIR-sensor конструктивно разделен на две половины. Это обусловлено тем, что для устройства сигнализации важно именно наличие движения в зоне чувствительности, а не сам уровень излучения. Поэтому части установлены таким способом, что при улавливании одной большего уровня излучения, на выход будет подаваться сигнал со значением high или low.
Основными техническими характеристиками датчика движения Ардуино являются:
Зона обнаружения движущихся объектов составляет от 0 до 7 метров;
Диапазон угла слежения – 110°;
Напряжение питания – 4.5-6 В;
Рабочий ток – до 0.05 мА;
Температурный режим – от -20° до +50°С;
Регулируемое время задержки от 0.3 до 18 с.
Модуль, на котором установлен инфракрасный датчик движения включает дополнительную электрическую обвязку с предохранителями, резисторами и конденсаторами.
Принцип работы датчика движения на Arduino следующий:
Когда устройство установлено в пустой комнате, доза излучения, получаемая каждым элементом постоянна, как и напряжение;
При появлении в комнате человека, он первым делом попадает в зону обозрения первого элемента, на котором появляется положительный электрический импульс;
Когда человек перемещается по комнате, вместе с ним перемещается и тепловое излучение, которое попадает уже на второй сенсор. Этот PIR-элемент генерирует уже отрицательный импульс;
Разнонаправленные импульсы регистрируются электронной схемой датчика, которая делает вывод, что в поле зрения Pir-sensor Arduino находится человек.
Для надежной защиты от внешних шумов, перепадов температуры и влажности, элементы Pir-датчика на Arduino устанавливаются в герметичный металлический корпус. На верхней части корпуса по центру находится прямоугольник, выполненный из материала, который пропускает инфракрасное излучение (чаще всего на основе силикона). Чувствительные элементы устанавливаются за пластиной.
Схема подключения датчика движения к Ардуино
Схема подключения инфракрасного датчика к Ардуино представлена на рисунке.
Подключение Pir-датчика к Ардуино выполнить не сложно. Чаще всего модули с сенсорами движения оснащены тремя коннекторами на задней части. Распиновка каждого устройства зависит от производителя, но чаще всего возле выходов есть соответствующие надписи. Поэтому, прежде чем выполнить подключение датчика к Arduino необходимо ознакомиться с обозначениями. Один выход идет к земле (GND), второй – обеспечивает выдачу необходимого сигнала с сенсоров (+5В), а третий является цифровым выходом, с которого снимаются данные.
Подключение Pir-сенсора:
«Земля» – на любой из коннекторов GND Arduino;
Цифровой выход – на любой цифровой вход или выход Arduino;
Питание – на +5В на Arduino.
Пример программы
Скетч представляет собой программный код, который помогает проверить работоспособность датчика движения после его включения.
Скетч самого простого типа, который может быть использован в качестве примера работы с датчиком движения на Arduino, выглядит таким образом:
#define PIN_PIR 2
#define PIN_LED 13
void setup() {
Serial.begin(9600);
pinMode(PIN_PIR, INPUT);
pinMode(PIN_LED, OUTPUT);
}
void loop() {
int pirVal = digitalRead(PIN_PIR);
Serial.println(digitalRead(PIN_PIR));
//Если обнаружили движение
if (pirVal) {
digitalWrite(PIN_LED, HIGH);
Serial.println("Motion detected");
delay(2000);
}
else {
//Serial.print("No motion");
digitalWrite(PIN_LED, LOW);
}
}
Возможные варианты проектов с применением датчика
Пир-датчики незаменимы в тех проектах, где главной функцией сигнализации является определение нахождения или отсутствия в пределах определенного рабочего пространства человека. Например, в таких местах или ситуациях, как:
Включение света в подъезде или перед входной дверью автоматически, при появлении в нем человека;
Включение освещения в ванной комнате, туалете, коридоре;
Срабатывание сигнализации при появлении человека, как в помещении, так и на придомовой территории;
Автоматическое подключение камер слежения, которыми часто оснащаются охранные системы.
Пир-сенсоры просты в эксплуатации и не вызывают сложностей при подключении, имеют большую зону чувствительности и также могут быть с успехом интегрированы в любой из программных проектов на Ардуино. Но следует учитывать, что они не имеют технической возможности предоставить информацию о том, сколько объектов находится в зоне действия, и как близко они расположены к датчику, а также могут срабатывать на домашних питомцев.
Датчик газа/дыма MQ-2
Дайте вашему следующему проекту на Arduino нос для возможности обнаружения газов с помощью модуля датчика газа MQ-2. Это надежный датчик газа, подходящий для определения концентрации в воздухе LPG (сжиженного нефтяного газа), дыма, алкоголя, пропана, водорода, метана и угарного газа. Если вы планируете создать систему контроля качества воздуха в помещении, устройство проверки дыхания или систему раннего обнаружения пожара, то модуль датчика газа MQ-2 будет отличным выбором.
Напряжение на аналоговом выходе датчика изменяется пропорционально концентрации дыма/газа. Чем больше концентрация газа, тем выше выходное напряжение; в то время как меньшая концентрация газа приводит к более низкому выходному напряжению. Следующая анимация иллюстрирует взаимосвязь между концентрацией газа и выходным напряжением.
А
налоговый сигнал от датчика газа MQ-2 поступает на высокоточный компаратор LM393 (впаян в нижней стороне модуля) для оцифровки. Рядом с компаратором имеется небольшой потенциометр, который можно покрутить, чтобы отрегулировать чувствительность датчика. Вы можете использовать его для регулировки концентрации газа, при которой датчик его обнаруживает. Поворачивайте потенциометр по часовой стрелке, чтобы увеличить чувствительность, или против часовой стрелки, чтобы уменьшить чувствительность.
Распиновка модуля датчика газа MQ-2 Теперь давайте посмотрим на распиновку.
V
CC обеспечивает питание для модуля. Вы можете подключить его к выходу 5 В вашей платы Arduino.
GND – вывод земли, должен быть подключен к выводу GND на Arduino.
D0 обеспечивает цифровое представление о наличии горючих газов.
A0 обеспечивает аналоговое выходное напряжение, пропорциональное концентрации дыма/газа.
Подключение модуля датчика газа MQ-2 к Arduino UNO
Теперь, когда у нас есть полное представление о том, как работает датчик газа MQ-2, мы можем подключить его к нашей плате Arduino!
Подключить модуль датчика газа MQ-2 к Arduino довольно просто. Начните с установки датчика на макетную плату. Подключите вывод VCC к выводу 5V на Arduino, а вывод GND – к выводу Ground на Arduino.
Подключите выходной вывод D0 на модуле к цифровому выводу 8 на Arduino, а выходной вывод A0 на модуле – к аналоговому выводу 0 на Arduino.
Когда вы закончите, у вас должно получиться что-то похожее на рисунок ниже.
Итак, теперь, когда мы подключили наш датчик газа, пришло время написать код и проверить его.
Код Arduino Код очень прост, и, в основном, он просто читает аналоговое напряжение на выводе A0. При обнаружении дыма он выводит сообщение на мониторе последовательного порта.
#define MQ2pin (0)
float sensorValue; // переменная для хранения значения датчика
void setup() {
Serial.begin(9600); // настроить последовательный порт на скорость 9600 Serial.println("Gas sensor warming up!"); delay(20000); // дать MQ-2 время для прогрева
}
void loop() {
sensorValue = analogRead(MQ2pin); // прочитать аналоговый вход 0 Serial.print("Sensor Value: ");
Serial.print(sensorValue);
if(sensorValue 300) {
Serial.print(" | Smoke detected!");
}
Serial.println(""); delay(2000); // подождать 2 сек до следующего чтения
}