Kazalo:
- 1. korak: Seznam opreme (fotografirajte desko in Kevinov komp)
- 2. korak: Pregled
- Korak: Datoteka Wav
- 4. korak: Python- uporaba Pylaba in Scipyja
- 5. korak: vzorčenje Python in FFT (pokaži kodo in njene rezultate)
- 6. korak: Vivado (primerjalnik)
- 7. korak: SLIKE OSNOVNE 3 plošče
- 8. korak: Vivado (7 -segmentni dekodirnik z multipleksiranjem)
- 9. korak: Vivado (kombiniranje komponent)
Video: Tuner: 9 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Ta projekt je bil zasnovan za izdelavo uglaševalca kitare z uporabo Vivada in 7-segmentnega zaslona. Ko sprejemnik najde frekvenco vnesenega zvoka, ga bo ta vrednost primerjal s seznamom trdo kodiranih vrednosti za natančne frekvence, ki so znane kot standardna frekvenca za pravilno višino note. Nato bo sprejemnik prikazal, kako blizu ali daleč je vaš vneseni zvok od želene note. Zanimivo je, da je zvočni val kombinacija več sinusnih valovnih oblik z resničnimi in namišljenimi komponentami. Čeprav se neznanim to zdi težko delo, obstaja nekaj načinov, kako lahko še vedno analiziramo val z resničnimi in namišljenimi vrednostmi.
Demo:
1. korak: Seznam opreme (fotografirajte desko in Kevinov komp)
Najprej potrebujemo ploščo Basys 3 in računalnik, ki podpira naslednje programe. Garageband/Audacity ali drug DAW - za snemanje prek mikrofona in izvoz datotek wavfiles
Python - lahko uporablja pylab in scipy za vzorčenje in fft
Vivado - za povezavo z desko Basys 3 in vizualno ogled rezultatov
2. korak: Pregled
Uglaševalnik je sestavljen iz nekaj pomembnih komponent: mikrofona, vzorčevalnika, FFT (hitra Fourierjeva transformacija), primerjalnika, dekoderja in zaslona. Namen mikrofona je zajeti vhodno valovno obliko. Vzorčevalnik sprejme izhodni signal mikrofona in s pomočjo FFT pretvori signal v izhod velikosti v frekvencah. Nato z uporabo izhoda FFT in ugotovitvijo največje velikosti in frekvence, povezane z njim, deljene z 2, lahko ugotovimo frekvenco, povezano z višino valovne oblike. Ta vrednost lahko nato gre v primerjalnik. Nato ga primerjamo z iskalno tabelo, ki je že nastavila vrednosti frekvence za popolno višino vseh not. Primerjalnik dobi vnos za želeno noto, ki jo nato lahko ujema z želeno noto s pravilno frekvenco iz iskalne tabele. Nato bo primerjalnik izbral zapisek z frekvenco, ki je najbližja največji frekvenci. Primerjalnik bo primerjal obe vrednosti in videl blizu vrednosti frekvence do želene, nato pa te podatke dal v signal. Primerjalnik bo ta signal poslal v dekodirnik, kjer bo dekoder izbral vhode za anode 7-segmentnega zaslona, da prikaže natančnost zapisa.
Korak: Datoteka Wav
V tem koraku bomo vzeli wav datoteko smole in poskušali prikazati frekvenco te višine.
Najprej potrebujete datoteko z zapiski wav. V tem primeru bomo uporabili 16 -bitno stereo wav datoteko s frekvenco vzorčenja 44,1 kHz. To lahko ustvarite v DAW, kot je Garageband, ali prenesete. Za ta primer lahko tukaj prenesete sinusni val A4 440Hz, ki smo ga ustvarili na Garagebandu.
4. korak: Python- uporaba Pylaba in Scipyja
Knjižnico Python smo uporabili za "hitro Fourierjevo pretvorbo". Spletni vir nam je omogočil, da posnemamo in vidimo, kaj je koristno v pylabu in scipyju.
1. Če niste namestili pylab ali scipy, morate to storiti. Ali pa ima Pycharm zelo dobro funkcijo, ko poskusite uvoziti pylab ali scipy, je podrejeno podčrtano, ki vam pove, da knjižnice še niste namestili. Nato jih lahko namestite neposredno s pritiskom na rdečo žarnico (prikazala se bo, ko postavite kazalec blizu podčrtane črte).
2. S pomočjo scipy.io.wavfile.read preberite in izvlecite podatke iz vzorčne datoteke wav. Pobrskajte po podatkih z pylab.fft, vrnil vam bo seznam velikosti za moč.
3. Nato poiščite največjo moč, ki jo oddaja seznam. Poiščite indeks seznama, kjer se pojavi največja moč, ker hitreje ugotovite, kakšna frekvenca je povezana s to močjo. Končno vrnite največjo frekvenco. Ker moramo kasneje v kodo VHDL vnesti binarni frekvenčni signal, lahko frekvenco v float pretvorimo v binarno in jo vrnemo.
5. korak: vzorčenje Python in FFT (pokaži kodo in njene rezultate)
V tem koraku gredo celotni krediti na spodnjo povezavo za vzorčenje in FFT.
samcarcagno.altervista.org/blog/basic-sound…Naša koda:
Po namestitvi pylab in scipy je mogoče datoteke wav uvoziti in brati.
iz pylab import*iz scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Nato snd.shape predstavlja vzorčne točke in število kanalov. V našem primeru so vzorčne točke odvisne od tega, kako dolga je datoteka wav in število kanalov 2, ker je stereo.
Potem je snd = snd / (2. ** 15) …… xlabel ('Čas (ms)')
organizira časovni signal v matriko.
Nato FFT ustvari matriko po frekvenci in velikosti (moč)
Nato skozi zanko while ugotovimo največjo velikost in frekvenco, povezano z njo. Ta frekvenca/2 predstavlja višino datoteke wavfile.
Nato smo z lastno kodo celo število, ki predstavlja frekvenco, pretvorili v 12 -bitno binarno število in ustvarili besedilno datoteko s to številko.
6. korak: Vivado (primerjalnik)
V tem delu postopka potrebujemo primerjalnik za primerjavo dveh vhodnih frekvenc.
1. Ustvaril je primerjalnik za primerjavo, ali je vhodna (sprejemna) frekvenca višja, nižja ali znotraj notranjega območja 2 Hz. (tipični uglaševalnik kitar se giblje od e2 do g5, 82 Hz do 784 Hz).
2. Pri ustvarjanju marže 2 Hz smo z RCA dodali frekvenco sprejemnika »000000000010« in preverili, kje je še vedno prenizka za vnos uporabnika. V tem primeru je enojni bitni signal "visoko" <= "0", "nizko" <= "1". Nato uporabniškemu vnosu dodamo “000000000010”, da vidimo, ali je vhod sprejemnika še višji od tega. V tem primeru je "visoko" <= "1", "nizko" <= "0". Oba primera ne bi vrnila "0".
3. Ker naslednji del modula potrebuje posebne 4-bitne podatke, ki povedo, kaj je sprejemna nota, ne samo, da vrneta dva primerjalna izhoda (nizek in visok), moramo kodo povezati z noto, ki je povezana z frekvenco. Prosimo, glejte spodnjo tabelo:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Uporabite več stavkov if, da jih razvrstite v beležko in jih kodirate v tisto, kar je potrebno za dekoder za sedem segmentov.
7. korak: SLIKE OSNOVNE 3 plošče
8. korak: Vivado (7 -segmentni dekodirnik z multipleksiranjem)
Vse potrebuje zaslon. To je pomemben dejavnik, ki določa vrednost zasnove. Zato moramo s sedemsegmentnim dekoderjem ustvariti zaslon, ki bi nam omogočil, da pokažemo svojo sposobnost oblikovanja sprejemnika na plošči B. Prav tako bi nam pomagal pri testiranju in odpravljanju napak.
Sedemsegmentni dekoder vsebuje vhode z imenom Note, low, high in CLK, medtem ko oddaja SSEG, AN in Fiz_Hz. Zgoraj je slika blokovnega diagrama, ki nam pomaga razumeti zasnovo.
Namen dveh ločenih nizkih in visokih vhodov je oblikovalcu primerjalnika omogočiti svobodo pri upravljanju, ali je zvočna (valovna) frekvenca višja ali nižja od vhodne frekvence (Fix_Hz), ki jo želi uporabnik primerjati. Poleg tega izhodni SSEG predstavlja prikaz sedmih segmentov in naslednjo piko, medtem ko AN predstavlja anode, za katere se prižge niz sedmih segmentov.
V tem sedemsegmentnem dekodirniku ima ura (CLK) pomembno vlogo pri prikazovanju dveh različnih vrednosti na dveh ali več različnih anodah. Ker nam tabla ne dovoljuje prikaza dveh različnih vrednosti hkrati, moramo za prikaz vrednosti eno za drugo uporabiti multipleksiranje, hkrati pa preklopiti na drugo vrednost dovolj hitro, da je naše oči ne morejo ujeti. Tu pride do vhoda CLK.
Za več informacij si oglejte izvorno kodo.
9. korak: Vivado (kombiniranje komponent)
Ko smo dokončali vse module (sprejemnik python, primerjalnik, sedemsegmentni dekoder itd.), Smo nato sestavili z uporabo večjega modula. Tako kot na sliki v razdelku "Pogled", vsak signal ustrezno povežemo. Za referenco preverite našo izvorno kodo "SW_Hz.vhd".
Hvala vam. Upam da uživaš.
Priporočena:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Arduino kitarski tuner: 3 koraki
Arduino Guitar Tuner: Tu je kitarski uglaševalec, ki sem ga naredil z Arduino Uno, in nekaj stvari, ki sem jih imel naokoli. Deluje tako: vsak ima po 5 gumbov, ki bodo v standardni nastavitvi kitare EADGBE ustvarili drugačno noto. Ker sem imel samo 5 gumbov, sem napisal kodo, tako da
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako