Цель этого урока - объяснить, как управлять модулем пассивного зуммера с помощью 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.
Поскольку используем пассивный зуммер, нам нужно сгенерировать прямоугольную волну, чтобы контролировать звук, который он будет издавать. Частота прямоугольной волны, создаваемой на выводе 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() {
tone(buzzPin, frequency);
delay(timeOn);
noTone(buzzPin);
delay(timeOff);
}
Итак, активируем прямоугольную волну 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». Корпус сделан из конструктора LEGO.
Понравился Урок Подключаем зуммер к NodeMCU? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
|
Скетч управления зуммером с помощью NodeMCU. Библиотека Tone. .ino | 0 Kb | 749 |
Скачать
Вы можете скачать файл.
|
|
Пример кода (скетч) для генерирования трех разных тонов звучания.ino | 1 Kb | 756 |
Скачать
Вы можете скачать файл.
|
Комментарии