Подключение pir датчика к ардуино

Содержание

Подключение датчиков DHT11 и DHT22 к Arduino

Подключение pir датчика к ардуино

При подключение датчиков DHT11 и DHT22  к  Arduino Uno использовалась стандартная  библиотека DHT.h, входящая в Arduino IDE. Все схемы проверялись на Windows 7. Библиотеку LiquidCrystal_I2C.h можно скачать из архива.

Вывод показаний на Монитор  последовательного порта

Собираем схему согласно приведённому рисунку:

Схема подключение датчика DHT11 к Arduino Uno

Внимание! Из-за большого разнообразия модулей разных производителей, на рисунке приведено подключение модуля с датчиком DHT11, продающегося в магазине.
После сборки схемы  соединяем плату Arduino Uno к компьютеру кабелем USB и запускаем среду разработки Arduino IDE. Копируем нижеприведённый код в окно программы.

/* ********************************* * Интернет-магазин Arduinka.Pro * ********************************* Вывод значений влажности и температуры на Монитор порта с датчика DHT11 или DHT22 */ #include «DHT.h» // подключаем библиотеку #define DHTPIN 2 // номер пина, к которому подсоединен датчик // Раскомментировать нужную строку #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); // Инициализация сенсора DHT void setup() { Serial.begin(9600); Serial.println(«DHTxx test!»); Serial.println(«———————————————-«); dht.begin(); } void loop() { // задержка 1,5 секунды между измерениями delay(1500); float h = dht.readHumidity(); // cчитывание влажности float t = dht.readTemperature(); // cчитывание температуры // проверка NaN (вывод цифровых значений) if (isnan(h) || isnan(t)) { Serial.println(«Data error!»); } else { Serial.print («Humidity: «); Serial.print (h); Serial.print («%\t»); Serial.print («Temperature: «); Serial.print (t); Serial.println (» *C»); } }

  *********************************  * Интернет-магазин Arduinka.Pro *  *********************************Вывод значений влажности и температуры на Монитор порта с датчика DHT11 или DHT22#include «DHT.h»  // подключаем библиотеку#define DHTPIN 2 // номер пина, к которому подсоединен датчик// Раскомментировать нужную строку#define DHTTYPE DHT11   // DHT 11 //#define DHTTYPE DHT22   // DHT 22  (AM2302)//#define DHTTYPE DHT21   // DHT 21 (AM2301)DHT dht(DHTPIN, DHTTYPE);     // Инициализация сенсора DHTSerial.println(«DHTxx test!»); Serial.println(«———————————————-«); // задержка 1,5 секунды между измерениямиfloat h = dht.readHumidity();    // cчитывание влажностиfloat t = dht.readTemperature();     // cчитывание температуры// проверка NaN (вывод цифровых значений) if (isnan(h) || isnan(t)) {Serial.println(«Data error!»);Serial.print («Humidity: «);Serial.print («Temperature: «);

И загружаем скетч клавишами Ctrl+U  или кнопкой Загрузка на Arduino IDE.

Загрузка скетча DHT11 в Arduino

После завершения загрузки в память микроконтроллера начнёт выполнятся программа считывания данных с датчика. Для просмотра значений нужно запустить Монитор порта из меню Инструменты.

Вывод значений DHT11 на монитор порта

Вывод показаний на экран дисплея LCD 1602 I²C

Дополняем первую схему  символьным дисплеем LCD 1602 с управлением по шине I²C:

Подключение датчика DHT11 к Arduino Uno и вывод данных на LCD дисплей

После сборки и подключения схемы загружаем новый скетч:

/* ********************************* * Интернет-магазин Arduinka.Pro * ********************************* Вывод значений влажности и температуры на LCD 1602 I2C с датчика DHT11 или DHT22 */ // подключение библиотек #include #include #include «DHT.h» // назначение PIN и выбор типа датчика DHT #define DHTPIN 2 // // раскомментировать нужную строку #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); // инициализация сенсора DHT LiquidCrystal_I2C lcd(0x27,16,2); // инициализация дисплея byte symb_grad[8] = // кодирование символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; void setup() { lcd.init(); // инициализация lcd lcd.createChar(1, symb_grad); // регистрируем собственный символ с кодом 1 Serial.begin(9600); // запуск передачи данных dht.begin(); // запуск датчика DHT } void loop() { // добавляем паузы в 2 секунды между измерениями delay(2000); float h = dht.readHumidity(); // считывание влажности float t = dht.readTemperature(); // считывание температуры // Выводим показания влажности и температуры lcd.clear(); // очистка экрана lcd.setCursor(0, 0); // установка курсора в начало 1 строки lcd.print(«Humidity: %»); // вывод текста lcd.setCursor(10, 0); // установка курсора на 10 позицию lcd.print(h, 1); // вывод на экран значения влажности lcd.setCursor(0, 1); // установка курсора в начало 2 строки lcd.print(«Temperat: C»); // вывод текста lcd.setCursor(14, 1); // установка курсора на 14 позицию lcd.print(«\1»); // вывод символа градуса lcd.setCursor(10, 1); // установка курсора на 10 позицию lcd.print(t,1); // вывод значения температуры }

  *********************************  * Интернет-магазин Arduinka.Pro *  *********************************Вывод значений влажности и температуры на LCD 1602 I2C с датчика DHT11 или DHT22#include // назначение PIN и выбор типа датчика DHT// раскомментировать нужную строку#define DHTTYPE DHT11 // DHT 11//#define DHTTYPE DHT22 // DHT 22 (AM2302)//#define DHTTYPE DHT21 // DHT 21 (AM2301)DHT dht(DHTPIN, DHTTYPE);   // инициализация сенсора DHTLiquidCrystal_I2C lcd(0x27,16,2);  // инициализация дисплеяbyte symb_grad[8] =      // кодирование символа градусаlcd.init();  // инициализация lcdlcd.createChar(1, symb_grad);  // регистрируем собственный символ с кодом 1Serial.begin(9600);   // запуск передачи данныхdht.begin();  //  запуск датчика DHT// добавляем паузы в 2 секунды между измерениямиfloat h = dht.readHumidity();   // считывание влажностиfloat t = dht.readTemperature();   // считывание температуры// Выводим показания влажности и температурыlcd.clear();  // очистка экранаlcd.setCursor(0, 0);  //  установка курсора в начало 1 строкиlcd.print(«Humidity:      %»);  // вывод текстаlcd.setCursor(10, 0);  // установка курсора на 10 позициюlcd.print(h, 1);  // вывод на экран значения влажностиlcd.setCursor(0, 1);  // установка курсора в начало 2 строкиlcd.print(«Temperat:      C»);  // вывод текстаlcd.setCursor(14, 1);  // установка курсора на 14 позицию lcd.print(«\1»);   // вывод символа градусаlcd.setCursor(10, 1);  // установка курсора на 10 позициюlcd.print(t,1);  // вывод значения температуры

Теперь значения влажности и температуры будут отображаться на дисплее.

При составлении схем были использованы компоненты:

Источник: https://arduinka.pro/blog/podklyuchenie/podklyuchenie-datchikov-dht11-dht22-k-arduino/

Схема системы безопасности на базе Arduino с использованием датчика движения PIR

Подключение pir датчика к ардуино

PIR-датчики широко применяются в беспроводных домашних охранных и иных системах безопасности в качестве детектора движения. Типичный PIR-датчик обнаруживает инфракрасные (ИК) волны исходящие от человеческого тела, и поэтому он также известен как «датчик присутствия».

Было бы замечательно, если бы мы подключили PIR датчик к Arduino, чтобы получить дешевую систему безопасности дома, не так ли?

Как использовать интерфейс PIR Wireless Motion Sensor с Arduino?

Ранее мы приводили некоторые схемы безопасности для дома, построенные на дискретных компонентах. Сегодня же рассмотрим схему с применением Arduino и PIR датчика присутствия. Мы приведем принципиальную схему устройства, рассмотрим подключение PIR -датчика к Arduino и разберем скетч.

Наша домашняя система безопасности обнаруживает движение человека и включает свет и звуковой сигнал.

Здесь в демонстрационных целях использован светодиод. Этот проект можно расширить для использования совместно с автоматическими дверями, систем автоматизации, для автоматической подсветка пола, подвала, веранды, ванной комнаты, склада, гаража и т. д.

Компоненты, необходимые для простой системы домашней безопасности

  • Arduino UNO
  • USB-кабель
  • Датчик PIR
  • Зуммер на 5В
  • Светодиод

Как работает датчик движения PIR

Датчик PIR имеет 2 окна, которые чувствительны к ИК-излучению. Когда датчик находится в режиме ожидания, оба окна обнаруживают одинаковое количество ИК-излучения.

В то время как объект, излучающий инфракрасные волны (тело человека или животного) перемещается в зоне чувствительности PIR датчика, одно из окон датчика получает больше ИК излучения, что вызывает положительное дифференциальное изменение между двумя окнами.

Через некоторое время объект покидает зону второго окна, в результате чего происходит обратный эффект, вызывающий отрицательное дифференциальное изменение. Эти импульсы и могут быть обнаружены.

У PIR датчика есть три контакта: GND, OUTPUT и VCC. Питание датчика осуществляется постоянным напряжением от 5 до 20 В. При обнаружении движения на выходе датчика (OUTPUT) появляется высокое состояние. Время задержки выходного сигнала может быть отрегулировано от 0,3 до 5 минут, это означает, что в случае обнаружения какого-либо движения выход будет высоким в течение установленного времени.

Переставляя перемычку на плате можно выбрать один из двух режимов работы датчика: с перезапуском и без перезапуска.

  • С перезапуском – при движении на выходе происходит переключение с высокого состояния на низкое.
  • Без перезапуска – на выходе всегда будет высокое состояние  пока есть движение.

Зона охвата датчика: до 120 градусов на расстоянии до 7 метров.

Три контакта GND, OUTPUT и VCC датчика PIR подключены к цифровым контактам Arduino (2, 3 и 4), а контакты 5, 6 используются для подключения зуммера и светодиода, которые будут активны при обнаружении движения.

[slh lang=»php»]const int LEDPin = 6; // вывод для светодиодаconst int PIRgnd = 2; // GND для датчика PIRconst int inputPin = 3; // входной контакт для датчика PIRconst int PIRvcc = 4; // VCC для датчика PIRconst int BUZZERpin = 5; // вывод для зуммераvoid setup (){pinMode (LEDPin, OUTPUT); // объявляем LEDpin как выходpinMode (BUZZERpin, OUTPUT); // объявляем BUZZERpin как выходpinMode (PIRgnd, OUTPUT); // объявлять вывод GND как выходpinMode (inputPin, INPUT); // объявлять inputPin как выходpinMode (PIRvcc, OUTPUT); // объявлять вывод PIRvcc как выходdigitalWrite (PIRgnd, LOW);digitalWrite (PIRvcc, HIGH);

}

void loop (){int val = digitalRead (inputPin); // чтение входного значенияif (val == HIGH) // проверить, является ли вход HIGH{digitalWrite (LEDPin, HIGH); // включить светодиод, если обнаружено движениеdigitalWrite (BUZZERpin, HIGH); // включить зуммер, если обнаружено движениеdelay (500);digitalWrite (LEDPin, LOW); // выключить светодиодdigitalWrite (BUZZERpin, LOW); // выключить зуммер}

} [/slh]Скетч достаточно прост. Устанавливаем 3-й контакт Arduino как вход, так как этот вывод используется для подключения выхода инфракрасного датчика. Другие контакты зададим как выход. Контакт 2 установлен в положение LOW, а контакт 4 — HIGH, который дает GND и VCC для датчика PIR.

Функция «loop ()» является бесконечным циклом, она непрерывно считывает значения с выхода PIR и проверяет, является ли уровень сигнала НИЗКИЙ или ВЫСОКИЙ. Если он высокий, то на 500 миллисекунд включается светодиод и зуммер.

Если мы хотим при входе включить свет или вентилятор, то подключите контакты 5, 6 к реле через транзистор.

www.circuitsgallery.com

Источник: http://fornk.ru/3403-sxema-sistemy-bezopasnosti-na-baze-arduino-s-ispolzovaniem-datchika-dvizheniya-pir/

Обзор инфракрасного датчика движения HC-SR501 – RobotChip

Подключение pir датчика к ардуино

В этой статье расскажу как работать с датчиком HC-SR501 (PIR сенсор). Датчик является недорогим и универсальным, его можно использовать как отдельно или со вместо с микрокомпьютером для создание различных проектах (системах охранной сигнализации или автоматизированных системах освещения)

Общие сведения 

Любой человек или животное с температурой выше нуля испускает тепловую энергию в виде излучения. Это излучение не видно человеческому глазу, потому что оно излучается на инфракрасных волн, ниже спектра, который люди могут видеть. Измерение этой энергии, не то же самое, что измерять температуру. Так как температура зависит от теплопроводности, поэтому, когда человек входит в комнату, он не может мгновенно изменить температуру в помещении. Однако есть уникальная инфракрасное излучение из-за температуры тела и которую ищет PIR датчик.

Принцип работы инфракрасного датчика движения HC-SR501 прост, при включении, датчик настраивается на «Нормальную» инфракрасное излучение в пределах своей зоны обнаружения. Затем он ищет изменения, например человек прошел или переместился в пределах контролируемой зоны. Для определения инфракрасного излечение детектор использует пироэлектрический датчик. Это устройство, которое генерирует электрический ток в ответ на прием инфракрасного излучения. Поскольку датчик не излучает сигнал (например, ранее упомянутый ультразвуковой датчик), его наказывают «пассивным».

 Когда обнаружено изменение, датчик HC-SR501 изменяет выходной сигнал.

Для повышения чувствительности и эффективности датчика HC-SR501 используется метод фокусировки инфракрасного излечения на устройство, достигается, это с помощью «Линзы Френеля». Линза выполнен из пластика и выполнена в виде купола и фактически состоит из нескольких небольших линз Френеля. Хоть пластик и полупрозрачен для человека, но на самом деле полностью прозрачен для инфракрасного света, поэтому он также служит в качестве фильтра.

HC-SR501 — недорогой датчик PIR, который полностью автономный, способный работать сам по себе или в сопряжении с микроконтроллером. Датчик имеет регулировку чувствительности, которая позволяет определять движение от 3 до 7 метров, а его выход можно настроить так, чтобы он оставался высоким в течение времени от 3 секунд до 5 минут. Так же, датчике имеет встроенный стабилизатор напряжения, поэтому он может питаться от постоянного напряжения от 4,5 до 20 вольт и потребляет небольшое количество тока. HC-SR501 имеет 3-контактный разъем, назначение следующие:

Назначение выводов
► VCC — положительное напряжение постоянного тока от 4,5 до 20 В постоянного тока.
► OUTPUT — логический выход на 3,3 вольта. LOW не указывает на обнаружение, HIGH означает, что кто-то был обнаружен.
GND — заземление.

На плате также установлены два потенциометра для настройки нескольких параметров:
►  SENSITIVITY — устанавливает максимальное и минимальное расстояние (от 3 метров до 7 метров).
►  TIME (ВРЕМЯ) — время, в течение которого выход будет оставаться HIGH после обнаружения. Как минимум, 3 секунды, максимум 300 секунд или 5 минут.

Назначение перемычек:
►  H — это настройка Hold или Repeat. В этом положении HC-SR501 будет продолжать выдавать сигнал HIGH, пока он продолжает обнаруживать движение.
►  — Это параметр прерывания или без повтора. В этом положении выход будет оставаться HIGH в течение периода, установленного настройкой потенциометра TIME.

На плате HC-SR501 имеются дополнительные отверстия для двух компонентов, рядом расположена маркировка, посмотреть на нее можно сняв линзу Френеля.

Назначение дополнительных отверстий:
►  RT — это предназначено для термистора или чувствительного к температуре резистора. Добавление этого позволяет использовать HC-SR501 в экстремальных температурах, а также в некоторой степени повышает точность работы детектора.
►  RL — это соединение для светозависимого резистора или фоторезистора. Добавляя компонент, HC-SR501 будет работать только в темноте, что является общим приложением для чувствительных к движению систем освещения.

Читайте также  7010b магнитола подключение камеры заднего вида

Пример №1: HC-SR501 как самостоятельное устройство.

Необходимые детали:
Датчика движения HC-SR501 x 1 шт.
► Модуль реле (1-но канальный) x 1 шт.
► Транзистор 2SC1213 x 1 шт.
► Лампа на 220V (75W) с патроном x 1 шт.
Источник питания на 5V x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.

Подключение:
При включение HC-SR501 требуется калибровка, занимает от 30 до 60 секунд, так-же датчик имеет период «перезагрузки» около 6 секунд (после срабатывания), за это время он не реагирует на движения.

 В этом примере используем HC-SR501 и  модуль реле (1-но канальный), а так же NPN транзистор (в примере используется 2SC1213).  Питание датчика HC-SR501 осуществляется от 5 В, поскольку, это же питание требуется и реле, а в качестве нагрузки используется лампа на 220В.

Так-как выходной сигнал HC-SR501 слабый (на практике хватает только чтобы зажечь светодиод), один из вариантов, можно применить любой биполярный NPN транзистор.

Внимание! Соблюдайте технику безопасность и будьте аккуратно!

Работа этой схемы очень проста, после включения и калибровка, датчик начинает считывать показания. При обнаружении движения, датчик меняет значение на выводе «OUT».

Пример №2: HC-SR501 добавление фоторезистора

Необходимые детали:
Датчика движения HC-SR501 x 1 шт.
► Модуль реле (1-но канальный) x 1 шт.
► Транзистор 2SC1213 x 1 шт.
► Лампа на 220V (75W) с патроном x 1 шт.
Источник питания на 5V x 1 шт.
Фоторезистор  x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.

Подключение:
В следующим примере используем туже схему, что и примере №1, только добавили фоторезистор. Место для установки фоторезистора расположено рядом с выходным разъемом, обозначение на плате как «RL». Можно припаять напрямую на плату или воспользоватся штыревым разъемом, для удобного подключения Dupont провода. Главное, чтобы фоторезистор не был закрыт от естественного освещения комнаты, а так же был защищен от света лампы, которую используем как нагрузку. На рисунке ниже показано, куда устанавливать фоторезистор.

Как только установили фоторезистор, включите схему и немного подождите, пока датчик HC-SR501 от калибруется. Если все правильно подключено (и в помещении включен свет), ничего не произойдет, фоторезистор предотвращает запуск HC-SR501 при освещенной комнаты. Теперь выключим свет и HC-SR501 будет запускаться всякий раз, когда он замечает активность.

Пример №3: HC-SR501 и Arduino

Необходимые детали:
► 
Arduino UNO R3 x 1 шт.
Датчика движения HC-SR501 x 1 шт.
► Светодиоды 5 мм x 3 шт.
► Резистор 0,125W, 320Om x 3 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.

Подключение:
Хотя датчик HC-SR501 и самостоятельное устройство, его можно подключить к выводу микроконтроллера. В примере используем контроллер Arduino UNO R3, в котором можем учесть время включения и период сброса.

Таким образом, устройство может быть более точным, так как вы не будете пытаться воспринимать движение вперед, когда датчик не готов. Так же, можно подключить несколько датчиков HC-SR501 к Arduino, что позволит  позволит отслеживать движение в разных местах.

В следующем примере, мы подключим один HC-SR501 к Arduino в качестве индикации воспользуемся тремя светодиодами, каждый из который отображения состояния датчика :

  • Красный светодиод — этот светодиод указывает, что датчик не готов.
  • Желтый светодиод — этот светодиод указывает, что датчик готов к обнаружению движения.
  • Зеленый светодиод — этот светодиод горит в течение 3 секунд при срабатывании датчика.  Вместо светодиода, можно управлять внешним выходом (например, модулем реле, который мы использовали ранее).

Схема подключения:

Перемычка на HC-SR501 необходимо установить в положение «L», а так-же необходимо установить время на минимум (5 секунд), для этого поверните потенциометр в лева до упора. Теперь, когда вы все подключились, необходимо загрузить скетч.

/* Тестировалось на Arduino IDE 1.8.0Дата тестирования 12.08.2016г.*/ int detectedLED = 13; // Указываем пинint readyLED = 12; // Указываем пинint waitLED = 11; // Указываем пин int pirPin = 7; // Указываем пин датчика int motionDetected = 0; // Переменная для обнаружения движенияint pirValue; // Переменная для сохранения значения из PIR void setup() { pinMode(detectedLED, OUTPUT); // Установка пин как выход pinMode(readyLED, OUTPUT); // Установка пин как выход pinMode(waitLED, OUTPUT); // Установка пин как выход pinMode(pirPin, INPUT); // Установка пин как вход // Начальная задержка 1 минута, для стабилизации датчика// digitalWrite(detectedLED, LOW); digitalWrite(readyLED, LOW); digitalWrite(waitLED, HIGH); delay(60000); digitalWrite(readyLED, HIGH); digitalWrite(waitLED, LOW);} void loop() { pirValue = digitalRead(pirPin); // Считываем значение от датчика движения if (pirValue == 1) // Если движение есть, делаем задержку в 3 с. { digitalWrite(detectedLED, HIGH); motionDetected = 1; delay(3000); } else { digitalWrite(detectedLED, LOW); } // Задержка после срабатывания // if (motionDetected == 1) { digitalWrite(detectedLED, LOW); digitalWrite(readyLED, LOW); digitalWrite(waitLED, HIGH); delay(6000); digitalWrite(readyLED, HIGH); digitalWrite(waitLED, LOW); motionDetected = 0; }}

Тестировалось на Arduino IDE 1.8.0Дата тестирования 12.08.2016г.int detectedLED = 13;                // Указываем пинint readyLED = 12;                   // Указываем пинint waitLED = 11;                    // Указываем пинint pirPin = 7;                      // Указываем пин датчика int motionDetected = 0;              // Переменная для обнаружения движенияint pirValue;                        // Переменная для сохранения значения из PIR  pinMode(detectedLED, OUTPUT);      // Установка пин как выход  pinMode(readyLED, OUTPUT);         // Установка пин как выход  pinMode(waitLED, OUTPUT);          // Установка пин как выход  pinMode(pirPin, INPUT);            // Установка пин как вход// Начальная задержка 1 минута, для стабилизации датчика//   digitalWrite(detectedLED, LOW);  digitalWrite(readyLED, LOW);  digitalWrite(waitLED, HIGH);  digitalWrite(readyLED, HIGH);  digitalWrite(waitLED, LOW);  pirValue = digitalRead(pirPin);    // Считываем значение от датчика движения  if (pirValue == 1)                 // Если движение есть, делаем задержку в 3 с.    digitalWrite(detectedLED, HIGH);    digitalWrite(detectedLED, LOW);// Задержка после срабатывания //    digitalWrite(detectedLED, LOW);    digitalWrite(readyLED, LOW);    digitalWrite(waitLED, HIGH);    digitalWrite(readyLED, HIGH);    digitalWrite(waitLED, LOW);

  Скачать скетч

Загружаем данный скетч в контроллер Arduino. При включении загорится красный светодиод, который сигнализирует о подготовке датчика (горит 1 минуту). По истечении минуты загорится желтый светодиод , а красный погаснет, это означает что, датчик готов к обнаружению движения. Как только датчик обнаружит движение движение, загорится зеленый светодиод, который будет светится в течение трех секунд.

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Инфракрасный датчик движения HC-SR501

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Инфракрасный датчик движения HC-SR501

Источник: https://robotchip.ru/obzor-infrakrasnogo-datchika-dvizheniya-hc-sr501/

Датчик движения своими руками на Arduino | Каталог самоделок

Подключение pir датчика к ардуино

Вспомним, что основа данного проекта Arduino. Он выполняет ряд важнейших функций: считывает данные с ИК-датчика, обрабатывает сигналы, реагирует на движения, а USB оповещает компьютер о необходимости отправить сообщение. В этой статье рассмотрим два вопроса:

  1. Подключение  PIR-датчика к Arduino;
  2. Как настроить взаимосвязь между датчиком и автоматической отправкой e-mail.

Необходимо для проекта:

  • Arduino UNO (выбрать можно на Aliexpress).
  • PIR-датчик .
  • Бредбоард.
  • Связка проводов.

Все перечисленные элементы для сборки можно увидеть на фотографиях:

В первую очередь нужен ПК с подключением к интернету. Мы  использовали Raspberry Pi.

Подключаем PIR-датчик к набору Arduino:

Чтобы осуществить этот этап нужно взять провода, которые идут от датчика, и прикрепить их к платформе. Далее вам будет предоставлена фотография со схемой:

Работа со скетчем

При возникновении движения Arduino при помощи  USB Serial должен послать электронное сообщение. Конечно же, если при любом возникшем движении отправлять  e-mail, то почтовый ящик будет переполнен. Поэтому мы исправили это таким образом, если между двумя сигналами короткий промежуток времени, будет отправляться письмо с таким текстом:

int pirPin = 7;int minSecsBetweenEmails = 60; // 1 minlong lastSend = -minSecsBetweenEmails * 1000;void setup(){pinMode(pirPin, INPUT);Serial.begin(9600);}void loop(){long now = millis();if (digitalRead(pirPin) == HIGH){if (now > (lastSend + minSecsBetweenEmails * 1000)){Serial.println(«MOVEMENT»); lastSend = now;}else{Serial.println(«Too soon»); }}delay(500);}

«MinSecsBetweenEmails» – эта переменная может переключаться на другие значения, которые будут удобны пользователю. К примеру, можно установить интервал, который равен одной минуте – это будет означать, что следующий  e-mail будет отправлен только через 60 секунд.

«LastSend» поможет отследить время, в которое было отправлено последнее сообщение. Инициализация данной переменной происходит с отрицательным числом, которое равно миллисекундам, что указаны в «MinSecsBetweenEmails». В итоге, мы получаем гарантию того, что после запуска скетча в Arduino сразу же запустится PIR-датчик.

За счет чего мы можем высчитать миллисекунды, сравнить их число со временем последнего срабатывания датчика? Все благодаря встроенной функции под названием Millis. В том случае, если обнаружено движение, но прошло  мало времени с последнего активизации датчика будет отправлено письма с текстом «Too soon».

Эту функцию сначала надо проверить. Для этого открывается Serial Monitor. Далее рассмотрим, как он выглядит:

После того, как вы убеждены в исправной работе, можно записывать программу на Python, его используют для обрабатывания сигналов от платформы.

Как установить PySerial и Python:

Операционная система Linux имеет автоматически установленный Python. Система Windows не обладает такой характеристикой, поэтому программу необходимо установить самостоятельно. PySerial исполняет роль библиотеки, она поможет поддерживать связываться с Arduino.

Установка Python:

Python 3 нередко вызывает затруднения при работе с PySerial, особенно если вы используете Windows. Чтобы этого избежать, можно вместо третьей версии скачать Python 2.

Завершив установку программы в меню «Пуск» можно обнаружить особую группу. Когда мы перейдем к процессу установки библиотеки, нам понадобится сотрудничество с Python, применив командную строку. Поэтому лучше сразу добавить к PATH нужный каталог. Далее можно увидеть вспомогательную фотографию:

Для добавления каталога нам потребуется: открыть панель управления, в ней найти раздел «System Properties». Потом нажимаем клавишу, которая называется «Переменная среда» (Environment Variabes), перед нами всплывет окно. В его нижней части должен находиться «Path», который нужно выбрать.

Теперь кликнем на «Edit» – Изменение и завершаем процесс нажатием «значения переменной». Нельзя удалять текст, который получили, к нему следует дописать такую надпись – «;C:\Python27». Не забываем после каждой папки, что указана в тексте ставить «;». Теперь проверяем правильно ли осуществлен ввод «Path». Для этого в командную строку вводим слово «python».

Если ошибок не возникло, то на экране появится следующая картинка:

Установить  PySerial:

Независимо от используемой операционной системы, скачиваем .tar.gz установочный пакет для PySerial 2.6 с . Этот сайт может помочь это сделать – //pypi.python.org/pypi/pyserial. Получаем файл с именем pyserial-2.6.tar.gz. Если используется Windows, то будет нужна распаковка файлов в выбранную папку.

Это не стандартный файл формата ZIP, придется сделать дополнительные действия – скачать 7-zip (это можно сделать здесь – //www.7-zip.org/). Для системы Linux необходимо воспользоваться терминальной сессией, в ней дать команду «CD», указать название той папки, в которую скачали  pyserial-2.6.tar.gz.

Чтобы выполнить распаковку нужно ввести:

$ tar -xzf pyserial-2.6.tar.gz

После этого потребуется выполнить команду:

sudo python setup.py install

Python

Потребуется создать отдельную программу для работы с Python. Нужно скопировать код в файл с таким именем – «movement.py». В Linux можно использовать «нано» редактор, а для системы  Windows необходимо создать файл, используя редактор Python «IDLE ». Он доступен в меню «Пуск».

import timeimport serialimport smtplibTO = '[email protected]'GMAIL_USER = '[email protected]'GMAIL_PASS = 'putyourpasswordhere'SUBJECT = 'Intrusion!!'TEXT = 'Your PIR sensor detected movement'ser = serial.Serial('COM4', 9600)def send_email():print(«Sending Email»)smtpserver = smtplib.SMTP(«smtp.gmail.com»,587)smtpserver.ehlo() smtpserver.starttls()smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS)header = 'To:' + TO + '' + 'From: ' + GMAIL_USERheader = header + '' + 'Subject:' + SUBJECT + ''print headermsg = header + '' + TEXT + ' \'smtpserver.sendmail(GMAIL_USER, TO, msg)smtpserver.close()while True:message = ser.readline()print(message)if message[0] == 'M' :send_email()time.sleep(0.5)

Это показано на следующей картинке:

После изменений, программа запуститься при помощи командной строки:

python movement.py

Итак, установка завершена.

На этом возможности не заканчиваются, есть расширения, которые позволяют получать сообщения с отчетами о температуре или других сведениях.

Прикрепленные файлы: Скетчи и коды.  

 Доронин Виталий, Липецк.

Источник: https://volt-index.ru/electronika-dlya-nachinayushih/datchik-dvizheniya-svoimi-rukami-na-arduino.html

Оптические датчики для Arduino

Подключение pir датчика к ардуино

Оптические датчики для платформы Ардуино. Типы, описание, характеристики. Подключение и испытание. Механические датчики были рассмотрены тут.

Модуль фоторезистора KY-018

Данный модуль представляет собой делитель напряжения, состоящий из фоторезистора и постоянного резистора сопротивлением 10 кОм [1-3]

Модуль имеет габаритный размер 30 x 14 мм и массу 1,2 г. Для подключения служит трехконтактный разъем. Центральный контакт – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 270 мкА.

При изменении освещенности происходит изменение сопротивления фоторезистора, что приводит к изменению уровня напряжения на сигнальном выводе модуля.

Если загрузить в Arduino программу AnalogInput2, то в мониторе последовательного порта среды разработки Arduino IDE можно наблюдать, как меняются показания, снимаемые с аналогового входа платы Arduino.

Модуль легко сделать глазом робота или датчиком освещенности умного дома.

Модуль инфракрасного светодиода KY-005 [4-5]

Модуль представляет собой инфракрасный светодиод без каких-либо дополнительных элементов, добавочного сопротивления на плате нет.

Модуль имеет габариты 35 х 15 мм и масса 1,3 г. Как понимает автор, подключение данного светодиода ничем не отличается от подключения обычного светодиода видимого диапазона. Центральный контакт модуля ни к чему не подключен, контакт «-» — общий, контакт «S» — информационный. Последовательно со светодиодом автор включал резистор сопротивлением 200 Ом, при этом ток, потребляемый светодиодом, составил 17 мА. Излучение данного светодиода глазом заметить невозможно.

При помощи матрицы фотоаппарата можно зарегистрировать излучение светодиода, для этого желательно установить чувствительность не меньше 800 ISO, отключить вспышку, максимально открыть диафрагму фотоаппарата и минимизировать окружающую засветку.

Модуль ИК приемника KY-022

Модуль приемника инфракрасного излучения имеет габариты 24 х 15 мм и массу 1,6 г и представляет собой печатную плату на которой располагается сам приемный модуль и красный светодиод с добавочным сопротивлением [6-7].

Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 200 мкА в режиме ожидания, 500 мкА с работающим светодиодом.

Читайте также  Как подключить модуль сопряжения к видеодомофону?

В момент приема инфракрасного сигнала светодиод на плате мигает, что достаточно удобно при отладке конструкций на макетной плате.

Для полноценного использования ИК-приемника можно воспользоваться библиотекой IRremote [8-10]. Для примера иллюстрирующего работу данного устройства можно использовать программу IR. В качестве источника сигналов можно использовать пульт дистанционного управления от телевизора.

Коды сигналов пульта телевизора

Аналогично модуль может принимать сигналы от пульта дистанционного управления светодиодной лампой.

При помощи этого датчика не сложно организовать многокомандное дистанционное управление в пределах прямой видимости, при расстоянии между приемником и передатчиком около 3-5 м.

Фотопрерыватель KY-010

В проектировании устройств с подвижными деталями может оказаться важным подсчитывать число оборотов или факт достижение деталью определенного положения. Подобное можно реализовать с помощью механических концевых выключателей или герконов, но эти элементы имеют механические подвижные части, а значит, будут со временем изнашиваться, залипать и т.п. Для аналогичных целей можно использовать оптопару KY-010 [11], которая не имеет подвижных частей, а поэтому более надежна.

Модуль фотопрерывателя имеет габариты 24 х 15 мм и массу 1,2 г

Данное устройство представляет собой инфракрасный светодиод с токограничительным резистором. Светодиод освещает фототранзистор, с коллектора которого и снимается полезный сигнал. Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 10 мА.

Модуль надежно срабатывает, будучи подключенным, вместо тактовой кнопки с программой LED_with_button [12].

Модуль датчика пульса KY-039

Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фототранзистор. Теоретически опираясь на изменения прозрачности подушечки пальца данный модуль должен позволить определить частоту пульса [13-14].

Габаритные размеры модуля составляют 24 х 15 х 15 мм, масса1,4 г. Модуль имеет три контакта: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 10 мА.

Как понимает автор, светодиод должен быть направлен на фототранзистор

По всей видимости, добиться адекватной работы от данного модуля непросто [15].

Впрочем, как оптопара он работает неплохо. Если загрузить в память микроконтроллера программу AnalogInput2, то можно наблюдать, что модуль надежно реагирует на пересечение инфракрасного луча. Впрочем, заметных колебаний показаний, которые можно связать с биением пульса, автор не зарегистрировал. В принципе показания изменяются однотипно, в не зависимости от того, что перекрывает поле зрения фототранзистора: подушечка пальца, мочка уха, лист бумаги, линейка.

Добиться работоспособности с демонстрационным кодом то же не получилось [16]. Таким образом, получается, что данный модуль это обычная оптопара, хотя, разумеется, автор может ошибаться.

Модуль ИК датчика линии KY-033

Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фотоприемник [17-18]. По интенсивности отраженного инфракрасного сигнала модуль позволяет отличить черную поверхность от белой, что важно в классической задаче робототехники – изготовлении робота, движущегося вдоль линии.

Модуль имеет габариты 47 х 10 х 12 мм, масса 2,1 г. Для крепления модуля на плате предусмотрено два отверстия диаметром 3 мм на расстоянии 11 мм друг от друга. На плате располагаются инфракрасный светодиод и фотоприемник, разделенные непрозрачной перегородкой. Для регулирования чувствительности датчика на плате имеется подстроечный резистор. При срабатывании датчика зажигается красный светодиод.

Полезное:  Паяльная станция Т12: схема, сборка, инструкция

Подстроечный резистор позволяет регулировать расстояние срабатывания от 25 до12 мм, считая от поверхности платы.

На модуле имеется трех контактный разъем: центральный «V+»– питание +5В, контакт «G» — общий, контакт «S» — информационный. В зависимости от интенсивности отраженного сигнала на информационном выходе меняется напряжение, что можно пронаблюдать, подключив модуль к порту A0 платы Arduino UNO (в память микроконтроллера загружена программа AnalogInput2).

Потребляемый модулем ток составляет около 15 мА, зажигание красного светодиода на плате датчика приводит к увеличению энергопотребления примерно на 1 мА.

В целом модуль оставляет приятное впечатление в сравнении с функционально аналогичным модулем от компании Амперка [19-20]. При меньшей цене этот модуль можно закрепить более надежно, подстроечный резистор удобнее регулировать, правда аналоговый датчик линии от компании Амперка заметно компактнее.

Модуль ИК дальномера KY-032

Модуль предназначен для обнаружения препятствий без непосредственного контакта с ними. На печатной плате модуля располагается ИК-светодиод и ИК-фотоприемник, когда интенсивность отраженного от препятствия излучения превышает заданный порог, формируется сигнал срабатывания датчика.

Модуль имеет размер 45 х 16 х 12 мм, массу 4 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. На плате имеется четырехконтактный разъем, через который осуществляется питание модуля и передача информации. Назначение выводов разъема следующее: «GND» — общий провод, «+»– питание +5В, «OUT» — информационный выход, «EN» — управление режимом работы. Для индикации подачи питания на датчик служит светодиод «Pled», при срабатывании загорается светодиод «Sled».

На информационном цифровом выходе «OUT» появляется низкий логический уровень, если в поле зрения датчика имеется препятствие, иначе на выходе высокий логический уровень. В этом можно убедиться, загрузив в память Arduino UNO программу AnalogInput2, тогда при срабатывании датчика в мониторе последовательного порта программы Arduino IDE будет наблюдаться следующая картина.

По данным продавцов [21-22], датчик может обнаруживать препятствия на расстоянии от 2 до 40 см. Автору настоящего обзора удалось добиться срабатывания датчика на расстоянии 5,5-3,5 см от белого препятствия (лист бумаги). Черную шероховатую поверхность (бокс CD-дисков) датчик не видит совсем, черную глянцевую поверхность датчик регистрирует расстояния около 2 см.

Согласно документации, для настройки частоты модуляции ИК-импульсов на частоту 38 кГц служит подстроечный резистор промаркированный 103, а для регулирования чувствительности датчика следует использовать подстроечный резистор промаркированный 507. как хорошо видно на предыдущих фотографиях на плате доставшейся автору оба переменных резистора имеют маркировку 103. Возможно это брак в данном конкретном устройстве. Может быть этим и объясняется малая дальность действия датчика.

Датчик потребляет ток 4-5 мА в рабочем режиме и 5-6 мА при срабатывании. Если настроить датчик на минимально расстояние срабатывания, то можно немного уменьшить ток потребления (примерно на 1 мА). На данной фотографии, также видно, сто при срабатывании датчика загорелся светодиод «Sled».

По описанию этого датчика вывод «EN» служит для управления режимом работы при снятой перемычке. При низком логическом уровне на входе «EN» датчик включен, при высоком логическом уровне модуль дальномера находится в спящем режиме с пониженным энергопотреблением.

Однако по наблюдениям автора при снятой перемычке, когда выход «EN» был ни к чему не подключен, потребляемый ток возрастал до 13,5 мА, при этом датчик переставал реагировать на препятствие.

При надетой перемычке подача на «EN» низкого логического уровня (от гнезда «GND» платы Arduino UNO) привела к скачу потребления тока до 150 мА. При подаче на «EN» высокого логического уровня (от гнезда 3,3 В платы Arduino UNO) и снятой перемычке датчик работает как обычно.

В общем, в этом режиме датчик вел себя как-то странно, хотя возможно дело в ошибках методики эксперимента, которые допустил автора настоящего обзора или в браке данного экземпляра датчика.

Таким образом, с одно стороны датчик можно использовать по назначению, однако по факту этот датчик не превосходит более простые ИК-датчики расстояния [23]

Модуль датчика инфракрасного излучения KY-026 [24-25]

Этот датчик предназначен для обнаружения мощных источников инфракрасного излучения, например открытого пламени.

Датчик имеет габариты 47 х 15 х 15 мм, массу 3 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. Чувствительным элементом датчика является ИК-фотодиод. Регулировать чувствительность датчика можно многооборотным подстроечным резистором. Индикация питания осуществляется светодиодом L1.

При срабатывании датчика загорается светодиод L2. Датчик имеет четыре контакта. «A0» — аналоговый выход, выходное напряжение на котором меняется в зависимости от освещенности фотодиода (в память Arduino UNO была загружена программа AnalogInput2).

Выводы питания «G» — общий провод, «+»– питание +5В. На цифровом входе «D0» присутствует низкий логический уровень, если ИК-излучение не превышает заданного порога, при срабатывании датчика низкий уровень меняется на высокий.

Датчик уверенно реагирует на излучение лампы накаливания мощностью 40 Вт с расстояния около 0,5 м. На зажженную спичку датчик реагирует с расстояния около 10 см.

В дежурном режиме датчик потребляет около 5 мА, при срабатывании ток возрастает до 8-9 мА

В целом это достаточно простой и надежный датчик, однако если его использовать, как рекомендуют продавцы, в устройстве, типа автоматики контроля поджига и подачи топлива или в роботе-пожарном, то необходимо как следует продумать защиту датчика от воздействия открытого пламени.

Литература

  1. http://arduino-kit.ru/catalog/id/modul-fotorezistora
  2. http://www.zi-zi.ru/module/module-ky018
  3. http://robocraft.ru/blog/arduino/68.html
  4. https://arduino-kit.ru/catalog/id/modul-ik-svetodioda
  5. http://www.zi-zi.ru/light/module-ky-005
  6. http://arduino-kit.ru/catalog/id/modul-ik-priemnika
  7. http://www.zi-zi.ru/module/module-ky022
  8. http://cxem.net/arduino/arduino127.php
  9. http://роботехника18.

    рф/ик-приемник-ардуино-подключение/

  10. http://robotclass.ru/tutorials/arduino-ir-remote-control/
  11. http://www.zi-zi.ru/module/module-ky-010
  12. http://robocraft.ru/blog/arduino/57.html
  13. http://arduino-kit.ru/catalog/id/modul-datchika-pulsa-_ik_
  14. http://www.zi-zi.ru/module/module-ky039
  15. http://forum.amperka.ru/threads/Датчик-пульса-подключение.6490/
  16. https://tkkrlab.nl/wiki/Arduino_KY-039_Detect_the_heartbeat_module
  17. http://arduino-kit.

    ru/catalog/id/modul-datchika-linii

  18. http://www.zi-zi.ru/module/modul-ky-033
  19. http://amperka.ru/product/analog-line-sensor
  20. http://2shemi.ru/analogovyj-datchik-linii/
  21. http://arduino-kit.ru/catalog/id/modul-dalnomera
  22. http://www.zi-zi.ru/module/modul-ky-032
  23. http://2shemi.ru/infrakrasnyj-datchik-prepyatstviya/
  24. http://arduino-kit.ru/catalog/id/modul-datchika-ognya
  25. http://www.zi-zi.

    ru/module/modul-ky-026

Файлы и прошивки в общем архиве. Обзор прислал в редакцию сайта «2 Схемы» — Denev.

Источник: https://2shemi.ru/opticheskie-datchiki-dlya-arduino/

Подключение PIR датчика движения к плате Ардуино (Arduino) — схема и пошаговая инструкция, проверка работы системы

Подключение pir датчика к ардуино

Время чтения: 5 минут(ы)

Датчики движения набирают популярность в Российской Федерации. Если вы хотите обезопасить себя от неудачной покупки, при этом, желаете получить качественный товар, ознакомьтесь с программным обеспечением Arduino. Программа улучшит датчик, увеличит функциональность и качество работы. Устройство в совокупности с программой станут для вас настоящим открытием, как с точки зрения функциональности, так и с точки зрения эффективности.

Что из себя представляют стандартный датчик движения HC-SR501?

Такой аппарат позволяет защитить дом, офис или предприятие от вторжения непрошенных гостей, будь то животное или человек.

Зачем нужен и где используется?

Инфракрасные датчики являются помощниками на случай, если сами владельцы дома или помещения вышли на улицу, и остались без источников освещения. Реагируя на движение, датчик самостоятельно включит свет, и вы не будете находиться в кромешной тьме.

Аппарат может располагаться в частном доме, в квартире, в отелях, гостиницах, промышленных предприятиях, офисах, учреждениях, и даже на улицах. Главное, это не отклоняться от инструкции по установке.

Технические характеристики

Технические характеристики такого аппарата напрямую зависят от модели. Однако, компания Arduino здесь не стала экспериментировать, и все модели похожи по параметрам, лишь немного отличаясь по мощности. Рассмотрим стандартные показатели средней статистической модели.

  • Напряжение питания 220 вольт.
  • Напряжение при выходе 3.3 вольты.
  • Расстояние обнаружения от 3 до 7 м, настраивается индивидуально.
  • Угол обнаружения варьируется в зависимости от места размещения от 120 до 140 градусов.
  • Импульс подается с длительностью от 5 до 200 секунд. Среднее значение настраивается.
  • Наступающее время блокировки до следующего замера 3 секунды.
  • Рабочая температура от — 20 до + 50 градусов, что позволяет размещать такой аппарат в уличных условиях. Работает в двух режимах одиночного захвата и повторяемого захвата.

Как работает: устройство и принцип действия

Принцип действия такого инфракрасного аппарата строится на подаче инфракрасных лучей.

  1. После запуска аппарата включается генератор инфракрасных лучей.
  2. Они сканируют поверхность на предмет подвижных объектов.

  3. Как только в зоне действия устройства появляется человек, животное или посторонний предмет, который создает помеху для инфракрасного луча, аппарат начинает подавать соответствующий световой сигнал.

Но необязательно, чтобы в зоне работы оказался именно объект.

Это может быть проезжающая мимо машина или падающая листва деревьев. В таком случае хозяева будут тревожиться чаще, поэтому нужно тщательно подумать о месте установки.

Именно инфракрасный прибор считается наиболее точным. Ведь другие виды аппаратуры реагируют только на изменение температуры в радиусе зоны действия, а значит, выхлопные газы от проезжающих мимо автомобилей или горячий воздух от кондиционера могли сбить устройство с толку.

С инфракрасным датчиком, подключенным к Arduino такое не пройдет.

Подключение датчика движения к Arduino

Поговорим о том, что же такое Arduino и как оно может функционировать с обычным датчиком. Arduino — это программа, которая ориентирована на непрофессиональных компьютерщиков. Это программная оболочка, которая позволяет написать ПО и совместить его с действием аппарата.

Получается, что вы своими собственными руками задаете алгоритм, на основании которого будет функционировать ваше устройство.

Инфракрасные датчики рекомендуют подключать к Arduino только потому, что вы будете получать только актуальную информацию о том, были ли осуществлены проникновения на вашу территорию или нет. Знакомство с такой программой тоже не создает никаких особых сложностей.

Чтобы устройство заработало, необходимо подключить сам датчик Arduino. Помимо двух приборов у вас должны быть еще в комплекте и соответствующие провода. Проверьте, чтобы комплект был полон. Чтобы соединить микроконтроллер необходимо найти три вывода.

Подключать их к Arduino следует по следующей схеме: справа, слева, с внешней стороны.

Сам цифровой выход от датчика должен генерировать высокий уровень сигнала при срабатывании. В компьютере вы должны написать простую программу, которая будет отправлять вам последовательный порт 1, если датчик уловил какие-либо движения в радиусе своего действия. Если же движения не было, то отправляться будет 0.

Затем нужно загрузить эту программу на Arduino и проверить работу датчика.

Необязательно писать программу самостоятельно, ее вполне можно найти и скачать в интернете на тематических сайтах. Также вы должны настроить датчик по вашим требованиям и просмотреть, как это может отразиться на его работе.

Перезапуск

  1. Откройте компьютер.
  2. Скачайте файл Arduino только с официального сайта.
  3. После этого, откройте скачанное приложение.
  4. Вы увидите краткое пособие по использованию. Обязательно прочтите его.

  5. Дополнительно параллельно в другой вкладке откройте урок, который рассказывает о том, как совместить работу датчика движения и подобного программного обеспечения.
  6. Начинайте писать программу, задавая простые числовые значения.
  7. Для этого вам потребуется программный блокнот.

  8. Также, вы можете осуществлять написание программы напрямую в окне Arduino.

  9. После того, как программа была написана, вы можете осуществить подключение.
  10. После этого следует действие по перепроверке.

  11. После того, как подключение и настройка были осуществлены, необходимо произвести перезапуск. Для этого нужно отключить датчик и Arduino от сети электропитания, выключить компьютер. Затем запустите все эти устройства одновременно.
  12. Теперь необходимо, чтобы в радиусе действия датчика появился предмет, который станет помехой.

Если программа напишет единицу, то значит, настройка произошла верно, и перезапуск показал, что все заданные вами настройки сохранены.

Если аппарат не улавливает движение, более того, никаким образом не реагирует на инородный предмет, значит произвести все действия необходимо заново.

Чувствительность

Также необходимо произвести настройки чувствительности. Сделать это можно при подключении компьютера, или с помощью ручной настройки, если у вас более продвинутая модель датчика.

Если вы настроите максимальную чувствительность, то датчик будет реагировать даже на веяние ветра.

Это не в ваших интересах, так как это будет дезинформировать вас от действительности. В такой ситуации вам нужно настроить средний показатель чувствительности. Он будет оптимален для обнаружения.

Время импульса

Время импульса тоже очень важная настройка. Она показывает, как быстро датчик будет реагировать на появившийся инородный объект. Минимальная длительность времени 5 секунд, максимальная 200.

Выбирайте ту величину, которая соответствует вашим ожиданиям от работы устройства.

Рекомендуется взять величину в 10-15 секунд. Так датчик точно определит, инородный предмет в зоне действия, или же это изменения погодных условий. Вас не будут тревожить понапрасну.

В москве

  1. ООО Диодус, светодиодное освещение и датчики движения, 1812 Года ул., 12, Москва, 121127, 8 (495) 741-46-60.
  2. B.E.G. Датчики Движения/Присутствия, Светильники с Датчиками, Малая Ордынка ул., 39, стр. 1, Москва, 115184, 8 (499) 236-10-67.
  3. Сенсор, Волгоградский пр., 42 корпус 5, Москва, 109548, 8 (495) 256-80-19.

В санкт-петербурге

  1. SmS sensor, Выборгская наб., 29, 510, Санкт-Петербург, 194044, 8 (800) 250-65-54.
  2. Датчик движения Steinel Малая Бронная ул., 37, 115184 8 (499) 237-28-68,
  3. Промситех. ул. Книпович, 9, Санкт-Петербург, 192019, 8 (812) 702-65-90

Arduino достаточно известная торговая марка, которая предоставляет аппаратные и программные средства для построения самых простых систем робототехники и так далее. В том числе, она взаимодействует с датчиками. Arduino это незаменимый помощник в случае, если вы приобрели инфракрасный датчик, и мечтаете, чтобы он фиксировал все вторжения на вашу территорию.

Кстати говоря, лучше всего Arduino функционирует именно с инфракрасными аппаратами. Надеемся, что вам будет легко разобраться в этой системе. Тем более, что в интернете масса уроков и пособий по тому, как настроить аппаратуру на базе этой программы.

Вам помогла эта статья? Будем благодарны за оценку:

Источник: https://vidsyst.ru/datchik/datchik-dvizheniya/arduino.html

Пироэлектрический инфракрасный (PIR) датчик движения и Arduino

Подключение pir датчика к ардуино

PIR (пассивные инфракрасные датчики) сенсоры позволяют улавливать движение.

Очень часто используются в системах сигнализации. Эти датчики малые по габаритам, недорогие, потребляют мало энергии, легки в эксплуатации, практически не подвержены износу. Кроме PIR, подобные датчики называют пироэлектрическими и инфракрасными датчиками движения.

Пирлоэлектрический датчик движения — общая информация

ПИР датчики движения по сути состоят из пироэлектрического чувствительного элемента (цилиндрическая деталь с прямоугольным кристаллом в центре), который улавливает уровень инфракрасного излучения. Все вокруг излучает небольшой уровень радиации. Чем больше температура, тем выше уровень излучения.

Датчик фактически разделен на две части. Это обусловлено тем, что нам важен не уровень излучения, а непосредственно наличие движение в пределах его зоны чувствительности.

Две части датчика установлены таким образом, что если одна половина улавливает больший уровень излучения, чем другая, выходной сигнал будет генерировать значение high или low.

Сам модуль, на котором установлен датчик движения, состоит также из дополнительной электрической обвязки: предохранители, резисторы и конденсаторы. В большинстве недорогих пир-датчиков используются недорогие чипы BISS0001 («Micro Power PIR Motion Detector IC»). Этот чип воспринимает внешний источник излучения и проводит минимальную обработку сигнала для его преобразования из аналогового в цифровой вид.

Одна из базовых моделей пироэлектрических датчиков подобного класса выглядит так:

Более новые модели PIR-датчиков имеют дополнительные выходы для дополнительной настройки и установленные коннекторы для сигнала, питания и земли:

ПИР датчики отлично подходят для проектов, в которых необходимо определять наличие или отсутствие человека в пределах определенного рабочего пространства. Помимо перечисленных выше достоинство подобных датчиков, они имеют большую зону чувствительности. Однако учтите, что пироэлектрические датчики не предоставят вам информации о том, сколько человек вокруг и насколько близко они находятся к датчику. Кроме того, сработать они могут и на домашних питомцев.

Общая техническая информация

Эти технические характеристики относятся к PIR датчикам, которые продаются в магазине Adafruit. Принцип работы аналогичных датчиков похожий, хотя технические характеристики могут отличаться. Так что прежде чем работать с ПИР-датчиком, ознакомьтесь с его даташитом.

  • Форма: Прямоугольник;
  • Цена: около 10.00 долларов в магазине Adafruit;
  • Выходной сигнал: цифровой импульс high (3 В) при наличии движения и цифровой сигнал low, когда движения нет. Длина импульса зависит от резисторов и конденсаторов на самом модуле и разная в различных датчиках;
  • Диапазон чувствительности: до 6 метров. Угол обзора 110° x 70°;
  • Питание: 3В — 9В, но наилучший вариант — 5 вольт;
  • BIS0001 (даташит);
  • RE200B (даташит);
  • NL11NH (даташит);
  • Parallax (даташит).

Ссылки для заказа оборудования, которое используется в статье в дальнейшем из Китая

>Для заказа с Aliexpress:

Принцип работы пироэлектрических (PIR) датчиков движения

PIR датчики не такие простые как может показаться на первый взгляд. Основная причина — большое количество переменных, которые влияют на его входной и выходной сигналы. Чтобы объяснить основы работы ПИР датчиков, мы используем рисунок, приведенный ниже.

Пироэлектрический датчик движения состоит из двух основных частей. Каждая из частей включает в себя специальный материал, чувствительный к инфракрасному излучению. В данном случае линзы особо не влияют на работу датчика, так что мы видим два участка чувствительности всего модуля. Когда датчик находится в состоянии покоя, оба сенсора определяют одинаковое количество излучения.

Например, это может быть излучение помещения или окружающей среды на улице. Когда теплокровный объект (человек или животное), проходит мимо, он пересекает зону чувствительности первого сенсора, в результате чего  на модуле ПИР датчика генерируются два различных значения излучения. Когда человек покидает зону чувствительности первого сенсора, значения выравниваются.

Именно изменения в показаниях двух датчиков регистрируются и генерируют импульсы HIGH или LOW на выходе.

Конструкция PIR датчика

Чувствительные элементы ПИР датчика устанавливается в металлический герметический корпус, который защищает от внешних шумов, перепадов температур и влажности. Прямоугольник в центре сделан из материала, который пропускает инфракрасное излучение (обычно это материал на основе силикона). За этой пластиной устанавливаются два чувствительных элемента.

Рисунок из даташита Murata:

Рисунок из даташита RE200B:

На рисунке из даташита RE200B видно два чувствительных элемента:

На рисунке выше приведена внутренняя схема подключения.

Линзы

Инфракрасные датчики движения практически одинаковые по своей структуре. Основные отличия — чувствительность, которая зависит от качестве чувствительных элементов. При этом значительную роль играет оптика.

На рисунке выше приведен пример линзы из пластика. Это значит, что диапазон чувствительности датчика представляет из себя два прямоугольника. Но, как правило, нам нужно обеспечить большие углы обзора. Для этого можно использовать линзы, подобные тем, которые используются в фотоаппаратах. При этом линза для датчика движения должна быть маленькая, тонкая и изготавливаться из пластика, хотя он и добавляет шумы в измерения. Поэтому в большинстве PIR датчиков используются линзы Френеля (рисунок из Sensors Magazine):

Линзы Френеля концентрируют излучение, значительно расширяя диапазон чувствительности пиродатчиков (рисунок с BHlens.com)

Рисунок из Cypress appnote 2105:

Теперь у нас есть значительно больший диапазон чувствительности. При этом мы помним, что у нас два чувствительных элемента и нам нужны не столько два больших прямоугольника, сколько большое количество маленьких зон чувствительности. Для этого линза разделяется на несколько секций, каждая из которых представляет из себя отдельную линзу Френеля.

На рисунке ниже можно увидеть отдельные секции — линзы Френеля:

На этом макроснимке обратите внимание, что фактура отдельных линз отличается:

В результате формируется целый набор чувствительных участков, которые взаимодействуют между собой.

Рисунки из даташита NL11NH:

Ниже еще один рисунко. Более яркий, но менее информативный. Кроме того, обратите внимание, что у большинства датчиков угол обзора составляет 110 градусов, а не 90.

Рисунок из IR-TEC:

Подключение PIR датчика движения

Большинство модулей с инфракрасными датчиками движения имеют три коннектора на задней части. Распиновка может отличаться, так что прежде чем подключать, проверьте ее! Обычно рядом с коннекторами сделаны соответсвующие надписи. Один коннектор идет к земле, второй выдает интересующий нас сигнал с сенсоров, третий — земля. Напряжение питания обычно составляет 3-5 вольт, постоянный ток. Однако иногда встречаются датчики с напряжением питания 12 вольт. В некоторых больших датчиках отдельного пина сигнала нет. Вместо этого используется реле с землей, питанием и двумя переключателями.

Для прототипа вашего устройства с использованием инфракрасного датчика движения, удобно использовать монтажную плату, так как большинство данных модулей имеют три коннектора, расстояние между которыми рассчитано именно под отверстия макетки.

В нашем случае красный кабель соответсвует питанию, черный — земле, а желтый — сигналу. Если вы подключите кабели неправильно, датчик не выйдет из строя, но работать не будет.

Тестирование PIR датчика движения

Соберите схему в соответсвии с рисунком выше. В результате, когда PIR датчик обнаружит движение, на выходе сгенерируется сигнал HIGH, который соответсвует 3.3 В и светодиод загорится.

При этом учтите, что пироэлектрический датчик должен 'стабилизироваться'. Установите батарейки и подождите 30-60 секунд. На протяжении этого времени светодиод может мигать. Подождите, пока мигание закончится и можно начинать махать руками и ходить вокруг датчика, наблюдая за тем, как светодиод зажигается!

Настройка перезапуска датчика

У пироэлектрического датчика движения есть несколько настоек. Первой мы рассмотрим 'перезапуск'.

После подключения, посмотрите на заднюю поверхность модуля. Коннекторы должны быть установлены в левом верхнем углу L, как это показано на рисунке ниже.

Обратите внимание, что при таком варианте подключения, светодиод не горит постоянно, а включается-выключается, когда вы двигаетесь возле него. Это опция 'без перезапуска' (non-retriggering).

Теперь установите коннектор в позицию H. После тестирования окажется, что светодиод горит постоянно, если кто-то движется в пределах зоны чувствительности датчика. Это режим 'перезапуск'.

Рисунок ниже из даташита датчика BISS0001:

Для большинства случаев режим 'перезапуск' (коннектор в позиции H кк это показано на рисунке ниже) лучше.

Настраиваем чувствительность

На многих инфракрасных датчиках движения, в том числе и у компании Adafruit, установлен небольшой потенциометр для настройки чувствительности. Вращение потентенциометра по часовой стрелке добавляет чувствительность датчику.

Изменение времени импульса и времени между импульсами

Когда мы рассматривает PIR датчики, важны два промежутка времени 'задержки'. Первый отрезок времени -Tx: как долго горит светодиод после обнаружения движения. На многих пироэлектрических модулях это время регулируется встроенным потенциометром. Второй отрезок времени — Ti: как долго светодиод гарантированно не загорится, когда движения не было. Изменять этот параметр не так просто, для этого может понадобится паяльник.

Давайте взглянем на даташит BISS:

На датчиках от Adafruit есть потенциометр, отмеченный как TIME. Это переменный резистор с сопротивлением 1 мегаом, который добавлен к резисторам на 10 килоом. Конденсатор C6 имеет емкость 0.01 микрофарат, так что:

Tx = 24576 x (10 кОм + Rtime) x 0.01 мкФ

Когда потенциометр Rtime в 'нулевом' — полностью повернут против часовой стрелки — положении (0 мегаом):

Tx = 24576 x (10 кОм) x 0.01 мкФ = 2.5 секунды (примерно)Когда потенциометр Rtime полностью повернут по часовой стрелке (1мегаом):

Tx = 24576 x (1010 кОм) x 0.01 мкФ = 250 секунд (примерно)

В средней позиции RTime время будет составлять около 120 секунд (две минуты). То есть, если вы хотите отслеживать движение объекта с частотой раз в минуту, поверните потенциометр на 1/4 поворота.

Для более старых/других моделей PIR датчиков

Если на вашем датчике нет потенциометров, можно провести настройку с помощью резисторов.

Нас интересуют резисторы R10 и R9. К сожалению, китайцы умею многое. В том числе и путать надписи. На рисунке выше приведен пример, на котором видно, что перепутаны R9 с R17. Отследить подключение по даташиту. R10 подключен к 3 пину, R9 — к 7 пину.

Например:

Tx is = 24576 * R10 * C6 = ~1.2 секунд

R10 = 4.7K и C6 = 10 нанофарад

и

Ti = 24 * R9 * C7 = ~1.2 секунд

R9 = 470K и C7 = 0.1 микрофарад

Вы можете изменить время задержки установив различные резисторы и конденсаторы.

Подключение PIR датчика движения к Arduino

Напишем программу для считывания значений с пироэлектрического датчика движения. Подключить PIR датчик к микроконтроллеру просто. Датчик выдает цифровой сигнал, так что все, что вам необходимо — считывать с пина Arduino сигнал HIGH (рбнаружено движение) или LOW (движения нет).

При этом не забудьте установить коннектор в позицию H!

Подайте питание 5 вольт на датчик. Землю соежинети с землей. После этого соедините пин сигнала с датчика с цифровым пином на Arduino. В данном примере использован пин 2.

Программа простая. По сути она отслеживает состояние пина 2. А именно: какой на нем сигнал: LOW или HIGH. Кроме того, віводится сообщение, когда состояние пина меняется: есть движение или движения нет.

/*

* проверка PIR датчика движения

*/

int ledPin = 13;  // инициализируем пин для светодиода

int inputPin = 2;  // инициализируем пин для получения сигнала от пироэлектрического датчика движения

int pirState = LOW;  // начинаем работу программы, предполагая, что движения нет

int val = 0;  // переменная для чтения состояния пина

void setup() {

pinMode(ledPin, OUTPUT);  // объявляем светодиод в качестве  OUTPUT

pinMode(inputPin, INPUT);  // объявляем датчик в качестве INPUT

Serial.begin(9600);

}

void loop(){

val = digitalRead(inputPin);  // считываем значение с датчика

if (val == HIGH) {  // проверяем, соответствует ли считанное значение HIGH

digitalWrite(ledPin, HIGH);  // включаем светодиод

if (pirState == LOW) {

// мы только что включили

Serial.println(«Motion detected!»);

// мы выводим на серийный монитор изменение, а не состояние

pirState = HIGH;

}

} else {

digitalWrite(ledPin, LOW); // выключаем светодиод

if (pirState == HIGH){

// мы только что его выключили

Serial.println(«Motion ended!»);

// мы выводим на серийный монитор изменение, а не состояние

pirState = LOW;

}

}

}

Не забудьте, что для работы с пироэлектрическим датчиком не всегда нужен микроконтроллер. Порой можно обойтись и простым реле.

Источник: http://arduino-diy.com/arduino-piroelektricheskiy-infrakrasnyy-PIR-datchik-dvizheniya