Інфрачервоний датчик руху (PIR сенсор)

  1. Теги:
  2. оцінити статтю

Нижче представлена ​​схема датчика руху з використанням Arduino. Як датчик, ми будемо використовувати PIR-сенсор (Passive Infrared sensor), тобто пасивний ІЧ датчик. PIR-сенсори засновані на методиці вимірювання інфрачервоного випромінювання від об'єктів.

PIR-сенсори засновані на методиці вимірювання інфрачервоного випромінювання від об'єктів

Отже, для створення ІК датчика руху нам знадобляться наступні компоненти:
контролер Arduino
макетна плата
1 світлодіод
PIR сенсор фірми Parallax
дроти

Схема підключення датчика руху (PIR) до контролера Arduino найпростіша:

PIR-сенсор має 3 виведення: плюс, мінус і вихід. До 7-му висновку Arduino підключаємо вихід PIR-сенсора. Також, приєднаємо світлодіод до висновку 8 Arduino і GND.

Вихідний код програми взято з офіційного сайту arduino.cc:

cc:

/ * * /////////////////////////////////////////////// /// * // making sense of the Parallax PIR sensor's output * /////////////////////////////////// /////////////// * * Switches a LED according to the state of the sensors output pin. * Determines the beginning and end of continuous motion sequences. * * @Author: Kristian Gohlke / krigoo (_) gmail (_) com / http://krx.at * @date: 3. September 2006 * * kr1 (cleft) 2006 * released under a creative commons "Attribution-NonCommercial -ShareAlike 2.0 "license * http://creativecommons.org/licenses/by-nc-sa/2.0/de/ * * * The Parallax PIR Sensor is an easy to use digital infrared motion sensor module. * (Http://www.parallax.com/detail.asp?product_id=555-28027) * * The sensor's output pin goes to HIGH if motion is present. * However, even if motion is present it goes to LOW from time to time, * which might give the impression no motion is present. * This program deals with this issue by ignoring LOW-phases shorter than a given time, * assuming continuous motion is present during these phases. * * / ///////////////////////////// // VARS // Час калібрування датчика (10-60 сек. По даташіту) int calibrationTime = 30; // the time when the sensor outputs a low impulse long unsigned int lowIn; // the amount of milliseconds the sensor has to be low // before we assume all motion has stopped long unsigned int pause = 5000; boolean lockLow = true; boolean takeLowTime; int pirPin = 7; // вивід підключення PIR сенсора int ledPin = 8; ///////////////////////////// // SETUP void setup () {Serial.begin (9600); pinMode (pirPin, INPUT); pinMode (ledPin, OUTPUT); digitalWrite (pirPin, LOW); // дамо датчику час на калібрування Serial.print ( "calibrating sensor"); for (int i = 0; i <calibrationTime; i ++) {Serial.print ( "."); delay (1000); } Serial.println ( "done"); Serial.println ( "SENSOR ACTIVE"); delay (50); } //////////////////////////// // LOOP void loop () {if (digitalRead (pirPin) == HIGH) {digitalWrite ( ledPin, HIGH); // the led visualizes the sensors output pin state if (lockLow) {// makes sure we wait for a transition to LOW before any further output is made: lockLow = false; Serial.println ( "---"); Serial.print ( "motion detected at"); Serial.print (millis () / 1000); Serial.println ( "sec"); delay (50); } TakeLowTime = true; } If (digitalRead (pirPin) == LOW) {digitalWrite (ledPin, LOW); // the led visualizes the sensors output pin state if (takeLowTime) {lowIn = millis (); // save the time of the transition from high to LOW takeLowTime = false; // make sure this is only done at the start of a LOW phase} // if the sensor is low for more than the given pause, // we assume that no more motion is going to happen if (! LockLow && millis () - lowIn> pause) {// makes sure this block of code is only executed again after // a new motion sequence has been detected lockLow = true; Serial.print ( "motion ended at"); // output Serial.print ((millis () - pause) / 1000); Serial.println ( "sec"); delay (50); }}}

У скетчі Arduino видно, що датчик проводить самодіагностику, а потім переходить в режим відстеження рухів. Коли рух виявлено, то загоряється світлодіод. За Serial Monitor ви можете відстежувати скільки по часу тривало рух.

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

оригінал статті англійською мовою (переклад Колтик А.В. для сайту cxem.net)

оригінал статті

Теги:

винагородити Я зібрав 1 0

x

оцінити статтю

  • Технічна грамотність
  • актуальність матеріалу
  • виклад матеріалу
  • корисність пристрої
  • повторюваність пристрої
  • Орфографія

0

оцінити Скинути

Середній бал статті: 0 Проголосувало: 0 чол.

Asp?

Дополнительная информация

rss
Карта