Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Датчики chevron_right Detect a Knock — определяем удар с помощью пьезодатчика

Detect a Knock — определяем удар с помощью пьезодатчика

Учимся использовать пьезоэлектрический датчик для обнаружения вибрации и ударов по поверхности с помощью Arduino.

В этом уроке разберёмся, как использовать Piezo element для обнаружения вибрации — например, стука в дверь, удара по столу или другой твёрдой поверхности.

Пьезоэлемент — это электронное устройство, которое генерирует напряжение при механической деформации: вибрации, звуковой волне или физическом давлении. Работает и в обратную сторону: если подать на пьезо напряжение, оно начнёт вибрировать и издавать звук. Именно поэтому пьезоэлементы применяют и как излучатели звука, и как датчики.

Скетч считывает сигнал с пьезодатчика с помощью команды analogRead(), которая преобразует напряжение в диапазоне от 0 до 5 В в числовое значение от 0 до 1023. Этот процесс называется аналого-цифровым преобразованием, или ADC.

Если сигнал датчика превысит заданный порог, плата отправит строку "Knock!" на компьютер через последовательный порт. Откройте Serial Monitor, чтобы увидеть эти сообщения.

Необходимые компоненты

  • Arduino Board
  • Пьезоэлектрический диск
  • Резистор 1 МОм
  • Твёрдая поверхность для постукивания

Схема подключения

Пьезоэлементы полярны: ток через них проходит строго в одном направлении. Подключите чёрный провод (минус) к GND, а красный провод (плюс) — к аналоговому пину A0. Параллельно пьезоэлементу обязательно подключите резистор 1 МОм — он ограничивает напряжение и ток, которые генерирует датчик, и защищает аналоговый вход платы.

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

Схема подключения пьезодатчика к Arduino UNO на макетной плате

Принципиальная схема

Пьезоэлемент подключён к аналоговому пину A0, а между его выводами включён резистор 1 МОм. Этот резистор выполняет важную защитную функцию: без него аналоговый вход может быть не в состоянии корректно считать сигнал с пьезо, а сам датчик рискует получить повреждение от избыточного тока.

Принципиальная схема подключения пьезодатчика и резистора 1 МОм к Arduino UNO

Код

В скетче ниже входящий сигнал с пьезодатчика сравнивается с пороговым значением (threshold), которое задаёт пользователь. Если сигнал превышает порог — в Serial Monitor появляется сообщение "Knock!". Попробуйте увеличить или уменьшить это значение, чтобы настроить чувствительность датчика под конкретную поверхность.

Как это работает

При ударе по поверхности пьезоэлемент деформируется и кратковременно генерирует импульс напряжения. analogRead() считывает это напряжение и возвращает число от 0 до 1023. Скетч проверяет: если значение больше threshold, значит, зафиксирован удар — и плата сигнализирует об этом через Serial.

Типичные ошибки

  • Нет реакции на удары — проверьте полярность пьезоэлемента и наличие резистора 1 МОм. Без резистора сигнал может быть слишком слабым или нестабильным.
  • Слишком много ложных срабатываний — увеличьте значение threshold в коде.
  • Датчик не реагирует на слабые удары — уменьшите threshold или плотнее прижмите/приклейте пьезо к поверхности.
  • Сигнал есть, но «Knock!» не появляется — откройте Serial Monitor и убедитесь, что скорость порта совпадает с той, что задана в Serial.begin().

Как проверить результат

  1. Загрузите скетч на плату.
  2. Откройте Serial Monitor (Ctrl+Shift+M или через меню Tools → Serial Monitor).
  3. Слегка постучите по поверхности, к которой прикреплён пьезоэлемент.
  4. В мониторе должна появиться строка Knock!.

Если реакции нет — попробуйте постучать сильнее или уменьшить threshold. Если сообщения появляются без ударов — немного увеличьте порог.

Где пригодится

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

Дополнительные материалы

Больше базовых уроков можно найти в разделе built-in examples.

Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.