Innehållsförteckning:
- Steg 1: Krav 1/3 - Hårdvara
- Steg 2: Krav 2/3 - Komponenter för din krets
- Steg 3: Krav 3/3 - Programvara
- Steg 4: Ingångskrets
- Steg 5: Utgångskrets
- Steg 6: [VALFRITT] Skapa tryckta kretsar och lödningskomponenter
- Steg 7: SoC -inställning
- Steg 8: Programmering av C HPS
- Steg 9: Digital förvärv av ADC från kortet
- Steg 10: FFT -beräkning
- Steg 11: Visa FFT
- Steg 12: Montering
- Steg 13: Ljudeffekter
- Steg 14: [VALFRITT] Gör hjälmen
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej! Vi är ett team med 4 studenter från Polytechnic school vid Sorbonne University:
- Louis Buchert
- Bilal Melehi
- Bao Tinh Piot
- Marco Longépé
Detta projekt genomförs som en del av våra studier och syftar till att ta i hand ett antal verktyg, samt visa våra teoretiska prestationer.
Det berömda objektet ser ut som en hjälm som liknar hjälten i ett visst videospel vars namn kommer att gå förlorat. För designsidan har vi också en skärm som visar Fourier -transformationen av ljudsignalen som kommer ut ur högtalaren. Syftet med detta headset är att ändra telefonens röst i realtid med hjälp av ett antal valbara effekter.
Utbildningsmål:
- Fånga ljudet från en mikrofon
- Förstärka, filtrera, digitalisera signalen
- Inse FFT för en signal
- Visa denna FFT på en skärm
- Signalsyntes
- Ta ett ljud ur en högtalare
- Realisera effekter på ljudljudet (efterklang, eko, etc …)
Nu när vi har lagt bakgrunden och presenterat projektet är det dags att ta tag i det!
Steg 1: Krav 1/3 - Hårdvara
För att lyckas bygga din hjälm behöver vi lite hårdvara för att köra enheten.
- DE0-Nano-SoC Development Board av Terasic + Adafruit TFT LCD-skärm (Arduino)
- Tillgång till en 3D -skrivare för att göra hjälmen (Om du är en universitetsstudent flyttar närmare ditt universitet, har vissa laboratorier tillgängliga för studenter)
- En dator med internetuppkoppling och ett minimum av anslutningar (USB, Ethernet). Din dator måste också ha en stark processor eftersom sammanställning av program på Qsys tar mycket tid.
- (Krävs inte) En skrivare som gör kretskort (PCB) från Gerber -filer för att krympa kretsstorleken + ett lödkolv för att sätta komponenterna på kretskortet.
- (Rekommenderas starkt): Ett gott kaffe för att njuta av ditt arbete med vår Instructable:)
Steg 2: Krav 2/3 - Komponenter för din krets
Här är komponenterna som behövs för din krets:
- Texas Instrument LM386 AB klassförstärkare
- Bakbord
- Uppsättning av han-hane, han-hon-kablar
- LM358P Digital-till-Analoh-omvandlare (DAC)
- Högtalare
- Liten mikrofon som används i analog krets
- En speluppsättning med motstånd från 1kOhm till 220kOhm
- Kondensator 1.5nF
- Kondensator 50nF
- Kondensator 100nF
- Kondensator 100uF
- Kondensator 220uF
- x4 kondensatorer 10uF
Steg 3: Krav 3/3 - Programvara
Sist men inte minst behöver du programvara:
- Quartus 15.1: Lite version
- En C -kompilator (till exempel gcc)
- Altium för PCB -design
-
Alteras SoC inbäddade svit för att kommunicera med SoC -kartan
- Spackel
Steg 4: Ingångskrets
Låt oss bygga kretsen. Använd ovanstående bild av kretsen för att montera den på din brödbräda. Du kommer också att se bilden av brödbrädet och kretsen inuti för att se hur stiften är anslutna. Hela kretsen drivs med en 5V likström (DC). För detta kan du använda ett 5V-batteri med en USB-B-omvandlare eller en funktionsgenerator.
Några påminnelser:
- 5V strömförsörjning och marken är anslutna på separata horisontella linjer på brödbrädet
- Om du vill ansluta två komponenter parallellt, lägg dem i en gemensam linje på brödbrädan
- Om du vill ansluta 2 seriella komponenter måste komponenterna bara ha en stift i en gemensam rad på brödbrädan.
Tveka inte att titta på dedikerad handledning om hur du använder en brödbräda och bygger en krets på den. Glöm inte heller att noga läsa stiftpositionen för LM358P -ljudförstärkaren (se bilden ovan)
Steg 5: Utgångskrets
Helt samma instruktioner som steg 4. De fyra ingångarna: SDI, inte CS, SCK, inte LDAC är från ditt DE0-Nano-Soc-kort. Vi får se senare hur vi genererar dem.
Glöm inte att noga läsa stiftpositionerna på LM386 -ljudförstärkaren (se bilden ovan)
Steg 6: [VALFRITT] Skapa tryckta kretsar och lödningskomponenter
Om du har turen att äga en kretskortskrivare eller kan använda en, kommer vi att skapa vårt eget kretskort (PCB). Observera att detta steg är valfritt. Detta steg består bara av att flytta din krets från en brödbräda till en kretskort.
Du behöver dessa 2 GERBER -filer.
Dessa filer gjordes på Altium. Använd dem på din PCB -skrivarprogramvara för att skriva ut din PCB. När du har fått ditt kretskort, se till att ditt kretskort är rent och att spåren skrivs ut korrekt.
Nu kommer den riktiga affären: Lödning. De 2 bilderna ovan är kartan över kretsen på kretskortet. Varje komponent har namn (R6, C4, MK1 etc.). Bilderna i steg 4 och 5 visar komponentparametrarna (motstånd, konduktans..). Placera varje komponent från din brödbräda till kretskortet enligt deras namn.
När du har lödt allt med ditt lödkolv, testa alla komponenter med en voltmeter för att kontrollera om det finns någon kortslutning.
Steg 7: SoC -inställning
När det gäller SoC -installationen måste du köra några kommandon och skript som ingår i SoC -inbäddade sviten i en terminal. För att göra detta måste du lägga till lite $ PATH. PATH används inom en terminal för att säga att söka efter en fil i katalogerna som ges av sökvägen när du kör ett kommando. Skriv följande kommandorad för att göra det:
exportera PATH =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH
Skriv sedan kommandoraden för att generera rubriker från en sof -fil. Du får sof -filen genom att kompilera ditt projekt på Quartus. För att göra det, skriv:./generate_header.
Steg 8: Programmering av C HPS
Vi måste inse 2 saker i denna del, nämligen läs läs värdet av ADC och skriv det i SPI.
1. Läs värdet för ADC
Adressen till minnet där ADC finns är inte direkt tillgänglig. Faktum är att Linux -systemet som finns på kortet skapar en abstraktion av minnet. För att verkligen komma åt ADC -adressen kommer vi att använda mmap -funktionen.
"h2p_lw_spi_addr = virtual_base + ((osignerad lång) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (osignerad lång) (HW_REGS_MASK));"
Denna instruktion gör det möjligt att lägga till en förskjutning i början av basadressen för att nå adressen till minnet som är tilldelat för ADC, och för att utföra den resulterande adressen en logik OCH för att ta hänsyn till maskeringen.
Efter det är det bara nödvändigt att avleda pekaren i programmet för att få dess värde.
2. Skriv värdet för ADC i SPI: n
Manipulationen är identisk, den här gången ger vi mmap förskjutningen för att landa på den adress som tilldelats av SPI. När du skriver i SPI, specificerar den tekniska dokumentationen att du måste skriva till adressen + 1 värdet på adc.
"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"
Denna instruktion låter dig skriva till SPI. Faktum är att bit 4, så 1 << 12, är den bit som gör det möjligt att aktivera SPI. Med en logisk ELLER ger vi därför både aktiveringsbiten och värdet av ADC till SPI: n.
Steg 9: Digital förvärv av ADC från kortet
Först och främst måste du ställa in datorns Ethernet -IP -adress via Kontrollpanelen -> Nätverk -> Kortparmesaler. Välj Ethernet -gränssnittet för kortet, egendomen, ipv4 -adressen och ange en fast IP, en mask etc …
Anslut sedan kortet från strömuttagssidan med mikro -USB -kabeln. Öppna Quartus -programmeraren och starta exporten. Denna manipulation görs om efter varje avstängning av kortet.
Byt ut mikro -USB -kabeln för att ansluta den här gången bredvid Ethernet -uttaget. Nu, med Putty kommer det att vara nödvändigt att ansluta till kortet via seriell länk. Konfigurationen är synlig på bilderna, tanken är att ersätta COM5 med COM följt av numret som du kan hitta i din enhetshanterare (högerklicka på Windows -logotypen för att öppna den).
Tryck på enter, du är ansluten.
Info för att starta om projektet: - Fixa ethernet ip som motsvarar kortet - Slå på kortet, varje gång du slår på strömmen är det nödvändigt att sätta med "program" under quartus projektet som sammanställts i kortet. Detta görs via mikro -USB -porten - För att kunna visa resultatet av programmet använder vi mer mikro -USB men UART - Med kitt konfigurerat för seriell COM5 (eller 6 klocka gestinnaire perif) Anslut till kortet. - Ställ in ett lösenord (passwd) - Ange IP -adress ifconfig ethxx IPchoice (IP inte långt från det för PC: ns et) - Generera rubriken enligt Qsys med terminalen inbäddad (export PATH) - make - scp l exec i karta - kör under spackel prog
Steg 10: FFT -beräkning
För att få Fast Fourier Transform i vårt C -program kommer vi att använda ett bibliotek skrivet av Mark Borgerding: Kiss FFT. Du kan ladda ner biblioteket här: https://kissfft.sourceforge.net/. Att tillämpa en FFT på en signal är nödvändigt för att modifiera och tillämpa signaleffekter. Det kan också tjäna till att visa spektrumet för en signal.
Första steget i ditt C -program består i att allokera minne för att lagra FFT -resultatet. Minnets storlek beror på antalet punkter som används för att beräkna FFT. Ju mer du har poäng, desto mer exakt kommer FFT att göra. Programmet körs dock långsammare och kommer att använda mer minne. Observera att du kommer att få två matriser från kiss_fft -funktionen: ingången och utmatningen av funktionen (cx_in och cx_out)
När vår array är fylld med nya FFT -värden, dvs. när r = Win - 1, bearbetar vi FFT. När det gäller displayen visar vi bara den positiva delen av spektrumet, eftersom det finns en symmetri mellan den negativa delen och den positiva delen.
När det gäller den horisontella axeln reducerar vi toppvärdena med 100*höjd/(höjd²) för att skilja huvudfrekvensernas toppar.
Vi använder det använda usleep -systemanropet för att definiera en läsfrekvens för ADC -värdena. Denna frekvens är för närvarande inställd på 1, 5 Hz.
Steg 11: Visa FFT
Baserat på ett exempel, ge på Adafruit TFT LCD-skärmen som finns här: https://www.terasic.com/downloads/cd-rom/de0-nano-s… vi har programmerat NIOS för vår styrelse så att han kan läsa ADC -värdet.
Så ADC -registret delas mellan NIOS och HPS eftersom ADC -värdena kommer att användas för att visa FFT på NIOS -skärmen, och samma värden skrivs på SPI för att matas ut från kortet och slutligen konverteras av DAC för att få en analog signal.
Steg 12: Montering
Vi är nästan klara! Du måste montera varje del av projet (ingångskrets, utgångskrets och kort). Se till att ansluta delarna till rätt stift enligt Quartus -projektet.
- Ingångskretsen skickar ljudsignalen som fångas av mikrofonen, förstärks, filtreras och förskjuts.
- Programmet C som finns på kortet kommer att läsa ADC: s värden som vi har sett tidigare, och kommer att skriva det på SPI: et så att vi kan återställa värdet på kortets GPIO.
- Därefter sänder utgången GPIO från SPI informationen som kommer att avkodas av vår DAC och förstärks genom att springa för att nå högtalaren.
Steg 13: Ljudeffekter
Det enda steget som återstår är ljudeffekter.
Tillgängliga effekter är:
- Högfrekvent filter
- Lågfrekvent filter
- …
Du kan växla mellan effekter tack vare en knapp. Denna knapp kommer att ändra en variabel i vårt C -program, så att den kan tillämpa rätt effekt.
Steg 14: [VALFRITT] Gör hjälmen
Här är vi i det mest manuella steget i projektet:
- Först limmade vi de olika 3D -tryckta delarna av hjälmen.
- För att fylla luckorna mellan de limmade bitarna lade vi till en finish med en 3D -penna.
- Vi polerade mellanrummen fyllda med pennan och hjälmen mer allmänt så att målningen håller bra efteråt.
- Vi målade hjälmen med två lager: Den första i antracitsvart, på nära håll, och en andra av primärgrön från ytterligare för att ge nyanser av mörkare grönt.
- Slutligen skrev vi ut logotypen för vår skola på hjälmens sida