Датчик движения HC-SR501 и Arduino

HC-SR501

Давно я ничего не писал на тему Arduino, но исправляюсь. Сегодня мы поиграемся с датчиком движения HC-SR501. Забегая немного вперёд, скажу, что при правильной настройке он реагирует даже на кошку.

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

Документации на HC-SR501 и схем в сети полно, поэтому подробно расписывать не буду, а перейдём сразу к практике.

Подготовка

Переключим датчик на одиночный импульс, поставив перемычку в положение «L», а затем подключим его к плате Arduino (в примере использовалась Arduino Uno):

  • общий вывод «GND» датчика подключим к выводу «GND» на плате;
  • вывод питания «+Power» датчика подключим к выводу «5V» на плате;
  • выход сигнала «Output» датчика подключим к выводу «A0» на плате (для Arduino Uno это вывод 14).

Подключаем плату к компьютеру и запускаем Arduino IDE. После этого набираем (или копируем отсюда, если вы слишком ленивы) следующий код:

void setup() {
  pinMode(14, INPUT);
  Serial.begin(9600);
}

int analogVal = 0;

void loop() {
  analogVal = analogRead(14);
  Serial.println(analogVal, HEX);
  delay(1000);
}

Датчик HC-SR501 пока лучше направить куда-то в сторону.

Проверка работы датчика

Нажимаем Ctrl+U и загружаем программу в плату. После этого нажимаем Ctrl+Shift+M для просмотра данных в последовательном порту.

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

После этого старайтесь сидеть, не шевелясь, пока не увидите вывод в мониторе нулей. Иногда датчик может выводить небольшие значения в пределах 10, это тоже нормально.

Когда в мониторе увидите несколько нулей подряд, попробуйте сделать движение перед датчиком. Вместо нулей при этом будет выводиться число, соответствующее высокому уровню на выходе датчика. В моём случае значения были около 660 (или 294 в hex). При минимальной длительности сигнала это значение будет выдаваться около 3-4 секунд, а затем 6-7 секунд будет низкий уровень. При этом низкий уровень будет выдаваться независимо от движения перед датчиком, что является недостатком этого режима.

Можно поиграться с длительностью сигнала, а также с чувствительностью, регулируя это расположенными на плате датчика переменными резисторами. При чувствительности чуть выше средней мою тушку массой 80+ килограммов датчик обнаруживал примерно с 4 метров.

При почти максимальной чувствительности датчик уверенно обнаруживал движение кошки массой чуть более 2 килограммов. Это создание по имени Лея крутилось возле меня почти всё время, пока я возился с датчиком. При этом кошка вносила свои коррективы в показания.

Результаты проверки HC-SR501 отображены на скриншоте.

Проверка HC-SR501
Проверка HC-SR501

В следующем материале я покажу, как можно с датчиком HC-SR501 автоматизировать управление освещением, к примеру, в коридоре.

Comments:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *