Курс «Основы робототехники. Продвинутый уровень». Занятие 12
Модуль звука WTV020
Модуль позволяет проигрывать звуковые файлы (речь, музыку и прочие звуки) с SD карты, вставленной в модуль, под управлением Arduino (наподобие MP3-плейера). Может использоваться для реализации «голоса» робота, движения робота под музыку, звуков движений (езда машины, танка), имитации звуков оружия и т.д.
Подключение
Питание модуля от 3,3 Вольт! Пишут, что 5 В на питании может вывести из строя модуль и вставленную в него SD карту
Модуль получается запустить только с SD картой емкостью 2 Гб, отформатированной в FAT16. Карта емкостью 4 Гб не подошла, даже когда была отформатирована с меньшей емкостью. Скорее всего, SD карты с меньшей емкостью тоже будут работать, но рекомендуется использовать именно 2 Гб.
Звуковые файлы на SD карте должны быть в формате AD4 (для преобразования MP3 и WAV файлов в данный формат может использоваться, например, программа USBRecording Version 1.3) и иметь названия вида 0000.ad4, 0001.ad4, 0002.ad4 и т.д. В некоторых источниках пишут, что файлы WAV тоже могут проигрываться.
Если нет усилителя – на выход (4 и 5 контакты) можно подключать динамик, минимальное сопротивление – 8 Ом (но лучше немного побольше, у меня 8-омный динамик иногда «вешал» контроллер, с 16-омным такого не было). Качество звука сравнительно неплохое, установленный в корпус (коробку) динамик звучит со вполне приемлемой громкостью. Если нужен более громкий звук – используйте компьютерные колонки или схему усилителя (пример есть в конце занятия)
Нумерация пинов на модуле (стрелкой показана выемка на модуле)
Подключение пинов в режиме управления кнопками (проверка работоспособности модуля)
|
Пины платы | Название | Функция, описание |
DAC | Подключается на вход усилителя, колонки, если не подключен спикер. Другой контакт входа колонки – на землю. Хорошее качество звука | |
SPK+ speaker + | На них подключается пищалка (Speaker) или динамик. Динамик 8 Ом (по даташиту это минимальное допустимое сопротивление динамика), можно динамик бОльшего сопротивления | |
SPK- speaker - | ||
Gnd | Земля | |
Next | По нажатию играет первый файл (0000.ad4), затем второй и т.д. | |
Busy | Между ней и 16 можно подукючить светодиод+резистор на 470 Ом. Используется для отображения режима (светится – модуль ждет команды, не светится – проигрывает звук, если нет SD карты – светится непрерывно) | |
+3.3 V | Питание. Именно 3,3 вольта, пишут, что 5 вольт сожжет микросхему и SD карту |
Подключение пинов в режиме управления библиотекой Arduino Wtv020sd16p.h
Примечание: светодиод к пину 15 подключать не обязательно
Пины платы | Название | Функция, описание | Пины Arduino, используемые в примере |
/Reset reset | The pin number of the reset pin | ||
DAC | Подключается на вход колонки, если не подключен спикер. Другой контакт входа колонки – на землю. | – | |
SPK+ speaker + | На них подключается пищалка (Speaker). Или динамик | – | |
SPK- speaker - | – | ||
CLK clock | The pin number of the clock pin | ||
Gnd | Земля | Gnd | |
Data | The pin number of the data pin | ||
Busy | The pin number of the busy pin | ||
3.3V | Питание. Именно 3,3 вольта, пишут, что 5 вольт сожжет микросхему и SD карту | 3.3V |
Примечание 1: могут использоваться другие пины Arduino, они задаются в начале программы работы с модулем (см. пример в библиотеке)
|
Примечание 2: после подключения 8-омного динамика модуль иногда переставал работать в режиме программного управления (ничего не воспроизводил). После замены динамика на 16-омный данная ошибка перестала появляться, скорее всего, источник питания 3,3 В подключенной к нему Arduino Nano не тянул требуемую для 8-омного динамика мощность и контроллер непрерывно перезагружался
Примечание 3: иногда модулю требовалось время (видимо, для инициализации) и после включения он не сразу начинал воспроизводить файлы, а где-то через 30-60 секунд
Библиотека
На форуме Arduino https://forum.arduino.cc/index.php?PHPSESSID=7au0vpjfbke17kob1jsbtir2k3&topic=117009.0 выложена библиотека для управления данным модулем Wtv020sd16p.h. В библиотеке имеется пример кода, описания команд:
· wtv020sd16p. playVoice(0); – полностью проиграть файл с именем, соответствующим номеру в скобках (в данном случает 0000.ad4), после чего продолжить работу. То есть если после данной команды поставить delay(2000), он проиграет полностью файл, подождет 2 секунды, затем перейдет к следующим командам
· wtv020sd16p. asyncPlayVoice(0); – запустить воспроизведение файла с именем, соответствующим номеру в скобках (в данном случает 0000.ad4), после чего продолжить работу. То есть если после данной команды поставить delay(2000), затем какую-то другую команду звуковому модулю (остановить, проиграть другой файл), проиграются только первые 2 секунды файла 0000.ad4
· wtv020sd16p. stopVoice(); – остановить проигрывание текущего асинхронно проигрываемого файла
· wtv020sd16p. pauseVoice(); – поставить на паузу проигрывание текущего асинхронно проигрываемого файла. Следующий вызов этой команды снимает с паузы, проигрывание возобновляется с того же места, где было остановлено
|
· wtv020sd16p. mute (); – файл продолжает проигрываться, но громкость равна нулю
· wtv020sd16p. unmute (); – громкость возвращается к максимальному уровню
В библиотеке пока отсутствует, но предложены следующие команды для управления уровнем громкости звука (модуль, видимо, поддерживает 8 уровней громкости):
wtv020sd16p. asyncPlayVoice(0xFFF7); – устанавливает уровень громкости проигрываемого асинхронно в данный момент файла равным последней цифре (от 0 до 7): 7 – максимальная громкость (включена по умолчанию), 0 – звука нет. Взято из примера: