Inhaltsverzeichnis:
- Schritt 1: Anforderungen 1/3 - Hardware
- Schritt 2: Anforderungen 2/3 - Komponenten für Ihre Schaltung
- Schritt 3: Anforderungen 3/3 - Software
- Schritt 4: Eingangsschaltung
- Schritt 5: Ausgangsschaltung
- Schritt 6: [OPTIONAL] Erstellen von Leiterplatten und Lötkomponenten
- Schritt 7: SoC-Setup
- Schritt 8: C HPS programmieren
- Schritt 9: Digitale Erfassung des ADC von der Karte
- Schritt 10: FFT-Berechnung
- Schritt 11: Anzeige der FFT
- Schritt 12: Montage
- Schritt 13: Soundeffekte
- Schritt 14: [OPTIONAL] Herstellung des Helms
Video: Spartan Voice Changer Helm - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Hallo! Wir sind ein Team von 4 Studenten der Polytechnischen Schule der Universität Sorbonne:
- Louis Buchert
- Bilal Melehi
- Bao Tinh Piot
- Marco Longépe
Dieses Projekt wird im Rahmen unseres Studiums realisiert und zielt darauf ab, eine Reihe von Werkzeugen in die Hand zu nehmen und unsere theoretischen Leistungen zu demonstrieren.
Das berühmte Objekt nimmt die Gestalt eines Helms an, der dem Helden eines bestimmten Videospiels ähnelt, dessen Name verloren geht. Für die Designseite haben wir auch einen Bildschirm, der die Fourier-Transformation des aus dem Lautsprecher kommenden Audiosignals anzeigt. Der Zweck dieses Headsets besteht darin, die Stimme des Trägers in Echtzeit mit einer Reihe von wählbaren Effekten zu ändern.
Bildungsziele:
- Nehmen Sie den Ton von einem Mikrofon auf
- Verstärken, filtern, digitalisieren Sie das Signal
- Erkennen Sie die FFT eines Signals
- Diese FFT auf einem Bildschirm anzeigen
- Signalsynthese
- Nehmen Sie einen Ton aus einem Lautsprecher
- Effekte auf den Audiosound realisieren (Nachhall, Echo, etc …)
Nachdem wir nun den Hintergrund erstellt und das Projekt vorgestellt haben, ist es an der Zeit, es in die Hände zu bekommen!
Schritt 1: Anforderungen 1/3 - Hardware
Um Ihren Helm erfolgreich zu bauen, benötigen wir einige Hardware, um das Gerät zu betreiben.
- DE0-Nano-SoC-Entwicklungsboard von Terasic + Adafruit TFT-LCD-Bildschirm (Arduino)
- Zugang zu einem 3D-Drucker, um den Helm herzustellen (Wenn Sie ein Universitätsstudent sind, der näher an Ihre Universität zieht, haben einige Labors für Studenten zugänglich)
- Ein Computer mit Internetverbindung und minimaler Konnektivität (USB, Ethernet). Ihr Computer muss auch über einen starken Prozessor verfügen, da das Kompilieren von Programmen auf Qsys viel Zeit in Anspruch nimmt.
- (Nicht erforderlich) Ein Drucker, der gedruckte Leiterplatten (PCB) aus Gerber-Dateien herstellt, um die Schaltungsgröße zu verkleinern + ein Lötkolben, um die Komponenten auf die Leiterplatte zu setzen.
- (Dringend empfohlen): Ein guter Kaffee, um Ihre Arbeit mit unserem Instructable zu genießen:)
Schritt 2: Anforderungen 2/3 - Komponenten für Ihre Schaltung
Hier sind die Komponenten, die für Ihre Schaltung benötigt werden:
- Texas Instrument LM386 AB-Klasse Audioverstärker
- Brotbrett
- Kabelsatz männlich-männlich, männlich-weiblich
- LM358P Digital-Analoh-Wandler (DAC)
- Lautsprecher
- Kleines Mikrofon, das in analoger Schaltung verwendet wird
- Ein Spielset mit Widerständen von 1kOhm bis 220kOhm
- Kondensator 1,5nF
- Kondensator 50nF
- Kondensator 100nF
- Kondensator 100uF
- Kondensator 220uF
- x4 Kondensatoren 10uF
Schritt 3: Anforderungen 3/3 - Software
Zu guter Letzt benötigen Sie Software:
- Quartus 15.1: Lite-Version
- Ein C-Compiler (z. B. gcc)
- Altium für PCB-Design
-
Die SoC-Embedded-Suite von Altera zur Kommunikation mit der SoC-Karte
- Kitt
Schritt 4: Eingangsschaltung
Bauen wir die Schaltung auf. Verwenden Sie das obige Bild der Schaltung, um sie auf Ihrem Steckbrett zu montieren. Sie sehen auch das Bild des BreadBoards und der Schaltung im Inneren, um zu sehen, wie die Pins verbunden sind. Die gesamte Schaltung wird mit 5V Gleichstrom (DC) versorgt. Dazu können Sie eine 5V-Batterie mit einem USB-B-Konverter oder einen Funktionsgenerator verwenden.
Einige Erinnerungen:
- 5V-Netzteil und Masse sind auf separaten horizontalen Leitungen des Steckbretts verbunden
- Wenn Sie 2 Komponenten parallel schalten möchten, legen Sie sie in eine gemeinsame Linie des Steckbretts
- Wenn Sie 2 serielle Komponenten anschließen möchten, dürfen die Komponenten nur einen Pin in einer gemeinsamen Linie des Steckbretts haben.
Zögern Sie nicht, sich ein spezielles Tutorial zur Verwendung eines Steckbretts anzusehen und eine Schaltung darauf aufzubauen. Vergessen Sie auch nicht, die Pin-Position des LM358P-Audioverstärkers sorgfältig zu lesen (siehe Bild oben)
Schritt 5: Ausgangsschaltung
Ganz die gleichen Anweisungen wie in Schritt 4. Die vier Eingänge: SDI, nicht CS, SCK, nicht LDAC stammen von Ihrem DE0-Nano-Soc-Board. Wir werden später sehen, wie man sie generiert.
Vergessen Sie nicht, die Pin-Positionen des LM386-Audioverstärkers sorgfältig zu lesen (siehe Bild oben)
Schritt 6: [OPTIONAL] Erstellen von Leiterplatten und Lötkomponenten
Wenn Sie das Glück haben, einen Leiterplattendrucker zu besitzen oder einen zu verwenden, werden wir unsere eigene Leiterplatte (PCB) herstellen. Beachten Sie, dass dieser Schritt optional ist. Dieser Schritt besteht nur darin, Ihre Schaltung von einem Steckbrett auf eine Leiterplatte zu verschieben.
Sie benötigen diese 2 GERBER-Dateien.
Diese Dateien wurden auf Altium erstellt. Verwenden Sie sie in Ihrer PCB-Druckersoftware, um Ihre PCB zu drucken. Stellen Sie nach Erhalt Ihrer Leiterplatte sicher, dass Ihre Leiterplatte sauber ist und die Spuren korrekt gedruckt sind.
Jetzt kommt der eigentliche Deal: Löten. Die 2 Bilder oben sind die Karte der Schaltung auf der Platine. Jede Komponente hat Namen (R6, C4, MK1 usw.). Die Bilder in Schritt 4 und 5 zeigen die Komponentenparameter (Widerstand, Leitwert…). Platzieren Sie jede Komponente von Ihrem Steckbrett entsprechend ihren Namen auf der Platine.
Nachdem Sie alles mit Ihrem Lötkolben gelötet haben, testen Sie alle Komponenten mit einem Voltmeter, um zu überprüfen, ob ein Kurzschluss vorliegt.
Schritt 7: SoC-Setup
In Bezug auf das SoC-Setup müssen Sie einige Befehle und Skripte ausführen, die in der SoC-Embedded-Suite in einem Terminal enthalten sind. Dazu müssen Sie $PATH hinzufügen. PATH werden innerhalb eines Terminals verwendet, um nach einer Datei in den von path angegebenen Verzeichnissen zu suchen, wenn Sie einen Befehl ausführen. Geben Sie dazu die folgende Befehlszeile ein:
export PATH=/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin:$PFAD
Geben Sie dann die Befehlszeile ein, um Header aus einer sof-Datei zu generieren. Sie erhalten die sof-Datei, indem Sie Ihr Projekt auf Quartus kompilieren. Geben Sie dazu Folgendes ein:./generate_header.
Schritt 8: C HPS programmieren
Wir müssen in diesem Teil 2 Dinge realisieren, nämlich den Wert des ADC lesen und in den SPI schreiben.
1. Lesen Sie den Wert des ADC
Die Adresse des Speichers, in dem der ADC enthalten ist, ist nicht direkt zugänglich, tatsächlich baut das auf der Karte vorhandene Linux-System eine Abstraktion des Speichers auf. Um wirklich auf die ADC-Adresse zuzugreifen, verwenden wir die mmap-Funktion.
"h2p_lw_spi_addr=virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long)(HW_REGS_MASK));"
Dieser Befehl ermöglicht es, am Anfang der Basisadresse einen Offset hinzuzufügen, um die Adresse des dem ADC zugewiesenen Speichers zu erreichen, und an der resultierenden Adresse ein logisches UND auszuführen, um die Maskierung zu berücksichtigen.
Danach ist es nur noch notwendig, den Zeiger im Programm zu dereferenzieren, um seinen Wert zu erhalten.
2. Schreiben Sie den Wert des ADC in den SPI
Die Manipulation ist identisch, diesmal geben wir dem mmap den Offset, um auf der vom SPI zugewiesenen Adresse zu landen. Beim Schreiben in den SPI gibt die technische Dokumentation an, dass Sie an die Adresse + 1 den Wert des ADC schreiben müssen.
"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"
Mit dieser Anweisung können Sie in den SPI schreiben. Tatsächlich ist Bit 4, also 1 << 12, das Bit, das die Aktivierung des SPI ermöglicht. Bei einem logischen ODER geben wir daher sowohl das Aktivierungsbit als auch den Wert des ADC an den SPI.
Schritt 9: Digitale Erfassung des ADC von der Karte
Zunächst müssen Sie die Ethernet-IP-Adresse Ihres Computers über Systemsteuerung -> Netzwerk -> Card Parmesals einstellen. Wählen Sie die Ethernet-Schnittstelle der Karte, Eigenschaft, IPv4-Adresse und geben Sie eine feste IP, eine Maske usw. ein …
Als nächstes verbinden Sie die Karte von der Seite der Strombuchse mit dem Micro-USB-Kabel. Öffnen Sie den Quartus-Programmierer und starten Sie den Export. Diese Manipulation wird nach jedem Ausschalten der Karte wiederholt.
Wechseln Sie das Micro-USB-Steckerkabel, um dieses Mal neben der Ethernet-Buchse anzuschließen. Mit Putty ist es jetzt erforderlich, eine serielle Verbindung zur Karte herzustellen. Die Konfiguration ist auf den Fotos sichtbar, die Idee ist, COM5 durch COM zu ersetzen, gefolgt von der Nummer, die Sie in Ihrem Gerätemanager finden (Rechtsklick auf das Windows-Logo, um es zu öffnen).
Drücken Sie die Eingabetaste, Sie sind verbunden.
Info zum Neustart des Projekts: - Ethernet-IP entsprechend der Karte korrigieren - Karte einschalten, jedes Mal, wenn Sie die Stromversorgung einschalten, ist es notwendig, das in der Karte kompilierte Projekt mit "Programm" unter Quartus zu stellen. Dies geschieht über den Micro-USB-Port - Um das Ergebnis des Programms anzeigen zu können, verwenden wir mehr Micro-USB als UART - Mit Putty konfiguriert für serielle COM5 (oder 6 Watch Gestinnaire Periph) An die Karte anschließen. - Setzen Sie ein Passwort (passwd) - Setzen Sie die IP-Adresse ifconfig ethxx IPchoice (IP unweit der für die eth des PCs) - Generieren Sie den Header gemäß Qsys mit dem eingebetteten Terminal (export PATH) - make - scp l exec im map - unter Putty das Programm ausführen
Schritt 10: FFT-Berechnung
Um die Fast Fourier Transform in unserem C-Programm zu erhalten, verwenden wir eine von Mark Borgerding geschriebene Bibliothek: Kiss FFT. Sie können die Bibliothek hier herunterladen: https://kissfft.sourceforge.net/. Das Anwenden einer FFT auf ein Signal ist notwendig, um Signaleffekte zu modifizieren und anzuwenden. Es kann auch dazu dienen, das Spektrum eines Signals anzuzeigen.
Der erste Schritt in Ihrem C-Programm besteht darin, Speicher zuzuweisen, um das FFT-Ergebnis zu speichern. Die Speichergröße hängt von der Anzahl der Punkte ab, die zur Berechnung der FFT verwendet werden. Je mehr Punkte Sie haben, desto präziser wird die FFT. Das Programm wird jedoch langsamer ausgeführt und benötigt mehr Speicher. Beachten Sie, dass Sie von der Funktion kiss_fft zwei Arrays erhalten: die Eingabe und die Ausgabe der Funktion (cx_in und cx_out).
Sobald unser Array mit neuen FFT-Werten gefüllt ist, dh wenn r = Win - 1 ist, verarbeiten wir die FFT. Bezüglich der Darstellung stellen wir nur den positiven Teil des Spektrums dar, da zwischen dem negativen und dem positiven Teil eine Symmetrie besteht.
Auf der horizontalen Achse reduzieren wir die Spitzenwerte um 100*Höhe/(Höhe²), um die Spitzen der Hauptfrequenzen zu unterscheiden.
Wir verwenden den Systemaufruf using the usleep, um eine Lesefrequenz für die ADC-Werte zu definieren. Diese Frequenz ist derzeit auf 1,5 Hz eingestellt.
Schritt 11: Anzeige der FFT
Anhand eines Beispiels auf dem hier erhältlichen Adafruit TFT LCD-Bildschirm: https://www.terasic.com/downloads/cd-rom/de0-nano-s… haben wir den NIOS unseres Boards so programmiert, dass er lesen kann der ADC-Wert.
Das ADC-Register wird also zwischen dem NIOS und dem HPS geteilt, da die ADC-Werte verwendet werden, um die FFT auf dem NIOS-Bildschirm anzuzeigen, und dieselben Werte werden in den SPI geschrieben, um von der Platine ausgegeben und schließlich konvertiert zu werden vom DAC, um ein analoges Signal zu erhalten.
Schritt 12: Montage
Wir sind fast fertig! Sie müssen alle Teile des Projekts (Eingangsschaltung, Ausgangsschaltung und die Platine) zusammenbauen. Stellen Sie sicher, dass die Teile gemäß dem Quartus-Projekt mit den richtigen Pins verbunden sind.
- Die Eingangsschaltung sendet das vom Mikrofon aufgenommene Audiosignal, verstärkt, gefiltert und versetzt.
- Das auf der Karte vorhandene Programm C liest die Werte des ADC, wie wir zuvor gesehen haben, und schreibt sie auf den SPI, damit wir den Wert auf dem GPIO der Karte wiederherstellen können.
- Dann überträgt der Ausgangs-GPIO des SPI die Informationen, die von unserem DAC decodiert und durch Laufen verstärkt werden, um den Lautsprecher zu erreichen.
Schritt 13: Soundeffekte
Der einzige Schritt, der übrig bleibt, sind Soundeffekte.
Verfügbare Effekte sind:
- Hochfrequenzfilter
- Niederfrequenzfilter
- …
Sie können zwischen den Effekten dank einer Taste wechseln. Diese Schaltfläche ändert eine Variable in unserem C-Programm, damit sie den richtigen Effekt anwenden kann.
Schritt 14: [OPTIONAL] Herstellung des Helms
Hier sind wir im manuellsten Schritt des Projekts:
- Zuerst haben wir die verschiedenen 3D-gedruckten Teile des Helms verklebt.
- Um die Lücken zwischen den geklebten Teilen zu füllen, haben wir mit einem 3D-Stift ein Finish hinzugefügt.
- Wir haben die mit dem Stift gefüllten Zwischenräume und den Helm allgemeiner poliert, damit das Gemälde danach gut hält.
- Wir haben den Helm mit 2 Schichten lackiert: Die erste in Anthrazitschwarz, aus nächster Nähe und eine zweite in Primärgrün von weiter, um dunklere Grüntöne zu erzielen.
- Schließlich haben wir das Logo unserer Schule auf die Seite des Helms gedruckt
Empfohlen:
MATRIX Voice und MATRIX Creator mit Alexa (C++-Version): 7 Schritte
MATRIX Voice und MATRIX Creator mit Alexa (C++-Version): Erforderliche HardwareBevor Sie beginnen, sehen wir uns an, was Sie benötigen. Raspberry Pi 3 (empfohlen) oder Pi 2 Model B (unterstützt). MATRIX Voice oder MATRIX Creator - Raspberry Pi hat kein eingebautes Mikrofon, der MATRIX Voice/Creator hat ein
Project 2 Smart-Helm: 6 Schritte (mit Bildern)
Projekt 2 Smart-Helm: Wir, Benoot Sven, Staelens Lennert und Dujardin Laurens, mussten ein Projekt für die Schule machen. Wir mussten mit einem Studenten von IPO (Industrial Product Design) zusammenarbeiten. Er hatte die Idee, einen smarten Motorradhelm zu bauen. Er hat das Design von