Оглавление:
- Шаг 1. Требования 1/3 - Оборудование
- Шаг 2: Требования 2/3 - Компоненты для вашей схемы
- Шаг 3. Требования 3/3 - Программное обеспечение
- Шаг 4: входная цепь
- Шаг 5: Выходная цепь
- Шаг 6: [ДОПОЛНИТЕЛЬНО] Создание печатных плат и компонентов для пайки
- Шаг 7: Настройка SoC
- Шаг 8: Программирование C HPS
- Шаг 9: Цифровое получение АЦП с карты
- Шаг 10: Расчет БПФ
- Шаг 11: отображение БПФ
- Шаг 12: Сборка
- Шаг 13: звуковые эффекты
- Шаг 14: [ДОПОЛНИТЕЛЬНО] Изготовление шлема
Видео: Спартанский шлем для изменения голоса: 14 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Привет! Мы - команда из 4 студентов Политехнической школы Сорбонского университета:
- Луи Бухер
- Билал Мелехи
- Бао Тинь Пиот
- Марко Лонгепе
Этот проект реализуется в рамках наших исследований и направлен на то, чтобы взять в руки ряд инструментов, а также продемонстрировать наши теоретические достижения.
Знаменитый объект приобретает вид шлема, напоминающего шлем героя некой видеоигры, имя которого будет потеряно. Что касается дизайна, у нас также есть экран, который отображает преобразование Фурье аудиосигнала, выходящего из динамика. Эта гарнитура предназначена для изменения голоса носителя в реальном времени с помощью ряда выбираемых эффектов.
Образовательные цели:
- Захват звука с микрофона
- Усиливайте, фильтруйте, оцифровывайте сигнал
- Реализуйте БПФ сигнала
- Показать это БПФ на экране
- Синтез сигнала
- Убрать звук из динамика
- Реализуйте эффекты звукового сопровождения (реверберация, эхо и т. Д.)
Теперь, когда мы разместили фон и представили проект, пора его заполучить!
Шаг 1. Требования 1/3 - Оборудование
Чтобы успешно собрать шлем, нам понадобится какое-то оборудование для его работы.
- Плата для разработки DE0-Nano-SoC от Terasic + Adafruit TFT LCD Screen (Arduino)
- Доступ к 3D-принтеру для изготовления шлема (если вы студент университета, переместитесь поближе к своему университету, в некоторых есть лаборатории, доступные для студентов)
- Компьютер с подключением к Интернету и минимумом подключения (USB, Ethernet). Ваш компьютер также должен иметь мощный процессор, поскольку компиляция программ в Qsys занимает много времени.
- (Не требуется) Принтер, который делает печатные платы (PCB) из файлов Gerber, чтобы уменьшить размер схемы + паяльник для размещения компонентов на печатной плате.
- (Настоятельно рекомендуется): Хороший кофе, чтобы получить удовольствие от работы с нашим Руководством:)
Шаг 2: Требования 2/3 - Компоненты для вашей схемы
Вот компоненты, необходимые для вашей схемы:
- Усилитель звука Texas Instrument LM386 AB класса
- Хлебная Доска
- Набор кабелей «папа-папа», «папа-мама»
- LM358P Цифро-аналоговый преобразователь (ЦАП)
- Оратор
- Маленький микрофон, используемый в аналоговой схеме
- Игровой набор резисторов от 1кОм до 220кОм
- Конденсатор 1,5 нФ
- Конденсатор 50 нФ
- Конденсатор 100 нФ
- Конденсатор 100 мкФ
- Конденсатор 220 мкФ
- Конденсаторы x4 10uF
Шаг 3. Требования 3/3 - Программное обеспечение
И последнее, но не менее важное: вам понадобится программное обеспечение:
- Quartus 15.1: облегченная версия
- Компилятор C (например, gcc)
- Altium для проектирования печатных плат
- Встроенный пакет SoC Altera для связи с картой SoC
- Шпатлевка
Шаг 4: входная цепь
Построим схему. Используйте приведенное выше изображение схемы, чтобы собрать ее на макетной плате. Вы также увидите изображение BreadBoard и схемы внутри, чтобы увидеть, как соединены контакты. Вся схема питается постоянным током 5 В. Для этого можно использовать аккумулятор на 5 В с преобразователем USB-B или функциональный генератор.
Некоторые напоминания:
- Электропитание 5В и земля подключены на отдельных горизонтальных линиях макета.
- Если вы хотите соединить 2 компонента параллельно, поместите их в общую линию макета.
- Если вы хотите подключить 2 последовательных компонента, компоненты должны иметь только один контакт на общей линии макета.
Не стесняйтесь смотреть специальный учебник о том, как использовать макетную плату и смонтировать на ней схему. Также не забудьте внимательно прочитать расположение контактов аудиоусилителя LM358P (см. Рисунок выше).
Шаг 5: Выходная цепь
Совершенно те же инструкции, что и в шаге 4. Четыре входа: SDI, а не CS, SCK, не LDAC, поступают от вашей платы DE0-Nano-Soc. Позже мы увидим, как их генерировать.
Не забудьте внимательно прочитать расположение выводов аудиоусилителя LM386 (см. Рисунок выше).
Шаг 6: [ДОПОЛНИТЕЛЬНО] Создание печатных плат и компонентов для пайки
Если вам посчастливилось иметь принтер для печатных плат или вы можете им пользоваться, мы собираемся создать нашу собственную печатную плату (PCB). Обратите внимание, что этот шаг не является обязательным. Этот шаг состоит только в том, чтобы переместить вашу схему с макета на печатную плату.
Вам понадобятся эти 2 файла GERBER.
Эти файлы были созданы на Altium. Используйте их в программном обеспечении вашего принтера на печатной плате, чтобы распечатать печатную плату. Получив печатную плату, убедитесь, что она чистая и дорожки напечатаны правильно.
А теперь самое главное: пайка. На двух картинках выше показана схема на печатной плате. У каждого компонента есть имена (R6, C4, MK1 и т. Д.). На рисунках в шагах 4 и 5 показаны параметры компонентов (сопротивление, проводимость …). Поместите каждый компонент с макета на печатную плату в соответствии с их названиями.
После того, как вы припаяли все паяльником, проверьте все компоненты с помощью вольтметра, чтобы проверить, нет ли короткого замыкания.
Шаг 7: Настройка SoC
Что касается настройки SoC, вам нужно будет запустить некоторые команды и сценарии, включенные в встроенный пакет SoC, в терминале. Для этого вам нужно будет добавить $ PATH. PATH используются в терминале, чтобы сказать, искать файл в каталогах, заданных путем, когда вы запускаете команду. Для этого введите следующую командную строку:
экспорт PATH = / cygdrive / c / altera_lite / 15.1 / quartus / sopc_builder / bin: $ PATH
Затем введите командную строку для создания заголовков из файла sof. Вы получите файл sof, скомпилировав свой проект на Quartus. Для этого введите:./generate_header.
Шаг 8: Программирование C HPS
В этой части нам нужно реализовать 2 вещи, а именно прочитать, прочитать значение АЦП и записать его в SPI.
1. Считайте значение АЦП.
Адрес памяти, в которой содержится АЦП, напрямую недоступен, фактически система Linux, присутствующая на карте, устанавливает абстракцию памяти. Чтобы действительно получить доступ к адресу ADC, мы будем использовать функцию mmap.
"h2p_lw_spi_addr = virtual_base + ((длинный беззнаковый) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (беззнаковый длинный) (HW_REGS_MASK));»
Эта инструкция позволяет добавить смещение в начало базового адреса, чтобы достичь адреса памяти, выделенной для АЦП, и выполнить с полученным адресом логическое И для учета маскировки.
После этого останется только разыменовать указатель в программе, чтобы получить его значение.
2. Запишите значение АЦП в SPI.
Действия идентичны, на этот раз мы даем mmap смещение, чтобы попасть на адрес, выделенный SPI. При записи в SPI в технической документации указывается, что вы должны записать по адресу + 1 значение adc.
"* (h2p_lw_spi_addr + 1) = ((0x1 << 12) | * h2p_lw_adc_addr);"
Эта инструкция позволяет вам писать в SPI. Действительно, бит 4, поэтому 1 << 12, - это бит, который позволяет активировать SPI. Таким образом, с помощью логического ИЛИ мы передаем SPI как бит активации, так и значение АЦП.
Шаг 9: Цифровое получение АЦП с карты
Прежде всего, вам нужно будет установить IP-адрес Ethernet вашего компьютера через Панель управления -> Сеть -> Card Parmesals. Выберите интерфейс Ethernet карты, свойство, адрес ipv4 и введите фиксированный IP-адрес, маску и т. Д.
Затем подключите карту со стороны разъема питания с помощью кабеля micro USB. Откройте программатор Quartus и запустите экспорт. Эта манипуляция будет повторяться после каждого выключения карты.
Замените штекерный кабель micro USB, чтобы на этот раз подключить его к разъему Ethernet. Теперь с Putty необходимо будет подключиться к карте по последовательному каналу. Конфигурация видна на фотографиях, идея состоит в том, чтобы заменить COM5 на COM, за которым следует номер, который вы можете найти в диспетчере устройств (щелкните правой кнопкой мыши логотип Windows, чтобы открыть его).
Нажмите Enter, вы подключены.
Информация для перезапуска проекта: - Исправить IP-адрес Ethernet, соответствующий карте - Включите карту, каждый раз, когда вы включаете питание, необходимо с помощью "программы" под quartus ставить проект, скомпилированный в карте. Это делается через порт micro-USB - чтобы иметь возможность отображать результат программы, мы используем больше micro USB, но UART - с замазкой, настроенной для последовательного COM5 (или периферийных устройств 6 часов). Подключитесь к карте. - Установить пароль (passwd) - Установить IP-адрес ifconfig ethxx IPchoice (IP недалеко от того, что для eth на ПК) - Сгенерировать заголовок в соответствии с Qsys со встроенным терминалом (экспорт PATH) - make - scp l exec в map - выполнить под шпатлевку прогу
Шаг 10: Расчет БПФ
Чтобы получить быстрое преобразование Фурье в нашей программе на C, мы будем использовать библиотеку, написанную Марком Боргердингом: Kiss FFT. Вы можете скачать библиотеку здесь: https://kissfft.sourceforge.net/. Применение БПФ к сигналу необходимо для изменения и применения эффектов сигнала. Он также может служить для отображения спектра сигнала.
Первый шаг в вашей программе на C состоит в выделении памяти для хранения результата БПФ. Размер памяти зависит от количества точек, используемых для вычисления БПФ. Чем больше у вас очков, тем точнее будет БПФ. Однако программа будет работать медленнее и будет использовать больше памяти. Обратите внимание, что вы получите два массива от функции kiss_fft: вход и выход функции (cx_in и cx_out)
Как только наш массив заполнится новыми значениями БПФ, т.е. когда r = Win - 1, мы обрабатываем БПФ. Что касается дисплея, мы отображаем только положительную часть спектра, так как есть симметрия между отрицательной и положительной частями.
Что касается горизонтальной оси, мы уменьшаем пиковые значения на 100 * высота / (высота²), чтобы различать пики основных частот.
Мы используем системный вызов using usleep, чтобы определить частоту чтения значений АЦП. Эта частота в настоящее время установлена на 1,5 Гц.
Шаг 11: отображение БПФ
Основываясь на примере, представленном на ЖК-экране Adafruit TFT, доступном здесь: https://www.terasic.com/downloads/cd-rom/de0-nano-s… мы запрограммировали NIOS нашего Совета, чтобы он мог читать значение АЦП.
Таким образом, регистр АЦП используется совместно NIOS и HPS, потому что значения АЦП будут использоваться для отображения БПФ на экране NIOS, и те же самые значения будут записаны в SPI для вывода на плату и, наконец, преобразования. ЦАП для получения аналогового сигнала.
Шаг 12: Сборка
Мы почти закончили! Вам нужно будет собрать каждую часть проекта (входная цепь, выходная цепь и плата). Убедитесь, что детали подключены к правильным контактам в соответствии с проектом Quartus.
- Входная цепь будет отправлять аудиосигнал, захваченный микрофоном, усиленный, отфильтрованный и смещенный.
- Программа C, присутствующая на карте, будет считывать значения АЦП, как мы видели ранее, и записывать их в SPI, чтобы мы могли восстановить значение на GPIO карты.
- Затем выходной GPIO SPI будет передавать информацию, которая будет декодирована нашим ЦАП и усилена путем бега до динамика.
Шаг 13: звуковые эффекты
Остался единственный шаг - звуковые эффекты.
Возможные эффекты:
- Фильтр высоких частот
- Фильтр низких частот
- …
Вы можете переключаться между эффектами с помощью кнопки. Эта кнопка изменяет переменную в нашей программе на C, поэтому она может применить правильный эффект.
Шаг 14: [ДОПОЛНИТЕЛЬНО] Изготовление шлема
Вот мы и находимся на самом ручном этапе проекта:
- Сначала мы склеили различные части шлема, напечатанные на 3D-принтере.
- Чтобы заполнить промежутки между склеенными деталями, мы добавили отделку с помощью 3D-ручки.
- Мы отполировали пустоты, заполненные пером и шлемом в целом, чтобы картина хорошо держалась после этого.
- Мы покрасили шлем в два слоя: первый - антрацитово-черный, крупным планом, второй - основного зеленого цвета, чтобы придать оттенки более темного зеленого.
- Наконец, мы напечатали логотип нашей школы на боковой стороне шлема.
Рекомендуемые:
Построение графика изменения температуры в зависимости от изменения климата в Python: 6 шагов
Построение графика изменения температуры от изменения климата в Python: изменение климата - большая проблема. И многие люди сейчас не знают, насколько он вырос. В этом руководстве мы построим график изменения температуры климата из-за изменения климата. В качестве шпаргалки вы можете просмотреть файл python ниже
Маска для изменения лица - будь кем угодно: 14 шагов (с изображениями)
Маска для изменения лица - будь кем угодно: Что вы делаете, когда не можете решить, кем хотите стать на Хэллоуин? Будь всем. Проекционная маска состоит из белой маски, напечатанной на 3D-принтере, малинового пи, крошечного проектора и батарейного блока. Он способен проецировать все и вся
Носимая технология: перчатка для изменения голоса: 7 шагов
Носимая техника: перчатка, изменяющая голос: Ну, похоже, перчатки с невероятной силой в наши дни в моде. Хотя Перчатка Бесконечности Таноса - довольно мощная перчатка, мы хотели создать перчатку, которая могла бы делать что-то еще более замечательное: изменять голос владельца в реальном времени
Полки коробки для изменения цвета со светодиодными лентами и Arduino: 5 шагов (с изображениями)
Полки с коробками для изменения цвета со светодиодными лентами и Arduino: все началось с того, что мне нужно было дополнительное хранилище рядом и над столом, но я хотел придать ему особый дизайн. Почему бы не использовать эти удивительные светодиодные ленты, которые можно индивидуально адресовать и выбрать любой цвет? Я дам несколько замечаний о самой полке в
Чехол для изменения цвета: 13 шагов (с изображениями)
Чехол для смены цвета: руководство по воссозданию футляра для смены цвета