В этом уроке мы будем использовать датчик обнаружения движения 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); }
Получилось примерно так:
На этом всё. Хороших вам работающих проектов.