Пьезоизлучатель Arduino: подключение зуммера, active против passive и мелодии
Первый вечер с пищалкой складывается по одному из двух сценариев, и оба обидны по-своему. Первый: зуммер пищит и не выключается — сигнал в скетче закончился минуту назад, а писк висит поверх всего; рука перепроверяет провода и резисторы, хотя вопрос сидит в аргументах tone(). Второй: не пищит вовсе — частоты в коде меняются, монитор порта честно рапортует о нотах, а макетка молчит; или пищит, но одной и той же нотой, на что бы вы ни поменяли код. Я в свой первый раз полчаса перепаивал провод к пину 8, пока не допёр: генератор сидит внутри детали, и никакой мой скетч его не перекричит. Обе истории про одно: у зуммеров две породы, и схемы включения у них разные, и языки управления тоже.
Ниже — разведение пород: тест питанием за десять секунд, контрольный тест мультиметром с оговорками, схема для пьезоизлучателя — резистор 100 Ом и ток 20-30 мА — и граница, за которой зуммеру уже нужен транзистор. Дальше управление: активному хватает digitalWrite с HIGH на LOW, пассивному нужен tone(), чья частота и задаёт ноту — от 262 Гц «до» до писка парктроника. Отдельная глава про мелодии: частоты первой октавы, щель тишины между нотами и почему активная порода на мелодиях бесполезна. Механика tone() и noTone() построчно уже разобрана в уроке про пьезозуммер; здесь собрано то, что обычно ищут перед первой покупкой и первым включением.
Две породы: тест питанием и контроль мультиметром
Активный зуммер — прибор: внутри корпуса сидит генератор с транзисторной обвязкой, и дали 5 В — он сам запищит своей частотой, примерно 2-2,3 кГц у большинства производителей; у модулей типа KY-012 в паспорте прописано 2300±300 Гц. Управлять можно только вкл/выкл: частота, длительность, громкость — всё зашито внутри. Ток порядка 25-30 мА. Пассивный зуммер — голый излучатель: диск пьезокерамики, приклеенный к металлической мембране. По электрике это конденсатор: без внешнего сигнала он молчит, а звучит ровно на той частоте, которую подали, — и в этом вся ценность породы для мелодий.
Тест питанием различает породы за десять секунд: ножки прямо в 5V и GND — запищал сам, значит активный; тихо щёлкнул при касании, значит пассивный. Мультиметр в режиме омметра — второй тест, но с оговоркой: магнитные активные корпуса показывают десятки ом, потому что внутри катушка; пьезоизлучатель — мегаомы, как и положено конденсатору; а вот пьезо-активный с генератором внутри от пассивного омметром не отличишь — цифры у обеих пород высокие. Поэтому главный тест один, питанием. Отдельная история — трёхногие модули на платке: у части активных управление инвертировано, пищание включается LOW на сигнальной ноге, а не HIGH; скетч с digitalWrite(HIGH) молчит, новичок меняет плату, а менять надо уровень в коде.
Схема: 5 В, ток 20-30 мА и резистор 100 Ом
Пассивный излучатель вешается на цифровой пин: сигнальная ножка через резистор 100 Ом (у меня пин D8), вторая — в GND; полярность не критична, перепутаете — осядет немного громкости. Ток 20-30 мА вписывается в бюджет ножки: пин Uno отдаёт до 40 мА, но комфортный режим вдвое скромнее, и резистор тут не бюрократия — он подрезает пиковый ток заряда ёмкости керамики, съедая копейки громкости. В чужих гайдах встречаются 220 Ом и даже 1 кОм: деталь живёт дольше, голос сядет — на 470 Ом мелодия уже бубнит, мои уши границу провели там. Активному мелодии не нужны: его ставят между 5 В и GND, а вкл/выкл делают ключом, разрывая минусовую ветку; напрямую на пин — только пока ток корпуса держится в тех же 20-30 мА.
Корпуса громче — табличка «95 дБ» с маркетплейса — в бюджет пина не влезают: у таких 80-150 мА, и моя первая встреча с таким закончилась перезагрузкой платы и мёртвым пином. Лечение одно: транзисторный ключ, база через резистор 1 кОм, зуммер питается от 5 В по толстой дорожке — ключ на 2N2222 собирается по уроку про транзистор. Считайте и общий бюджет: даташит ATmega328P кладёт 200 мА на весь чип, один зуммер там теряется, но при живых светодиодах, серво и дисплее пьезо вешается на пин последним — и первым переезжает на транзистор. Куда что втыкается на плате — карта распиновки Uno.
| Параметр | Активный зуммер | Пассивный зуммер | Динамик 8 Ом |
|---|---|---|---|
| Чем пищит | генератор внутри: дал 5 В — запищал | пьезокерамика на мембране: нужна волна от tone() | катушка с диффузором: нужен усилитель |
| Что подать | постоянное питание и вкл/выкл HIGH/LOW | прямоугольник 31 Гц - 65 кГц, скважность 50% | усиленный сигнал звукового диапазона |
| Ток | 25-30 мА | 20-30 мА | сотни мА |
| Громкость | громко, 85-95 дБ у корпусов | тише всех: голос брелка домофона | громче всех и единственные басы |
| Мелодии | нет: одна нота на весь корпус | да: частота = нота, от 262 Гц «до» | да, и не только ноты |
| Цена | 30-80 ₽ | 20-60 ₽ | от 100 ₽ плюс усилитель |
Цены в последней строке — с маркетплейсов начала 2025 года, в рознице разброс шире; важнее отношение цены к результату. Пьезо-пищалка из стартового набора закрывает весь сигнальный цикл: beep, сирена, тревога, мелодии — и живёт на пине без транзистора. Активный корпус берут под сигнализацию, где нужен вой без всякого кода: повесил на 5 В, щёлкаешь ключом. Динамик — не конкурент, а другая лига: настоящий звук, но без усилителя с пина он не озвучится, и это уже отдельный проект. Электрику пина — ток, резистор, ключ, полярность — я разбирал строка за строкой в уроке про подключение пьезозуммера.
Управление: HIGH/LOW против tone()
Активной породе хватает digitalWrite: HIGH — пищит, LOW — молчит, а у инвертированных модулей наоборот; tone() он не слышит в принципе, хоть 262, хоть 2000 подавай. Пассивному нужен tone(pin, frequency): таймер рисует на пине прямоугольную волну со скважностью 50%, и именно частота задаёт ноту. Границы аргумента: внутри ядра частота живёт в unsigned int — потолок 65535 Гц; слух взрослого тянет 20 Гц - 20 кГц, выше идёт ультразвуковая зона — скетч «работает», звука нет; на Uno ниже 31 Гц таймер уже не рисует волну, выходит треск. Звук снимается третьим аргументом в миллисекундах или noTone(). Нота одна на всю плату: таймер один, второй вызов tone() снимет первый. Плата за звук — Timer2, который же кормит ШИМ пинов 3 и 11: конфликт с Servo и ИК-приёмником расписан в лендинге про конфликт таймеров, карта всех трёх таймеров — в обзоре ATmega328.
Отсюда диагноз обоих симптомов из первого абзаца. Писк не смолкает: tone вызван без третьего аргумента, а noTone никто не позвал — звук играет до бесконечности; лечится tone(BUZZER, 1000, 200) с отбоем по таймеру либо noTone(BUZZER) в конце сигнала. Не пищит вовсе при меняющихся частотах: девять случаев из десяти — активная порода под tone(), десятый — частота уехала за 20 кГц. Beep-подтверждение на нажатие кнопки собирается из этого же пробника одной строкой: механика digitalRead — в уроке про кнопку, а сами кнопки со всеми подтяжками я сравнивал в отдельном лендинге.
- писк висит после сигнала — tone без длительности и без noTone: звук не заканчивается сам
- частоты меняются, звук один — активный зуммер: генератору внутри безразличен аргумент tone()
- скетч «играет», макетка молчит — проверьте породу питанием и не уехала ли частота за 20 кГц
- звук есть, а ШИМ на пинах 3 и 11 умер — Timer2 занят мелодией; пины 5, 6, 9 и 10 не страдают
Мелодии: ноты в герцах и щель между ними
Мелодия на пассивном излучателе — это массив чисел, и начинается он с частот первой октавы: до 262 Гц, ре 294, ми 330, фа 349, соль 392, ля 440, си 494; вторая октава подрастает до 523, 659, 784 и 1046 Гц. Играется циклом: tone(BUZZER, nota[i], dlit[i]) и следующий индекс. Две детали отличают живую мелодию от каши. Первая — щель тишины 20-30 мс между нотами: без неё соседние ноты сливаются, и «Ода к радости» звучит как гудок. Вторая — темп одной константой: правка ритма превращается из работы на вечер в смену одного числа. Обе разобраны построчно: гамма и первые массивы — в уроке про массивы нот, живой цикл без delay, при котором кнопка доживает до конца мелодии, — в уроке про мелодию на tone().
Громкость мелодии — вопрос частоты, а не тока: у пьезокорпуса резонанс 2-4 кГц, там он орёт в полный голос, а на 440 Гц говорит вполголоса; поэтому сигнальные частоты выбирают 2000-2500 Гц — не из эстетики, а из физики. Куда расти после мелодий: сигнальная логика «порог — сирена — сброс» с гистерезисом и дежурным бипом на millis — в уроке про звуковую сигнализацию; целая охранная система на датчиках наклона и геркона, где зуммер кричит по событию, — в уроке про охрану. Моё мнение про породы: берите пассивный, даже если в наборе лежат оба — активный вы всегда переведёте в режим «пищит всегда», а обратной дороги к мелодиям у него нет.