Категория: Arduino - проекты | Комментарии: 0
18 января 2016

Воспроизведение музыки c Arduino [Концепт озвучивания остановок]

Воспроизведение музыки с помощью Ардуино



Побывав недавно, впервые в жизни, в одном из самых красивых городов Украины, где люди чтят свои традиции, первое, что бросилось в глаза так это система контроля и компьютеризации общественного транспорта. Почти на каждой остановке установлено табло которое показывает время прибытия следующего общественного электротранспорта, а в кабине каждого трамвая установлена система мониторинга GPS и система оповещения остановок, параллельно воспроизводя праздничную музыку между длинными расстояниями.

В родном городе присутствует только система мониторинга GPS, но увы она используется в целях предприятий. Вход в систему закрыт для сторонних пользователей. Речь идет о государственном электро транспорте. Вернувшись домой возникла идея за час создать нечто подобное. А если конкретнее, то можем рассмотреть грубую систему голосового оповещения остановок без участия водителя. И просто пример воспроизведения звука на Ардуино NANO.
Перечитав всего несколько сайтов со статьями по Ардуино в голове возник вывод что это очень легко сделать. Для воспроизведения необходима мелодия, флешка, адаптер для флешки, и сама ардуина нано (Потому что маленькая). Динамик необходим для тестирования звука.

Сразу о подключении. На фото изображен 3.5 джек для подключения колонок, и в нем добавлен резистор, что бы аудиосигнал был с амплитудой не 5 В, а 1.2 В как обычно используется. Управление происходит с помощью обычного транзисторного ключа. Схема приведена ниже на рисунке.

подключение динамика ардуино воспроизведение музыки ардуино



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

Основные нюансы:
Флешка должна быть отформатированная в FAT32
Аудио файлы должны быть с частотой дискретизации 16000 ГЦ
Аудио файлы должны быть МОНО, а не стерео.
Аудио файлы должны быть 8 бит
Аудио файлы должны быть в формате WAV

Моно нам как раз подходит, стерео в городском транспорте мы не скоро дождемся, да и не проблема это.
Если вы собираетесь записывать аудио как я, то советую выбирать программу "Adobe Audition" любой версии. И записать голос легко и конвертирует в любой формат.
В интернете дополнительно советуют программу (WSRC - "Wav Sample Rate Converter") очень простой бесплатный конвертер.

После записи голоса и подгонки к нужным параметрам аудио файлы необходимо закинуть на флешку (FAT32).

Далее ознакомимся с библиотекой которая поможет нам воспроизводить файлы. Для воспроизведения используется библиотека TMRpcm. Для воспроизведения музыка ардуиной существует по крайней мере еще 2 библиотеки, но они предполагают конвертирования аудио файлов в текст.
Так вот TMRpcm воспроизводит непосредственно файлы Wav. Останавливаться на принципе воспроизведения не будем так как на официальном сайте (репозитории) все хорошо описано.
Библиотека TMRpcm поддерживает почти все дуины которые работают на 328 микроконтроллере.

Самое время по упражняться в английском.
Основные функции библиотеки:
  1. audio.play("filename"); plays a file
  2. audio.play("filename",30); plays a file starting at 30 seconds into the track
  3. audio.speakerPin = 11; set to 5,6,11 or 46 for Mega, 9 for Uno, Nano, etc.
  4. audio.disable(); disables the timer on output pin and stops the music
  5. audio.stopPlayback(); stops the music, but leaves the timer running
  6. audio.isPlaying(); returns 1 if music playing, 0 if not
  7. audio.pause(); pauses/unpauses playback
  8. audio.quality(1); Set 1 for 2x oversampling
  9. audio.volume(0); 1(up) or 0(down) to control volume
  10. audio.setVolume(0); 0 to 7. Set volume level
  11. audio.loop(1); 0 or 1. Can be changed during playback for full control of looping.
Скачать последнюю версию библиотеки TMRpcm - она использовалась для теста.
*Библиотека устанавливается в "Скетч - Подключить библиотеку - Добавить .ZIP библиотеку"

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

В итоге нам надо просто воспроизвести аудио файл. А в какой время воспроизводить по каким условиям это может определить любой школьник прописав условия в коде программы.
  1. #include <pcmConfig.h>
  2. #include <pcmRF.h>
  3. #include <TMRpcm.h>
  4. #include <SPI.h> //Адаптер флешки подключается как в предыдущей статье
  5. #include <SD.h>
  6. #define SD_ChipSelectPin 3 //Определение 3го пина для управления адаптером флешки
  7. #include <TMRpcm.h>
  8. TMRpcm tmrpcm; //Обьект класса TMRpcm
  9. void setup(){
  10. tmrpcm.speakerPin = 4; //Определение пина для управляюшего сигнала для транзисторного ключа
  11. if (!SD.begin(SD_ChipSelectPin)) { //Проверка инициализации флешки
  12. return;
  13. }
  14. tmrpcm.volume(4); //Как видно выше из функций - это громкость.
  15. }
  16. void loop(){
  17. tmrpcm.play("Zupinka4.wav"); //ОБОЖЕ МОЙ. Всего навсего одна строчка воспроизводит аудио файл с флешки
  18. delay(10000);
  19. }

У кого возникли трудности с подключением адаптера к ардуино нано - Подключение адаптера для MicroSD Flash Arduino

Записав скетч в ардуину я получил заветные слова "Наступна зупинка Площа Свободи".
Кто поверил в идею - необходимо очнуться. Идея с остановками полностью абстрактна, местные власти не возьмут в использование само сборочные схемы с проводами и ручным воспроизведением. Но все же в моем городе группа студентов одного технического ВУЗа занимается подобными вещами. Разработать печатную плату для установки ардуины и пары выводов для кнопок и отпечатать корпус на 3D принтере - это не проблема. Но стоит ли...

Итог заключается в том что нет проблем в воспроизведении звука на Arduino. Для этого существует даже несколько библиотек.
Другие статьи по разделу:

anchore Сервопривод SG90 + Arduino. Подключение [180 градусов]


anchore Как я спал на датчике температуры DHT-11 для Arduino [Опыт 1]


anchore Домашний веб сервер на Аrduino. Температура и Реле [Проверенно]


anchore ЖКИ дисплей WH0802 подключение к Ардуино [Много проводов]



Новые изобретения инженеров и техников, дизайнеров и обычных людей, все то что может изменить наш мир к лучшему. Новая техника и оружие, спасателей и спецназа. Гаджеты и девайсы, устройства для отдыха и работы. Советы для экономии семейного состояния. Все гениальные изобретения в простом формате! Ведь "Все - Просто!"
Copyright © 2013–2017
Автоматизация и проектирование - 1injener.ru