Оглавление:

Автонастройка: 7 шагов
Автонастройка: 7 шагов

Видео: Автонастройка: 7 шагов

Видео: Автонастройка: 7 шагов
Видео: Шаг 7. Настройка записи 2024, Июль
Anonim
Автонастройка
Автонастройка

Bienvenue dans notre projet Autotune

Notre équipe va vous présenter la réalisation de ce projet. Нотр équipe состоит из 3 инженеров Политехнической Сорбонны на EISE4 (4 года инженерного цикла и электронных информационных систем).

Notre projet состоит из одного человека, находящегося на микроуровне, имеет высокий уровень языка и работает с БПФ на экране компьютера. Возможный модификатор звука для громкости и звука.

C'est parti pour les explications !!

Шаг 1: Компоненты Utilisés

  • Карта DEO-Nano-SoC
  • Выход батареи 2 на 5V2A
  • Микро
  • Haut Parleur 8 Ом
  • Регулятор: MAX660
  • ИК-захват: GP2Y0E02A
  • Ampli Audio: LM386N-1 / NOPB
  • ЦАП: MCP4821-E / P
  • Диод: 1N4148
  • Транзитор: LND150N3-G / N-FET
  • 2 АОП: TL081C
  • Сопротивления
  • Конденсаторы
  • Wi-Fi: ESP8266EX
  • 4 переключателя
  • 3 светодиода

Шаг 2: Архитектура

Архитектура
Архитектура

Voici ci-dessus notre schéma bloc, представляющий архитектуру нотрского проекта Autotune.

Comme vous pouvez le voir, notre projet va pouvoir capter un son a l'aide du micro dont le signal analogique capté sera converti en un signal numérique dont ADC is intégré dans la carte FPGA. После того, как сигнал SERA modifié selon nos effets choisis à l'aide d'un capteur de near et des switchs, не был выбран. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.

Шаг 3: Partie Analogique

Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique

Notre partie analogie est composée de 2 Circuit:

Первоклассная схема, которая воспроизводит часть микро, представляет собой ответвление с CAN-де-ля карт FPGA, композитный усилитель усиления и пассивный фильтр после предотвращения повторного приема сигнала.

Двойная схема, которая представляет собой партию высокого языка, представляет собой ответвленную серию на выбор из карт ПЛИС, композитный ЦАП, делитель напряжения и усилитель звука.

Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.

Шаг 4: печатные платы Impression Des

Печатные платы Impression Des
Печатные платы Impression Des
Печатные платы Impression Des
Печатные платы Impression Des
Печатные платы Impression Des
Печатные платы Impression Des

Техническое обслуживание, все готово к печатной плате для печати и использования!

A l'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Голосовой корреспондент сайта Altium qui peut sureement vous aider!

Шаг 5: Partie Numérique

Partie Numérique
Partie Numérique

После того, как вы замените печатные платы, вам нужно будет выполнить разветвление всех ПЛИС по выбору!

Pour la partie numérique, nous avons créer un code C qui est séparé en deux en utilisant un thread. D'un coté, on recupère le signal on le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté, на calcule la fft и envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.

При использовании Qsys et quartus для разветвления HPS с разными композитами. При использовании пометки IP SPI для сообщения с данными и IP UART для сообщения по Wi-Fi.

Шаг 6: Le Code

Voici le lien où nous récuperé le code pour faire la fft.

При использовании этого кода для калькулятора la fft:

// Создание конфигурации и буферов для ввода и вывода для s (t) и S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL);

kiss_fft_cpx * in = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx));

для (j = 0; j <NFFT; j ++) {Значение = * h2p_lw_adc_addr; // возврат валюта происхождения платы микропроцессора [j].r = Value-2000.0; // при выходе на пенсию l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // примите во внимание временные условия, чтобы избежать повторного использования}

// Вычисление заместителя БПФ в зависимости от outkiss_fft (config, in, out); bzero (C_val, 110); // удалить нулевую таблицу с достаточным интервалом буфера, который будет отправлен по назначению (t = 0; t <(NFFT / 4); t ++) {// налить ограничитель буфера при выходе из ограничителя fft à des valeurs entre 0 et 9 tmp_log = 20 * (log (abs (out [t].r / 1000.0))) * 9;

tmp_log = tmp_log / 50; если (tmp_log <0) {tmp_log = 0; } если (tmp_log> 9) {tmp_log = 9; } sprintf (tmp_val, "% d", tmp_log); strcat (C_val, tmp_val); // ajoute au buffer la nouvelle valeur

} send_wifir (C_val); // в посланном буфере по Wi-Fi

функция отправить wifir:

void send_wifir (char * com_AT) {int число, z; for (z = 0; z <22000000; z ++) {} for (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; }}

Залейте инициализатор по меню Wi-Fi, используя следующий код:

send_wifi ("AT + RST / r / n"); // потребовать сброса à la cartesleep (3); // посетить qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // выбор режима cartesend_wifi ("AT + CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // если требуется, чтобы он был подключен к wifisleep (15); // при посещении qu'elle seconnectesend_wifi ("AT + CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // Требуется подключение к udp avec le serveur ouvert sur un autre ordinateursleep (3); // присутствовать на подключенииsend_wifi ("AT + CIPMODE = 1 / r / n"); // в этом режиме envoie en continueleep (3); send_wifi ("AT + CIPSEND / r / n"); // при начале передачи

функция отправки Wi-Fi:

void send_wifi (char * com_AT) {int num, z; for (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [число]; для (z = 0; z <2500000; z ++) {}}}

Code du serveur:

affichage de la fft:

int i, j, значение = 0; система («ясно»);

for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (table [j] * 4> (40 - i)) {if (таблица [j] * 4> 35) printf (КРАСНЫЙ "|" СБРОС); иначе, если (таблица [j] * 4> 28) printf (L_RED "|" СБРОС); иначе, если (таблица [j] * 4> 21) printf (YEL "|" СБРОС); иначе, если (таблица [j] * 4> 14) printf (L_YEL "|" СБРОС); иначе, если (таблица [j] * 4> 7) printf (L_GRN "|" СБРОС); иначе printf (GRN "|" СБРОС); } else printf (""); } printf ("\ п"); } else {printf ("0 Гц 2,5 Гц 5 Гц 7,5 кГц 10 кГц / n"); / * для (j = 0; j <(BUFSIZE / 2); j ++)

Рекомендуемые: