Обнаружение движения используется во многих современных системах безопасности. Одним из самых популярных датчиков для обнаружения движения является пироэлектрический датчик движения или, сокращенно, PIR датчик. Этот датчик способен обнаруживать движения людей и животных на основе анализа инфракрасных лучей, испускаемых ими. В данной статье мы рассмотрим подключение PIR датчика к плате MSP430G2 Launchpad и создания, таким образом, на их основе детектора движения.
Ранее на нашем сайте мы рассматривали подключение PIR датчика к другим микроконтроллерам (платам):
- к микроконтроллеру AVR;
- к микроконтроллеру PIC;
- к плате Arduino;
- к плате Raspberry Pi;
- к модулю ESP8266.
Необходимые компоненты
- Плата MSP430G2 LaunchPad (купить на AliExpress).
- Модуль PIR датчика (купить на AliExpress).
- Светодиод (купить на AliExpress).
- Зуммер (Buzzer) (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
PIR датчик
PIR датчик представляет собой пироэлектрический инфракрасный (PIR) датчик движения. Подобные датчики часто используются в системах сигнализации и легко обнаруживают присутствие людей или животных. Они малые по габаритам, недорогие, потребляют мало энергии, легки в эксплуатации и практически не подвержены износу.
В PIR датчике присутствуют два важных элемента: пироэлектрический кристалл, который может обнаруживать тепловые сигнатуры от живого организма (человека/животных), и линзы Френеля, которые расширяют диапазон действия датчика. Также в PIR датчике доступно несколько вариантов опций, показанных на следующем рисунке.
Два потенциометра (оранжевый цвет) используются для управления чувствительностью и срабатывания по времени датчика. Основной контакт датчика (Dout) располагается между его контактами Vcc и Gnd. Датчик работает от напряжения 3.3 В, но также может работать и от напряжения 5 В. В левом верхнем углу датчик имеет переключатель режимов своей работы. Всего доступно два режима работы: “H” режим и “I” режим.
В “H” режиме на выходном контакте датчика Dout будет появляться напряжение высокого уровня (3.3V) когда в диапазоне действия датчика будет появляться человек. Спустя некоторое время, устанавливаемое с помощью потенциометра, напряжение на этом контакте становится низкого уровня. То есть в этом режиме напряжение высокого уровня на контакте Dout будет независимо от того присутствует ли еще человек в зоне действия датчика или покинул ее. Этот режим мы будем использовать в нашем проекте – в большинстве случаев он предпочтительней при работе с этим датчиком. Еще его называют режимом “с перезапуском”.
В режиме “I” напряжение высокого уровня (3.3V) на выходном контакте датчика Dout будет только тогда, когда человек находится в зоне действия датчика. Как только человек покинет ее, то спустя некоторое время, регулируемое с помощью потенциометра, на контакте Dout будет напряжение низкого уровня. То есть если вы будете ходить около датчика, то он будет постоянно срабатывать и выключаться. Этот режим еще называется режимом “без перезапуска”.
Примечание: местоположение контактов и потенциометров могут отличаться в зависимости от производителя PIR датчика.
Схема проекта
Схема подключения PIR датчика движения к плате MSP430G2 представлена на следующем рисунке.
Контакты VCC и GND PIR датчика подключены к контактам VCC и GND платы MSP430G2. Выходной контакт PIR датчика подключен к 8 контакту (P2.0) платы (вместо него можно использовать любой другой цифровой контакт платы). 6-й контакт (P1.4) платы MSP430G2 подключен к зуммеру и светодиоду.
Внешний вид собранной конструкции проекта показан на следующем рисунке.
Объяснение кода программы
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В коде нашей программы мы будем непрерывно мигать светодиодом и издавать сигнал тревоги зуммером когда PIR датчик будет обнаруживать какое либо движение.
В функции void setup() мы настроим режим работы контакта 8 на ввод данных (с него мы будем считывать выходной сигнал PIR датчика) и режим работы контакта 6 на вывод данных (с него будет производиться управление зуммером и светодиодом).
1 2 3 4 5 |
void setup() { pinMode(8, INPUT); pinMode(6, OUTPUT); } |
Затем, в функции void loop(), мы будем проверять выход PIR датчика. Если на нем уровень HIGH, то есть датчик обнаружил движение, мы будем менять состояние контакта 6 с HIGH на LOW и обратно с интервалом 100 мс, таким образом, светодиод будет непрерывно мигать, а зуммер – издавать прерывистый сигнал.
1 2 3 4 5 6 7 8 9 10 |
void loop() { If(digitalRead(8) == HIGH) { digitalWrite(6, HIGH); delay(100); digitalWrite(6, LOW); delay(100); } } |
Когда аппаратная часть проекта у вас будет готова, загрузите программу в MSP430 с помощью Energia IDE, подайте на схему проекта питание и подождите около минуты – за это время PIR датчик произведет свою калибровку. После этого поместите свою руку перед датчиком и убедитесь что датчик ее обнаружил – светодиод должен начать мигать, а зуммер издавать прерывистый сигнал. После того как вы уберете свою руку эти процессы должны прекратиться. Также вы можете отрегулировать чувствительность PIR датчика и время его срабатывания с помощью двух потенциометров, присутствующих в его составе. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void setup() { pinMode(8, INPUT); pinMode(6, OUTPUT); } void loop() { If(digitalRead(8) == HIGH) { digitalWrite(6, HIGH); delay(100); digitalWrite(6, LOW); delay(100); } } |