Пьезоэлемент (Buzzer)
Научитесь генерировать звуки и мелодии с помощью ESP32 и создавайте звуковые сигнализации.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
Active Buzzer
Со встроенным генератором
Passive Buzzer
Требует PWM сигнал
Транзистор + Резистор
2N2222 + 220 Ом
Что такое пьезоэлемент
Устройство пьезоэлемента
Пьезоэлемент использует пьезоэлектрический эффект — преобразование электрических сигналов в механические колебания, создающие звук.
Active
Встроенный генератор
Passive
Только пьезоэлемент
Active vs Passive
| Тип | Управление | Применение |
|---|---|---|
| Active | HIGH/LOW | Сигналы |
| Passive | PWM частота | Мелодии |
Частоты музыкальных нот
C4 (Do)
262 Гц
D4 (Re)
294 Гц
E4 (Mi)
330 Гц
F4 (Fa)
349 Гц
G4 (Sol)
392 Гц
A4 (La)
440 Гц
B4 (Si)
494 Гц
C5 (Do)
523 Гц
Схема подключения
Альтернативная схема подключения
GPIO 21 Сигнальный провод через 220Ω к базе транзистора
База Центральный пин транзистора → резистор 220Ω
Коллектор Левый пин транзистора → GND buzzer
Эмиттер Правый пин транзистора → GND ESP32
⚠️ Важно
Транзистор используется как ключ для управления buzzer. ESP32 не может напрямую питать buzzer из-за ограниченного тока GPIO (~12mA).
Программирование
Настройка Arduino IDE
Библиотека не требуется — используем стандартные функции digitalWrite() и tone()
Выберите плату: Tools → Board → ESP32 Dev Module
Подключите ESP32 к компьютеру через USB и выберите порт
Простой код в Arduino IDE
Код с мелодией
PWM сигнал для Passive Buzzer
Частота
440 Гц = нота A4 (Ля). Частота определяет высоту тона.
Период
T = 2.27 мс для 440 Гц. Формула: T = 1/f
Duty Cycle
50% — стандарт для tone(). Квадратная волна.
📊 Формула расчёта
Частота → Период
Period (ms) = 1000 / Frequency (Hz)
Пример: 1000 / 440 = 2.27 мс
tone() функция
tone(pin, frequency, duration)
Пример: tone(21, 440, 500)
Визуализация работы
Active buzzer генерирует звук при подаче HIGH сигнала на GPIO 21
Возможные проблемы
Buzzer не звучит ↓
Проверьте полярность подключения: VCC → 5V, GND → транзистор. Убедитесь, что транзистор подключён правильно (эмиттер → GND, база → GPIO через резистор, коллектор → GND buzzer). Проверьте код — для active buzzer используйте digitalWrite().
Очень тихий звук ↓
Недостаточное напряжение — buzzer требует 5V, а не 3.3V от ESP32. Используйте внешний источник питания 5V. Убедитесь, что транзистор полностью открывается (резистор 220Ω на базе).
Неправильная частота/тон ↓
Для passive buzzer используйте tone(pin, frequency). Проверьте частоту ноты в таблице. Active buzzer не может воспроизводить разные тона — только ВКЛ/ВЫКЛ.
ESP32 перезагружается ↓
Buzzer потребляет слишком много тока. ESP32 GPIO может выдать только ~12mA. Используйте транзистор как ключ и внешнее питание 5V на 1A+.
Постоянный звук без остановки ↓
Забудьте noTone() после tone() или digitalWrite(LOW). Для passive buzzer: noTone(buzzerPin). Для active: digitalWrite(buzzerPin, LOW).
Цех Испытаний
Отточите мастерство управления звуковыми сигналами. От простого писка до полноценных мелодий.
Простой сигнал
Buzzer пищит 0.5 сек включён, 0.5 сек выключен
Напишите код для мигания buzzer: 500мс ВКЛ, 500мс ВЫКЛ. Используйте digitalWrite(buzzerPin, HIGH/LOW) и delay(500).
SOS сигнал
Азбука Морзе: 3 коротких, 3 длинных, 3 коротких
Реализуйте сигнал SOS: короткий = 200мс, длинный = 600мс. Пауза между сигналами 200мс. Цикл повторяется.
Сигнализация
Buzzer пищит когда кнопка нажата
Подключите кнопку к GPIO 22 (INPUT_PULLUP). Active buzzer на GPIO 21. Пока кнопка удерживается (LOW) — buzzer издаёт непрерывный звук через digitalWrite(HIGH). Отпустили — тишина (LOW). Дополнительно: каждое нажатие выводит в Serial.println сообщение 'ALARM ON' / 'ALARM OFF'. Проверка: при нажатии сразу слышен звук, без задержки.
Мелодия
Воспроизведите простую мелодию
Используйте passive buzzer на GPIO 21. Запрограммируйте первые 8 нот 'Имперского марша': частоты {440, 440, 440, 349, 523, 440, 349, 523}Гц, длительности {500, 500, 500, 350, 150, 500, 350, 150}мс. После каждой ноты — пауза 50мс (noTone). После всей мелодии — пауза 2 секунды, затем повтор. Проверка: мелодия узнаваема и воспроизводится без слипания нот.
Пианино
7 кнопок = 7 нот. Нажатие воспроизводит ноту
Подключите 7 кнопок к GPIO 13, 12, 14, 27, 26, 25, 33 (безопасные пины). Passive buzzer на GPIO 21. Каждая кнопка воспроизводит ноту: До(262Гц), Ре(294), Ми(330), Фа(349), Соль(392), Ля(440), Си(494). Нота звучит пока кнопка удерживается. Одновременное нажатие 2 кнопок — buzzer молчит (обрабатывайте только первую нажатую). Выводите название ноты в Serial при каждом нажатии.
Свой Проект
Создайте свою уникальную звуковую систему в онлайн-симуляторе. Ограничений нет!
Поздравляем!
Вы освоили управление пьезоэлементом и теперь можете создавать звуковые сигнализации и простые мелодии!
Active Buzzer
Простые сигналы
Passive Buzzer
Мелодии
Частоты нот
262-523 Гц