Код для поиска

ESP32 Урок 21/55 - Обнаружение человека с помощью PIR-датчика движения | Обучающий набор SunFounder для ESP32 IoT

ESP32 Урок 21/55 - Обнаружение человека с помощью PIR-датчика движения | Обучающий набор SunFounder для ESP32 IoT

В этом руководстве мы узнаем, как использовать датчик движения PIR с ESP32 для обнаружения присутствия человека. ESP32 — это мощный микроконтроллер, который предлагает возможности как Wi-Fi, так и Bluetooth, что делает его идеальным для проектов Интернета вещей. Интегрировав PIR-датчик, мы можем создать систему, которая активирует светодиод или зуммер при обнаружении движения, обеспечивая простой, но эффективный способ мониторинга активности человека.

PIR-ДАТЧИК RE 200B

PIR-датчик (пассивный инфракрасный) обнаруживает движение, улавливая инфракрасное излучение, испускаемое объектами, особенно теплокровными, такими как люди. Когда движение обнаружено, датчик отправляет сигнал на ESP32, который затем может активировать выходное устройство, например, включить светодиод или подать звуковой сигнал зуммера. Это руководство проведет вас через настройку оборудования, подключение и код, необходимые для правильной работы системы (на видео в 00:45).

ESP32-21_motion_sensor-schematic

Объяснение аппаратного обеспечения

Этот проект включает несколько ключевых компонентов. Микроконтроллер ESP32 служит мозгом операции, обрабатывая данные датчика и управляя выходами. PIR-датчик движения обнаруживает перемещение, измеряя изменения инфракрасного излучения. Светодиод или зуммер обеспечивают визуальное или звуковое оповещение при обнаружении движения.

ESP32 оснащен Wi-Fi и Bluetooth, что позволяет расширить функциональность, например, подключение к облаку. PIR-датчик содержит линзу, которая фокусирует инфракрасный свет на пироэлектрическом датчике, генерирующем сигнал напряжения при обнаружении изменений уровня инфракрасного излучения, что указывает на движение.

Данные из технического описания

Производитель SunFounder
Номер детали Модуль PIR-датчика
Логическое/IO напряжение 3,3 В
Напряжение питания 3,3 В
Выходной ток (на канал) макс. 20 мА
Пиковый ток (на канал) макс. 50 мА
Рекомендации по частоте ШИМ Н/Д
Пороговые значения входной логики 0,3 В (низкий), 2,0 В (высокий)
Падение напряжения / RDS(on) / насыщение Н/Д
Тепловые пределы от 0 до 70 °C
Корпус Модуль
Примечания / варианты Регулируемая чувствительность и задержка

 

  • Обеспечьте правильное питание (3,3 В), чтобы избежать повреждений.
  • Используйте резистор для светодиода, чтобы ограничить ток.
  • Соблюдайте правильное подключение проводов, чтобы предотвратить короткие замыкания.
  • При необходимости отрегулируйте ручки PIR-датчика для настройки чувствительности и задержки.
  • Протестируйте датчик в разных средах для оптимальной производительности.

Инструкции по подключению

ESP32-21_motion_sensor-wiring

Чтобы подключить PIR-датчик движения и светодиод к ESP32, начните с соединения контакта VCC PIR-датчика с выходом 3,3 В на ESP32. Затем подключите контакт заземления PIR-датчика к контакту заземления на ESP32. Сигнальный контакт (часто обозначаемый как S) PIR-датчика следует подключить к контакту GPIO 14 на ESP32.

Для светодиода подключите более длинную ножку (анод) к контакту GPIO 26 через резистор 220 Ом, а более короткую ножку (катод) — к земле. Убедитесь, что все соединения надежны, чтобы обеспечить правильную работу. Если вы используете зуммер вместо светодиода, подключите один контакт зуммера к контакту GPIO 26, а другой — к земле, заменив схему со светодиодом.

Примеры кода и пояснения

В коде мы определяем номера контактов для PIR-датчика и светодиода. Мы используем const int pirPin = 14; для установки контакта PIR и const int ledPin = 26; для контакта светодиода. Эти константы гарантируют, что номера контактов останутся неизменными во время выполнения программы.

const int pirPin = 14;  // номер контакта PIR
const int ledPin = 26;     // контакт светодиода

Этот фрагмент инициализирует контакты, которые мы будем использовать. В функции setup() мы настраиваем контакт PIR как вход, а контакт светодиода как выход. Эта настройка важна для чтения состояния датчика и управления светодиодом.

void setup() {
  Serial.begin(115200);  
  pinMode(pirPin, INPUT);  // инициализация контакта PIR как входа
  pinMode(ledPin, OUTPUT);  // инициализация контакта светодиода как выхода
}

В функции loop() мы непрерывно считываем состояние PIR-датчика с помощью digitalRead(pirPin);. Если датчик обнаруживает движение (указывается состоянием HIGH), мы включаем светодиод с помощью digitalWrite(ledPin, HIGH);. В противном случае мы выключаем светодиод.

if (pirState == HIGH) {
    digitalWrite(ledPin, HIGH);  // включить светодиод
} else {
    digitalWrite(ledPin, LOW);    // выключить светодиод
}

Эта логика позволяет светодиоду реагировать на движение, обнаруженное PIR-датчиком. Убедитесь, что вы загрузили полный код, приведенный ниже в статье, для полной функциональности.

Демонстрация / Что ожидать

После того как все настроено и код загружен, светодиод загорится при обнаружении движения PIR-датчиком. Вы можете протестировать датчик, двигаясь перед ним; светодиод должен загореться немедленно. Если на датчике установлена задержка, он останется включенным в течение заданного времени, прежде чем снова выключиться (на видео в 12:15).

К распространенным ошибкам относится неправильное подключение, которое может помешать работе датчика. Убедитесь, что PIR-датчик правильно запитан и что вывод сигнала подключен к правильному GPIO-контакту на ESP32. Регулировка ручек чувствительности и задержки на PIR-датчике также может помочь оптимизировать его работу в зависимости от вашего окружения.

Временные метки видео

  • 00:00 Начало
  • 1:54 Введение в PIR-датчик
  • 6:38 Объяснение подключения
  • 10:21 Объяснение кода Arduino
  • 12:45 Выбор платы ESP32 и COM-порта в Arduino IDE
  • 14:27 Демонстрация и калибровка PIR-датчика

Изображения

ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-schematic
820-ESP32 Tutorial 21/55- Arduino code for motion sensor
Язык: C++
/*
 * // установить номера контактов
 */
const int pirPin = 14; // номер пи́н-кода ПИР
const int ledPin = 26; // LED вывод

 // переменная для хранения статуса PIR
int pirState = 0;

void setup() {
  Serial.begin(115200);
 // инициализируйте пин pir как входной
  pinMode(pirPin, INPUT);
 // инициализировать вывод LED как выходной
  pinMode(ledPin, OUTPUT);
}

void loop() {
 // узнать состояние значения pir
  pirState = digitalRead(pirPin);
  Serial.println(pirState);
  delay(100);

 // если PIR нажата, состояние PIR - ВЫСОКОЕ
  if (pirState == HIGH) {
 // включить светодиод
    digitalWrite(ledPin, HIGH);

  } else {
 // выключить светодиод
    digitalWrite(ledPin, LOW);
  }
}

Ресурсы и ссылки

Ресурсов пока нет.

Файлы📁

Технический паспорт (pdf)

Другие файлы