Рейтинг@Mail.ru

Как подключить датчик RCWL-0516 к Arduino

автор:
Be the first to comment! Arduino
Print Friendly, PDF & Email
RCWL-0516 – это миниатюрный модуль, который представляет собой доплеровский радар. Он позволяет обнаруживать движение в пределах 5-9 метров, причём даже сквозь радиопрозрачные стены (дерево, кирпич). Рассмотрим его в деталях и научимся управлять.

Для проекта нам понадобятся:

1Описание, принцип действия и схема радара RCWL-0516

Датчик представляет собой модуль размером 35.9×17.3 мм и практически плоский, за исключением микросхемы BISS0001 (аналог RCWL-9196) на лицевой стороне и линейного стабилизатора напряжения 7133-1 на обратной. Благодаря линейному стабилизатору модуль можно питать напряжениями от 4 до 27 В, которое подаётся на вывод VIN. Внешний вид модуля приведён на фото.

Верхняя сторона датчика RCWL-0516
Верхняя сторона датчика RCWL-0516

Обратите внимание, что вывод 3V3 – это не вход питания, а выход линейника! На него подавать ничего не нужно. Можно с него брать напряжение 3.3 В (потребители до 30 мА).

Микросхема BISS0001 – это т.н. PIR-контроллер. Аббревиатура PIR происходит от Passive Infra-Red, т.е. пассивный инфракрасный детектор. Дело в том, что изначально микросхема разрабатывалась как контроллер именно для инфракрасных детекторов движения.

Нижняя сторона датчика RCWL-0516
Нижняя сторона датчика RCWL-0516

Датчик RCWL-0516 работает на эффекте Доплера. Напомню, эффект Доплера – это изменение частоты отражённой волны при движении наблюдаемого объекта. Модуль постоянно излучает в пространство радиоволновое излучение определённой частоты (около 3150 МГц). Отражаясь от объекта, волна возвращается и фиксируется датчиком. Если её частота несколько изменилась, значит, объект находится в движении.

В случае обнаружения движения датчик выставляет на выходе OUT логическую единицу (3.3 В). Причём датчик может работать в двух режимах: перезапускаемом (retriggerable) и неперезапускаемом (non-retriggerable).

  • перезапускаемый режим – датчик будет держать на выходе OUT логическую единицу так долго, сколько будет фиксировать движение;
  • неперезапускаемый режим – датчик будет держать на выходе OUT логическую единицу установленное время (от 2 до 300 секунд).

Режим задаётся так. Если на входе "1" микросхемы BISS0001 логическая единица – режим перезапускаемый, если логический ноль – неперезапускаемый. В данном модуле на входе "1" микросхемы 3.3 В, т.е. он работает в перезапускаемом режиме.

Для регулировки времени срабатывания триггера (времени удержания импульса на выходе OUT) служит место для конденсатора C-TM. Без установленного конденсатора время срабатывания триггера – 2 сек. Добавление ёмкости повысит длительность импульса триггера.

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

Для регулировки дальности обнаружения датчика служит место для резистора R-GN. По умолчанию датчик настроен на максимальною дистанцию обнаружения 7…9 м. Добавление резистора сопротивлением 1 МОм снизит дистанцию примерно в 1.5…2 раза.

Вывод CDS соединён с выводом 9 микросхемы BISS0001, который позволяет отключить датчик (активация/деактивация). К этому выводу в параллель (на место CDS в углу платы на лицевой стороне модуля) можно подключить фоторезистор, который будет включать датчик только в тёмное время суток. А пока освещения достаточно, его сопротивление маленькое, и радиоизлучатель будет выключен. С помощью резистора на месте R-CDS можно регулировать порог срабатывания фоторезистора. Если же просто «посадить» выход CDS на землю, то датчик будет неактивен.

В приложении к статье можно скачать принципиальную схему и описание детектора RCWL-0516. Они сделаны для более ранней модификации данного модуля, но практически идентичны, за исключением нескольких деталей. Так, например, на схемах отсутствует линейный стабилизатор напряжения на входе питания. Но в измерительной части всё соответствует рассматриваемому устройству.

В документации приведена рекомендация по размещению датчика RCWL-0516. Датчик крепится на потолке помещения на высоте не более 7 метров.

Пример размещения датчика RCWL-0516 внутри помещения
Пример размещения датчика RCWL-0516 внутри помещения

Буквой L обозначен радиус действия радара. Естественно, это всё довольно условно, т.к. диаграмма направленности планарной антенны (а это именно тот тип антенны, который применяется у нас в датчике) несколько сложнее, чем полусфера, и она излучает в разных направлениях с разной мощностью. Но главная идея в том, чтобы обзор датчика был как можно шире, а перпендикуляр, проведённый из центра датчика, был направлен в центр области, которую необходимо контролировать.

2Подключение и работа радара RCWL-0516

Сначала проверим работоспособность датчика RCWL-0516 без Arduino. Для индикации подключим к выходу OUT датчика светодиод. Когда датчик будет детектировать движение, на выходе OUT будет появляться напряжение 3.3 В, и светодиод будет загораться.

Схема подключения датчика RCWL-0516
Схема подключения датчика RCWL-0516

А вот так это выглядит вживую:

Вывод срабатывания датчика RCWL-0516 на светодиод
Вывод срабатывания датчика RCWL-0516 на светодиод

Очевидно, что для чтения показаний датчика RCWL-0516 с помощью Arduino, достаточно прочитать логический уровень на любом входе. Например, будем использовать аналоговый вход A0. Но просто прочитать значение – слишком простая задача. Давайте будем передавать информацию о срабатывании датчика по радиоканалу на удалённое устройство. В роли удалённого устройства также будет Arduino. Радиоканал устроим с помощью уже известной нам пары XY-MK-5V и FS1000A (вот здесь и здесь).

Передатчик будет выглядеть так:

Передатчик показаний датчика RCWL-0516 на Arduino и FS1000A
Передатчик показаний датчика RCWL-0516 на Arduino и FS1000A

Здесь данные с выхода OUT датчика RCWL-0516 поступают на аналоговый вход A0 Arduino. А выход TX (D0) последовательного порта Arduino идёт на ножку DATA передатчика. Питается и датчик движения, и передатчик напряжением с выхода 5V Arduino.

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

Допустим, когда датчик RCWL-0516 в состоянии ожидания, мы будем передавать по радио число 0xF0, а когда датчик фиксирует движение, будем передавать 0x0F. Когда датчик зафиксирует движение, также будем зажигать встроенный светодиод Arduino. Таким образом, скетч передатчика будет такой:

Скетч передатчика показаний датчика RCWL-0516 (разворачивается)
  void setup() {
  Serial.begin(9600);  
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int val = analogRead(A0);
  if (val > 500){ // фиксация движения, на выходе HIGH
     Serial.write(0x0F);
     digitalWrite(LED_BUILTIN, HIGH);
  } 
  else { // нет движения
    Serial.write(0xF0);
    digitalWrite(LED_BUILTIN, LOW);
  }
}
    

Давайте сначала подключим приёмник к компьютеру с помощью преобразователя UART-USB и посмотрим, что вообще мы принимаем из радиоэфира (см. статью для подробностей).

Данные, принимаемые из радиоэфира
Данные, принимаемые из радиоэфира

Видно, что в целом мы видим то, что и хотим увидеть: числа 0x0f и 0xf0. Но встречаются и искажения информации, вызванные шумами радиоэфира, от которых придётся избавляться. Самый простой способ – брать несколько соседних значений. И если они все равны ожидаемому, то считаем это за срабатывание. Поэтому скетч для приёмника будет несколько сложнее.

Продолжение следует...

Last modified onВторник, 09 Январь 2024 19:29 Read 10486 times
Ключевые слова: :

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email

Leave a comment