ESP32 Урок 21/55 - Обнаружение человека с помощью PIR-датчика движения | Обучающий набор SunFounder для ESP32 IoT
В этом руководстве мы узнаем, как использовать датчик движения PIR с ESP32 для обнаружения присутствия человека. ESP32 — это мощный микроконтроллер, который предлагает возможности как Wi-Fi, так и Bluetooth, что делает его идеальным для проектов Интернета вещей. Интегрировав PIR-датчик, мы можем создать систему, которая активирует светодиод или зуммер при обнаружении движения, обеспечивая простой, но эффективный способ мониторинга активности человека.
PIR-датчик (пассивный инфракрасный) обнаруживает движение, улавливая инфракрасное излучение, испускаемое объектами, особенно теплокровными, такими как люди. Когда движение обнаружено, датчик отправляет сигнал на ESP32, который затем может активировать выходное устройство, например, включить светодиод или подать звуковой сигнал зуммера. Это руководство проведет вас через настройку оборудования, подключение и код, необходимые для правильной работы системы (на видео в 00:45).
Объяснение аппаратного обеспечения
Этот проект включает несколько ключевых компонентов. Микроконтроллер 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-датчика для настройки чувствительности и задержки.
- Протестируйте датчик в разных средах для оптимальной производительности.
Инструкции по подключению

Чтобы подключить 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-датчика
/*
* // установить номера контактов
*/
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);
}
}
Common Course Links
Common Course Files
Ресурсы и ссылки
Ресурсов пока нет.
Файлы📁
Технический паспорт (pdf)
-
Технический лист движения датчика RE200B_PRI
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 даташит на чип модуляции движения
BISS0001_datasheet.pdf0.16 MB
Другие файлы
-
HC-SR501 датчик движения Руководство пользователя
robojax-HC-SR501-motion-manual.pdf0.83 MB