Урок 6 Начинающий 30 минут

Пьезоэлемент (Buzzer)

Научитесь генерировать звуки и мелодии с помощью ESP32 и создавайте звуковые сигнализации.

1

Подготовка оборудования

Компоненты для урока

ESP32 DevKit

Любая версия (30/38 пинов)

🔊

Active Buzzer

Со встроенным генератором

🎵

Passive Buzzer

Требует PWM сигнал

🔌

Транзистор + Резистор

2N2222 + 220 Ом

2

Что такое пьезоэлемент

Устройство пьезоэлемента

Строение пьезоэлемента

Пьезоэлемент использует пьезоэлектрический эффект — преобразование электрических сигналов в механические колебания, создающие звук.

Active

Встроенный генератор

Passive

Только пьезоэлемент

Active vs Passive

Тип Управление Применение
Active HIGH/LOW Сигналы
Passive PWM частота Мелодии
// Active buzzer
digitalWrite(buzzerPin, HIGH); // ВКЛ
// Passive buzzer
tone(buzzerPin, 440, 500); // Нота A4
2.1

Частоты музыкальных нот

Частоты музыкальных нот

C4 (Do)

262 Гц

D4 (Re)

294 Гц

E4 (Mi)

330 Гц

F4 (Fa)

349 Гц

G4 (Sol)

392 Гц

A4 (La)

440 Гц

B4 (Si)

494 Гц

C5 (Do)

523 Гц

3

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

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

Альтернативная схема подключения

Альтернативная схема подключения buzzer к ESP32
1

GPIO 21 Сигнальный провод через 220Ω к базе транзистора

2

База Центральный пин транзистора → резистор 220Ω

3

Коллектор Левый пин транзистора → GND buzzer

4

Эмиттер Правый пин транзистора → GND ESP32

⚠️ Важно

Транзистор используется как ключ для управления buzzer. ESP32 не может напрямую питать buzzer из-за ограниченного тока GPIO (~12mA).

4

Программирование

Настройка Arduino IDE

📦

Библиотека не требуется — используем стандартные функции digitalWrite() и tone()

🔧

Выберите плату: Tools → Board → ESP32 Dev Module

Подключите ESP32 к компьютеру через USB и выберите порт

Buzzer_Simple.ino
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
const int buzzerPin = 21;
void setup() {
  pinMode(buzzerPin, OUTPUT);
}
void loop() {
  // Passive buzzer — генерируем тон 440 Гц
  tone(buzzerPin, 440);
  delay(500); // Звучит 0.5 сек
  noTone(buzzerPin); // Выключаем тон
  delay(500); // Тишина 0.5 сек
}

Простой код в Arduino IDE

Код программы в Arduino IDE

Код с мелодией

Код с мелодией в Arduino IDE
4.1

PWM сигнал для Passive Buzzer

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)

4.2

Визуализация работы

Buzzer в действии

Active buzzer генерирует звук при подаче HIGH сигнала на GPIO 21

5

Возможные проблемы

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).

6

Цех Испытаний

Отточите мастерство управления звуковыми сигналами. От простого писка до полноценных мелодий.

Время прохождения
~95 минут суммарно
🎯
Уровень: Start ⏱ 10m

Простой сигнал

Buzzer пищит 0.5 сек включён, 0.5 сек выключен

Миссия

Напишите код для мигания buzzer: 500мс ВКЛ, 500мс ВЫКЛ. Используйте digitalWrite(buzzerPin, HIGH/LOW) и delay(500).

01
🆘
Уровень: Easy ⏱ 15m

SOS сигнал

Азбука Морзе: 3 коротких, 3 длинных, 3 коротких

Миссия

Реализуйте сигнал SOS: короткий = 200мс, длинный = 600мс. Пауза между сигналами 200мс. Цикл повторяется.

02
🚨
Уровень: Normal ⏱ 20m

Сигнализация

Buzzer пищит когда кнопка нажата

Миссия

Подключите кнопку к GPIO 22 (INPUT_PULLUP). Active buzzer на GPIO 21. Пока кнопка удерживается (LOW) — buzzer издаёт непрерывный звук через digitalWrite(HIGH). Отпустили — тишина (LOW). Дополнительно: каждое нажатие выводит в Serial.println сообщение 'ALARM ON' / 'ALARM OFF'. Проверка: при нажатии сразу слышен звук, без задержки.

03
🎵
Уровень: Hard ⏱ 25m

Мелодия

Воспроизведите простую мелодию

Миссия

Используйте passive buzzer на GPIO 21. Запрограммируйте первые 8 нот 'Имперского марша': частоты {440, 440, 440, 349, 523, 440, 349, 523}Гц, длительности {500, 500, 500, 350, 150, 500, 350, 150}мс. После каждой ноты — пауза 50мс (noTone). После всей мелодии — пауза 2 секунды, затем повтор. Проверка: мелодия узнаваема и воспроизводится без слипания нот.

04
🎹
Уровень: Expert ⏱ 35m

Пианино

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 при каждом нажатии.

05
🚀

Свой Проект

Создайте свою уникальную звуковую систему в онлайн-симуляторе. Ограничений нет!

Открыть Симулятор →
🎉

Поздравляем!

Вы освоили управление пьезоэлементом и теперь можете создавать звуковые сигнализации и простые мелодии!

Active Buzzer

Простые сигналы

Passive Buzzer

Мелодии

Частоты нот

262-523 Гц