Как подключить бипер к ардуино
Перейти к содержимому

Как подключить бипер к ардуино

  • автор:

Урок ESP8266. Подключаем зуммер к NodeMCU.

Цель этого урока — объяснить, как управлять модулем пассивного зуммера с помощью ESP8266. Мы будем программировать ESP8266, используя ядро Arduino. Вы можете посмотреть урок по подключению зуммера к Arduino UNO тут.

Что понадобится для урока управления зуммером с помощью NodeMCU.

В этом уроке ESP8266 будем использовать пассивного зуммера, в виде модуля KY-006, что позволяет нам напрямую управлять им, с помощью вывода GPIOмикроконтроллера.

Важно! Не подключайте цифровой вывод ESP8266 напрямую к зуммеру без использования транзистора или любого другого метода подачи тока на устройство. GPIO ESP8266 могут подавать только 12 мА, а большинство зуммеров потребляет значительно больше, что может повредить микроконтроллер.

Характеристики модуля KY-006:

  • Ток: 10мА
  • Рабочее напряжение: 1,5 ~ 15 В постоянного тока
  • Диапазон генерации тона: 1,5 ~ 2,5 кГц
  • Размеры 18,5 x 15 мм

Как видим, ток необходимый для работы модуля KY-006 меньше 12 мА. Поэтому его можно подключить напрямую к контактам NodeMCU.

Итак, подключаем ESP8266 к модулю зуммера, как показано на рисунке ниже. Если вы используете плату NodeMCU, обратите внимание, что номера контактов, указанные на плате, не соответствуют контактам на ESP8266.

Схема подключения модуля зуммера KY-006 к NodeMCU.

Схема подключения модуля зуммера KY-006 к NodeMCU.

Поскольку используем пассивный зуммер, нам нужно сгенерировать прямоугольную волну, чтобы контролировать звук, который он будет издавать. Частота прямоугольной волны, создаваемой на выводе GPIO, будет частотой звука. Таким образом, управление зуммером будет немного сложнее, поскольку он не будет включаться / выключаться, как светодиод, но у нас будет больше возможностей, поскольку мы сможем изменять частоту.

Скетч управления зуммером с помощью NodeMCU. Библиотека Tone.

Код этого урока очень прост, поскольку мы будем использовать функцию tone(), которая выполняет большую часть работы за нас. Убедитесь, что вы используете последнюю версию основных библиотек ESP8266 Arduino, чтобы гарантировать доступность функции tone().

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

tone(buzzPin, frequency);

Кроме того, можно передать третий аргумент, который указывает, сколько времени мы будем выводить прямоугольную волну. В нашем примере не будем использовать третий параметр, потому что мы будем контролировать продолжительность звука с помощью функции задержки. Итак, если мы не передадим третий аргумент, прямоугольная волна будет сохраняться до тех пор, пока мы не вызовем функцию noTone на том же выводе.

Предположим, что наш зуммер будет воспроизводить частоту 1000 Гц, и он будет гудеть в течение 1 секунды, затем останется выключенным в течение 1 секунды, а затем данный алгоритм повторяется заново.

Чтобы код было легко изменить, мы сначала объявляем 4 глобальные переменные и присваиваем им соответствующие значения.

int frequency = 1000; //частота Hz int buzzPin = 2; int timeOn = 1000; //время работы в milliseconds int timeOff = 1000; //время ожидания в millisecods

В этом простом примере мы можем перейти к функции настройки и поместить в наш цикл, следующий код:

void loop()

Итак, активируем прямоугольную волну 1000 Гц на контакте 2, вызывая функцию тона, и начинает звучать зуммер. Ждем 1 секунду, затем выключаем зуммер функцией noTone. Затем ждем еще 1 секунду и повторяем процесс.

Пример кода (скетч) для генерирования трех разных тонов звучания.

Следующий скетч ESP8266 будет генерировать три разных тона, путем включения и выключения зуммера KY-006 на разных частотах, с использованием функции tone().

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

void setup () < //Настройка вывода платы в режим "Выход" pinMode (PinBuzzer, OUTPUT); tone(PinBuzzer, 1500); // включаем звук частотой 1500 Гц delay(200); tone(PinBuzzer, 1000); // включаем звук частотой 1000 Гц delay(200); tone(PinBuzzer, 500); // включаем звук частотой 500 Гц delay(200); noTone(PinBuzzer); // выключаем звук delay(2000); >

Если нам нужно, чтобы звуковой сигнал воспроизводился постоянно, то добавляем код в основной цикл loop ().

void setup () < //Настройка вывода платы в режим "Выход" pinMode (PinBuzzer, OUTPUT); tone(PinBuzzer, 1500); // включаем звук частотой 1500 Гц delay(200); tone(PinBuzzer, 1000); // включаем звук частотой 1000 Гц delay(200); tone(PinBuzzer, 500); // включаем звук частотой 500 Гц delay(200); noTone(PinBuzzer); // выключаем звук delay(2000); >

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

Пассивный звуковой излучатель использовал в проекте, который собирал вместе с сыном: «Часы-будильник на Arduino»

Пассивный звуковой излучатель использовал в проекте, который собирал вместе с сыном: «Часы-будильник на Arduino». Корпус сделан из конструктора LEGO.

Понравился Урок Подключаем зуммер к NodeMCU? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Как подключить бипер к ардуино

Текущее время: Пн фев 05, 2024 04:27:38

Часовой пояс: UTC + 3 часа

Запрошенной темы не существует.

Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y

Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024

Подключение зуммера к Arduino

Подключение зуммера к Arduino

В этой статье расскажу как подключить зуммер (пьезозуммер) к Arduino UNO. Зуммер обычно используется для подачи сигнала в виде тонального или звукового сигнала. Этот тип зуммера широко используется в системах сигнализации, бытовых приборов или во встроенных системах, чтобы обеспечить какую-либо индикацию или оповещение.

Технические параметры

► Напряжение питания: 3.3 В ~ 5.5 В
► Потребляемый ток: 10 мА
► Тип зуммера: активный;
► Издаваемый звук: такой как у динамика инициализации в системном блоке компьютера;
► Диаметр монтажного отверстия: 2.5 мм
► Выходной ток: 15 мА
► Габариты: 36мм х 14мм х 12мм

Общие сведения

Немного расскажу о зуммере, состоит он из пьезоэлектрический материала, который приклеен к тонкой металлической пластины. Если подать напряжение на эти пластины пьезоэлемент начнет сгибаться и разгибаться, создавая определенный звук. Чем быстрее изгибаете пьезоэлемент, тем выше уровень шума, эта скорость называется частотой. Опять же, чем выше частота, тем выше звук, который мы слышим.

Активный зуммер продается отдельно, для подключения его к Arduino необходимо использовать транзистор, чтобы не спалить вывод контроллера. Так же, можно воспользоватся модулем, на котором уже установлен зуммер, транзистор, резистор и трех контактный разъем, шагом 2.54 мм. Принципиальная схема показана на рисунке ниже.

Назначение контактов:
VCC – напряжение питания;
I/O – управляющий сигнал;
GND – общий контакт.

Подключение модуля зуммера к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Активный модуль зуммер, buzzer x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
В данном примере буду использовать модуль зуммер и Arduino UNO R3. Схема не сложная, необходимо всего три провода, сначала подключаем шину I/0 в порт 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к 5V (можно записать и от 3.3В), схема собрана, теперь надо подготовить программную часть.

Программа:
Пример простой, скетч просто включает и выключает зуммер на 0,2 секунды.

Пьезоизлучатель

Пьезоизлучатель может называться по разному — пищалка, зумер, piezo buzzer или speaker. Суть одна — издать звук.

Обычно в наборах идут два вида пищалок — активный и пассивный. Они похожи и новичка ставят в тупик. Давайте разбираться.

Активный зуммер имеет сверху наклейку с таинственной надписью «Remove seal after washing», которую Гугл-переводчик переводит весьма странно — «снять пломбу после мытья», ещё больше запутывая пользователя. Не обращайте внимания на надпись, это просто технический момент. Во время изготовления детали требуется промывка от флюса, но чтобы не повредить вещь, заклеивают отверстие сверху. Но не торопитесь отклеивать и выбрасывать наклейку, она вам пригодится.

Active buzzer

Активный зумер может работать самостоятельно, достаточно просто подать питание. При подключении следут следить за полярностью. На наклейке есть значок плюса (+), но доверять наклейке не стоит, может кто-то не очень аккуратно её наклеил. Лучше посмотрите на ножки. Как правило, одна ножка длиннее другой. Длинная ножка — плюс, короткая — минус. Соедините длинную ножку к питанию 5В, а короткую к земле. Вы сразу услышите противный звук. Именно по этой причине я советовал вам не отклеивать наклейку. Если вы теперь удалите наклейку, то громкость звука станет намного выше. Заклейте немедленно обратно!

Пассивный зумер внешне похож, но всё-таки отличается немного. Сравните их по размерам, а также посмотрите на их снизу. Разница видна. При подключении как из прошлого примера с активным динамиком, вы ничего не услышите. Просто подать питание не достаточно, нужно использовать программные методы, которые есть в составе В Arduino.

Passive buzzer

Также встречаются в модульном исполнении, например, KY-006 (пассивный) или KY-012 (активный). У модуля три вывода, средний не используется, вывод S соединяется с цифровым выводом платы, а вывод с GND.

Passive buzzer KY-006 Active buzzer KY-012

Переходим к программной части. Активный зумер пищит громче и отчётливее, пассивный немного грубовато.

Самый простой способ — подать напряжение на нужный вывод.

 int buzzPin = 2; void setup() < pinMode(buzzPin, OUTPUT); // установка вывода 2 в режим вывода >void loop() < digitalWrite(buzzPin, HIGH); // перевод вывода 2 в активное состояние delay(500); // пауза полсекунды digitalWrite(buzzPin, LOW); // перевод вывода 2 в неактивное состояние delay(500); // пауза полсекунды >

При запуске услышим щелчки.

Для более интересных звуков используется функция tone().

 const byte piezoPin = 2; void setup() < pinMode(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < tone(piezoPin, 100); // генерируем звук с частотой 100 Гц delay(100); // пауза 100 миллисекунд noTone(piezoPin); // выключаем звук delay(900); // снова пауза 900 мс >

Одну ноту играть не интересно. Пусть будет массив из десяти нот.

 const byte piezoPin = 2; int numTones = 10; // Ноты C, C#, D, D#, E, F, F#, G, G#, A int tones[10] = ; void setup() < pinMode(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < for (int i = 0; i < numTones; i++) < tone(piezoPin, tones[i]); delay(500); >noTone(piezoPin); > 

Если управлять не только нотами, но и их продолжительностью, то можно писать мелодии. Говорят, следующая мелодия воспроизводит «Имперский марш» из «Звёздных войн».

 const byte piezoPin = 2; const byte COUNT_NOTES = 39; // частоты нот int tones[COUNT_NOTES] = < 392, 392, 392, 311, 466, 392, 311, 466, 392, 587, 587, 587, 622, 466, 369, 311, 466, 392, 784, 392, 392, 784, 739, 698, 659, 622, 659, 415, 554, 523, 493, 466, 440, 466, 311, 369, 311, 466, 392 >; // длительности нот int durations[COUNT_NOTES] = < 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 250, 100, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 750 >; void setup() < pinMode(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < for (int i = 0; i > 

02.Digital: toneMelody (Играем мелодию)

Рассмотрим пример из меню File | Examples | 2.Digital | toneMelody. Обратите внимание, что программа состоит из двух вкладок toneMelody и pitches.h. Файл pitches.h содержит константы для проигрывания звуков различной тональности. Сам файл находится в одной папке с скетчем.

После того, как мы наигрались со светом при помощи светодиодов, пора поиграть со звуком. Для примера нам понадобится пьезоизлучатель, макетная плата и три провода.

Собирается конструкция очень просто — от вывода 8 ведём провод к одному контакту пищалки, а второй контакт присоединяем к GND.

Запустите скетч. Вы услышите мелодию, которая прозвучит один раз. Если вы хотите послушать её ещё раз, то нажмите на кнопку Reset на вашей плате.

 #include "pitches.h" // ноты для мелодии int melody[] = < NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4>; // продолжительность ноты: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = < 4, 8, 8, 4,4,4,4,4 >; void setup() < // проходим через все ноты мелодии: for (int thisNote = 0; thisNote < 8; thisNote++) < // to calculate the note duration, take one second // divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(8, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); >> void loop() < // нет необходимости повторять мелодию >

В первой строчке мы подключаем заголовочный файл pitches.h при помощи оператора #include. Далее создаётся массив из нот, а также массив из продолжительности проигрывания ноты. Потом идёт цикл, где для каждой ноты вычисляется его продолжительность и вызывается функция tone(), которая и воспроизводит нужный звук. Обратите внимание, что весь код находится в методе setup(), поэтому программа выполняется один раз.

Вот так мы быстро познакомились с новым устройством — пьезоизлучателем, а также научились извлекать мелодию.

Melody

Нашёл ещё один пример с пищалкой.

Пример использует вывод 8.

 int speakerPin = 8; int length = 15; // число нот char notes[] = "ccggaagffeeddc "; // сохраняем ноты как массив символов int beats[] = < 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 >; // массив временных промежутков int tempo = 300; void playTone(int tone, int duration) < for (long i = 0; i < duration * 1000L; i += tone * 2) < digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); >> void playNote(char note, int duration) < char names[] = < 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' >; int tones[] = < 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 >; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) < if (names[i] == note) < playTone(tones[i], duration); >> > void setup() < pinMode(speakerPin, OUTPUT); >void loop() < for (int i = 0; i < length; i++) < if (notes[i] == ' ') < delay(beats[i] * tempo); // rest >else < playNote(notes[i], beats[i] * tempo); >// pause between notes delay(tempo / 2); > > 

02.Digital: tonePitchFollower

Ещё один простой пример File | Examples | 02.Digital | tonePitchFollower для извлечения звуков, который зависит от освещённости — вы можете проводить рукой над датчиком освещённости, создавая тем самым разные значения, которые передаются на динамик. В примере упоминается 9-омный динамик, но мы можем использовать и свой пьезоизлучатель.

Piezo

 void setup() < Serial.begin(9600); >void loop() < // read the sensor: int sensorReading = analogRead(A0); // print the sensor reading so you know its range Serial.println(sensorReading); // map the analog input range (in this case, 400 - 1000 from the photoresistor) // to the output pitch range (120 - 1500Hz) // change the minimum and maximum input numbers below depending on the range // your sensor's giving: int thisPitch = map(sensorReading, 400, 1000, 120, 1500); // play the pitch: tone(9, thisPitch, 10); delay(1); // delay in between reads for stability >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *