Нижче представлена схема датчика руху з використанням Arduino. Як датчик, ми будемо використовувати PIR-сенсор (Passive Infrared sensor), тобто пасивний ІЧ датчик. PIR-сенсори засновані на методиці вимірювання інфрачервоного випромінювання від об'єктів.
Отже, для створення ІК датчика руху нам знадобляться наступні компоненти:
контролер Arduino
макетна плата
1 світлодіод
PIR сенсор фірми Parallax
дроти
Схема підключення датчика руху (PIR) до контролера Arduino найпростіша:
PIR-сенсор має 3 виведення: плюс, мінус і вихід. До 7-му висновку Arduino підключаємо вихід PIR-сенсора. Також, приєднаємо світлодіод до висновку 8 Arduino і GND.
Вихідний код програми взято з офіційного сайту arduino.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?