Оглавление:
- Шаг 1: Компоненты Utilisés
- Шаг 2: Архитектура
- Шаг 3: Partie Analogique
- Шаг 4: печатные платы Impression Des
- Шаг 5: Partie Numérique
- Шаг 6: Le Code
Видео: Автонастройка: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
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
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
Техническое обслуживание, все готово к печатной плате для печати и использования!
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
После того, как вы замените печатные платы, вам нужно будет выполнить разветвление всех ПЛИС по выбору!
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 ++)
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Играйте в Doom на своем IPod за 5 простых шагов !: 5 шагов
Играйте в Doom на своем IPod за 5 простых шагов!: Пошаговое руководство по двойной загрузке Rockbox на iPod, чтобы играть в Doom и десятки других игр. Это действительно легко сделать, но многие люди до сих пор удивляются, когда видят, как я играю дум на своем iPod, и путаются с инструкциями
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)