Датчик движения PIR с индикацией на LCD и светодиоде (обучение работе с Proteus)

В этой статье показан простой пример работы с PIR-датчиком движения на Arduino.
Проект создан специально для обучения работе с симулятором Proteus и демонстрирует считывание цифрового сигнала с датчика движения, управление светодиодом и вывод текущего состояния на ЖК-дисплей 16×2.

Arduino PIR датчик и LCD дисплей

Скетч определяет наличие движения с помощью PIR-сенсора. При обнаружении движения загорается светодиод, а на LCD-дисплее выводится сообщение Motion Detected. При отсутствии движения отображается сообщение No Motion.

Назначение проекта

Цель проекта — показать базовые принципы работы с PIR-датчиком движения:

  • подключение PIR-сенсора к Arduino;
  • чтение цифрового сигнала с датчика;
  • управление светодиодом;
  • вывод текстовой информации на LCD 16×2;
  • корректное обновление строк дисплея без артефактов.

Проект подходит для учебных стендов, охранных систем, систем автоматического освещения и первых экспериментов с датчиками движения.

Используемые компоненты

  • Arduino UNO;
  • PIR-датчик движения (модель PIR2 в Proteus);
  • ЖК-дисплей 16×2 (библиотека LiquidCrystal);
  • Светодиод;
  • Резистор 220–330 Ом;
  • Соединительные провода;
  • Proteus 8 или 9.

Принцип работы программы

PIR-датчик подключён к аналоговому пину A0, который используется как цифровой вход.

При отсутствии движения выход PIR равен LOW. Arduino выключает светодиод и выводит на LCD сообщение No Motion.

При обнаружении движения выход датчика становится HIGH. Arduino включает светодиод и выводит сообщение Motion Detected.

Для предотвращения наложения символов строки на дисплее всегда перезаписываются полностью.

Arduino-скетч

#include 

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

int pirPin = A0;   
int ledPin = 7;

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(1, 0);
  lcd.print("arduino-kid.ru");
  
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  
  lcd.setCursor(0, 1);
  lcd.print("   No Motion    ");
}

void loop() {
  int pirStat = digitalRead(pirPin);
  
  if (pirStat == HIGH) {
    digitalWrite(ledPin, HIGH);
    lcd.setCursor(0, 1);
    lcd.print("Motion Detected");
  } else {
    digitalWrite(ledPin, LOW);
    lcd.setCursor(0, 1);
    lcd.print("   No Motion    ");
  }
  
}

Работа проекта в Proteus

В симуляции Proteus PIR-датчик формирует цифровой сигнал. При появлении логической единицы Arduino реагирует включением светодиода и изменением текста на LCD-дисплее.

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

Установка библиотеки PIR-датчика для Proteus

Для корректной работы PIR-датчика в Proteus необходимо установить библиотеку датчика движения.

  • скопируйте файл PIRSensorTEP.LIB в каталог:
    C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY\
  • скопируйте файл PIRSensorTEP.IDX в каталог:
    C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\Library Indexing\
  • скопируйте файл PIRSensorTEP.hex в каталог установки Proteus;

В свойствах компонента PIR необходимо:

  • указать путь к файлу PIRSensorTEP.hex в поле Program File.

Запуск проекта в Proteus

  • распакуйте архив с проектом;
  • откройте файл .pdsprj;
  • проверьте путь к файлу .hex в свойствах Arduino;
  • проверьте путь к PIRSensorTEP.hex в свойствах PIR;
  • нажмите Run Simulation;
  • изменяйте состояние PIR-датчика и наблюдайте результат.

Если что-то не работает

Проверьте выбранную модель PIR (PIR2) и правильность путей к файлам библиотеки.

Рекомендуется также ознакомиться с базовым уроком по Proteus:
Первый проект в Proteus — мигание светодиода