Библиотеки Ардуино

Детектор движения Arduino с микроволновым датчиком приближения

В этом уроке мы будем использовать датчик обнаружения движения RCWL-0516 с Arduino и создадим на его основе датчик приближения.

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

Что такое доплеровский радар?

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

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

Микроволновый датчик приближения RCWL-0615

Модуль датчика RCWL-0615 является альтернативой обычным датчикам движения PIR, которые широко используются в охранной сигнализации. В ИК-датчиках используется механизм анализа черного тела, что означает, что он проверяет тепло, выделяемое человеческими телами. RCWL-0516 использует доплеровскую радиолокационную технологию для обнаружения движущихся объектов. Он работает на частоте около 3,2 ГГц и использует чип обработки RCWL-9196.

RCWL-0516 излучает микроволны и анализирует отраженные волны, чтобы проверить наличие каких-либо изменений. Эти датчики могут обнаруживать движущиеся объекты через стены и другие материалы и имеют диапазон чувствительности до 7 метров. Обычно они дешевле и менее подвержены ошибкам. При обнаружении движения выходной контакт (OUT) уровня TTL датчика переключается с НИЗКОГО (0 В) на ВЫСОКОЕ (3,3 В) в течение конечного времени (от 2 до 3 с), а затем возвращается в свое состояние покоя (НИЗКОЕ).

Основные характеристики RCWL-0615

  • Мощность передачи: 20 мВт (минимум) / 30 мВт (максимум)
  • Входное напряжение: 4–28 В постоянного тока
  • Расстояние обнаружения: 5–7 м
  • Частота датчика: ~ 3,2 ГГц

Распиновка RCWL-0615

  • VIN - 4В - 28В DC источник питания
  • CDS - вход отключения датчика (низкий = отключить) (для датчиков LDR)
  • GND - Земля
  • 3volt - выход постоянного тока (максимум 100 мА)
  • OUTPUT — HIGH /LOW(3.3 V)  ВЫХОД - ВЫСОКИЙ / НИЗКИЙ (3.3 В) (в соответствии с обнаружением движения)

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

Комплектующие

Для создания устройства обнаружения движения на основе RCWL-0516 и Arduino нам понадобятся:

  • Arduino Nano
  • Макет
  • Перемычки
  • RCWL-0516 датчик
  • Дисплей LCD 16 X2 I2C
  • Зуммер
  • Светодиод
  • Резистор 220 Ом

Схема соединений

Подключите Arduino к RCWL-0516, символьному ЖК-дисплею, зуммеру и светодиоду, как показано на схеме ниже.

Таблица соединений 1:

Arduino Pin Number
LED 2
Content 3

Таблица соединений 2:

Arduino Analog IO Character LCD
A5 SCL
A4 SDA

Таблица соединений 3:

Arduino Nano RCWL-0516
GND GND
5V VIN
D2 OUT

Вывод 3V3 на RCWL-0516 является выходным выводом. Вывод CDS позволяет вам добавить LDR (светозависимый резистор) к плате, что позволяет работать в режиме низкого энергопотребления, чтобы датчик активировался только в темноте. После подключения перепроверьте соединения, а затем загрузите исходный код (ниже).

Код датчика

Скопировать или скачать код датчика движения Ардуино вы можете ниже:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Sensor = 12;   //Input Pin
int LED = 3;     // Led pin for Indication
int Buzzer =2;
 
int flg = 0;  //Change detection flag
void setup() {
  
  Serial.begin(9600);
    // initialize the LCD
  lcd.begin();
  lcd.clear();
  
  lcd.print("...MAKER.PRO...");
  delay(3000);

  // Turn on the blacklight and print a message.
  lcd.backlight();
  pinMode (Sensor, INPUT);  //Define Pin as input
  pinMode (Buzzer, OUTPUT);    //Led as OUTPUT
  pinMode (LED, OUTPUT);    //Led as OUTPUT
  Serial.println("Waiting for motion");
}
 
void loop() {
  
     int val = digitalRead(Sensor); //Read Pin as input
     
     if((val > 0) && (flg==0))
     {
        digitalWrite(LED, HIGH);
        digitalWrite(Buzzer, HIGH);
        
        lcd.clear();
        Serial.println("Motion Detected");
          lcd.print("Motion Detected");
        flg = 1;
     }
 
     if(val == 0)
     {
        digitalWrite(LED, LOW);
        digitalWrite(Buzzer, LOW);
        lcd.clear();
          Serial.println("NO Motion");
          lcd.print("NO Motion ");
          
        flg = 0;
     }  
     delay(100);
}

Получилось примерно так:

На этом всё. Хороших вам работающих проектов.

/ 26.08.2019

Ардуино+