Цель этого проекта заключается в создании платы расширения для платформы Arduino, которая позволит реализовать аудио и голосовой интерфейс для многих приложений на микроконтроллерах (Рисунок 1). Такие возможности обеспечиваются, в основном, использованием однокристальной микросхемы записи/воспроизведения голосовых сообщений ISD1790PY из серии ChipCorder производства компании Winbond.
Голосовые функции и функции преобразования текста в речь (text-to-speech, TTS) в современных устройствах на микроконтроллерах получили достаточно широкое распространение, они встраиваются в системы сигнализации и безопасности, используются в общих функциях управления в системах домашней автоматизации. К примеру, можно сконструировать систему безопасности с голосовым оповещением, которое включается в случае, если человек или транспортное средство приближается к охраняемой территории. Область применения ограничена только вашим воображением.
Интеграция платы расширения Voice Shield с платформой Arduino стала возможной благодаря программной библиотеке функций управления микросхемой ISD1790PY, доступной для скачивания в секции загрузок.
Принципиальная схема
Принципиальная схема платы расширения Voice Shield изображена на Рисунке 2. Хотя плата может работать автономно, более высокую функциональность можно получить управлением через последовательный интерфейс SPI. Подключив плату к платформе Arduino (микроконтроллеру) можно реализовать синтез речи.
Микросхема ISD1790PY имеет вход микрофона со схемой автоматического усиления (ACG, automatic gain control), выход на динамики 8 Ом и второй аналоговый выход, который может быть сконфигурирован для подключения к внешнему усилителю. Также для пользователя доступны управление громкостью, схема подавления помех, сглаживающий фильтр и функция оповещения о наличии новых сообщений (vAlert).
Основные характеристики микросхемы ISD1790PY:
однокристальное решение со встроенной системой управления сообщениями;
частота преобразования выбирается пользователем с помощью внешнего резистора;
возможность выбора длительности сообщений;
сигнализация сообщений и режимов работы:
четыре выборочных звуковых эффекта для звуковой сигнализации;
опциональная голосовая сигнализации (vAlert) наличия новых сообщений;
управление светодиодным индикатором, который непрерывно включен во время записи и мигает во время воспроизведения, переходов и стирания;
поддержка интерфейса SPI:
два входных канала;
два выходных канала;
дифференциальный усилитель мощности класса D (ШИМ);
однотактный выходной каскад для работы с внешним усилителем ЗЧ;
высококачественное, естественное воспроизведение голоса и музыки;
напряжение питания 2.4…5.5В;
хранение сообщений в течение 100 лет (типовое значение);
100 тыс. циклов записи (типовое значение).
Для подтверждения выполнения основных функций можно использовать встроенные возможности микросхемы. Пользователь может включить независимое звуковое подтверждение следующих операций: начало записи, остановка записи, удаление записи, переход к следующей записи, сброс памяти и vAlert. Воспроизведение встроенных звуковых эффектов осуществляется на выходе AUD/AUX. Расположение выводов микросхемы в корпусе PDIP/SOIC изображено на Рисунке 3.
Назначение кнопок управления P1-P6:
P1 (VOL) – подстройка громкости во время воспроизведения;
P2 (FT) – включает режим прослушивания звука, поступающего на аналоговый вход ANIN;
P3 (PLAY), P4 (REC) – управление воспроизведением и записью соответственно;
P5 (ERASE) – очищает память;
P6 (FWD) – если в памяти содержится несколько сообщений – для перемещения от одной записи к другой. В этом случае нажатие кнопки P5 (ERASE) приведет к удалению текущего сообщения.
Чтобы понять действие кнопки стирания записи, рассмотрим пример. Если в память мы записали 5 сообщений и с помощью кнопки P6 переместились на третье сообщение, то нажатие кнопки P5 будет означать очистку области памяти с текущего адреса до адреса начала четвертого сообщения. Это же касается кнопок управления воспроизведением и записью.
Для хранения голосовых сообщений или звуков в микросхеме используется внутренняя память, которая автоматически разбивается на разделы при записи нескольких сообщений (каждый раздел определяется конкретным адресом). В этом случае адресация осуществляется только по интерфейсу SPI (к команде добавляется нужный адрес). Запись начинается по нажатию кнопки P4, при отпускании кнопки запись останавливается.
Представим себе, что память микросхемы пуста. Нажимаем кнопку P4 (REC) – начинается запись сообщения, отпускаем кнопку – запись останавливается и автоматически в соответствующий адрес прописывается маркер конца сообщения (EOM, End Of Message). При нажатии на кнопку воспроизведения чтение данных начинается с последнего маркера и заканчивается при достижении следующего.
Запись сообщений осуществляется с микрофона (MIC), подключенного к дифференциальному входу микросхемы через два блокировочных конденсатора C12 и C13. Конденсатор C10 предназначен для фильтрации напряжения питания.
Дополнительный входной аудио канал IN может использоваться для записи от любого внешнего источника (используется стерео разъем, но сигналы левого и правого каналов подключены через конденсаторы С17 и С18 к одному выводу микросхемы ANIN). Расположение компонентов на печатной плате изображено на Рисунке 4, подключение платы Voice Shield к платформе Arduino Uno — на Рисунке 5, спсиок используемых компонентов и их номиналы указаны в Таблице 1.
Рис.5. Подключение платы расширения Voice Shield к плате Arduino Uno
Максимальное время записи определяется частотой преобразования, которая задается внешним резистором R4. В нашем случае номинал резистора 82 кОм, что соответствует частоте преобразования 8 кГц, следовательно, максимальная длительность сообщения составит 90 с (см. техническое описание на микросхему).
Питание на плату расширения поступает с платформы Arduino (выводы 5 V и GND). Три линии питания (аналоговая часть VCCA, цифровая часть VCCD, питание усилителя мощности VCCP) подключены к источнику питания Arduino 5 В, фильтрующие конденсаторы необходимо расположить как можно ближе к выводам микросхемы. Эти конденсаторы необходимы для подавления помех, связанных с процессом аналого-цифрового преобразования или с работой усилителя мощности.
Для управления функциями платы расширения была разработана программа для микроконтроллера и специальное приложение для персонального компьютера (Рисунок 6). Приложение для ПК может использоваться для управления процессом записи сообщений или звуков в микросхему ISD1790PY, а также для загрузки музыки или голосовых сообщений непосредственно с ПК. В последнем случае файлы должны быть сохранены на компьютере в формате mp3 или WAV. Для работы приложения требуется Microsoft .NET Framework 4.
После установки и запуска программы первоначально необходимо в настройках выбрать COM-порт, к которому подключена плата Arduino, и установить нужные параметры работы порта. После сохранения параметров возвращаемся в главное окно и вверху слева выбираем тип микросхемы установленной на плате расширения из выпадающего списка. Далее необходимо выбрать значение резистора, который задает рабочую частоту осциллятора микросхемы, и, соответственно, максимальное время, доступное для записи сообщений (по умолчанию установлено 82 кОм).
В окне программы, ниже области информации о микросхеме, находятся инструменты для работы с файлами, с помощью которых пользователь может выбрать номер сообщения, которое будет записано в микросхему, а также импортировать mp3 и wav файлы, предварительно их прослушав. Если опция «Automatically calculate memory locations» включена, то программа автоматически определяет необходимый объем памяти для сообщений.
По нажатию кнопки «Add/Refresh» файл добавляется в список с правой стороны. Панель кнопок, расположенных над списком добавленных файлов, позволяет выполнять различные действия. После подготовки списка воспроизведения можно начать передачу сообщений в микросхему ISD1790PY, нажав кнопку «Play Audio Tracks».
Загрузки
Библиотека функций управления микросхемами серии ISD1700 — Скачать
Исходный код программы управления платой расширения и установочный файл приложения для ПК — Скачать