Cov txheej txheem:

Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC: 9 Kauj Ruam
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC: 9 Kauj Ruam

Video: Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC: 9 Kauj Ruam

Video: Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC: 9 Kauj Ruam
Video: ICU Kub Vaj - Leej Twg Hais Cia (Cover Video) Hmong Song 2023 2024, Hlis ntuj nqeg
Anonim
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC
Ua Si Suab Suab Cov Ntaub Ntawv (Wav) Nrog Arduino thiab DAC

Ua si wav file Suab los ntawm koj daim npav SD Audino. Cov Lus Qhia no yuav qhia koj li cas cov ntaub ntawv wav ntawm koj SdCard tuaj yeem ua si los ntawm kev sib txuas yooj yim rau tus hais lus.

Cov ntaub ntawv wav yuav tsum yog 8 ntsis mono. Kuv tsis muaj teeb meem ua si 44 KHz cov ntaub ntawv.

Whilst tsis hi-fidelity, lub suab zoo yog txaus siab heev.

Tus saib xyuas txuas yog siv los xaiv cov ntawv. Cov ntaub ntawv yuav tsum yog hauv daim nplaub tshev hu ua adlog.

Cov lus qhia no ua raws los ntawm txoj haujlwm yav dhau los uas kuv tau khaws tseg kaw kaw rau SdCard:

Lub Circuit Court siv tus nqi pheej yig 8 ntsis digital rau analog hloov pauv (DAC) thiab ib lub suab nti ua suab nrov.

Cov ntu tseem ceeb rau teeb tsa kev cuam tshuam raug coj los ntawm kab lus zoo los ntawm Amanda Ghassaei:

Kauj ruam 1: Yuav tsum tau ua

Yuav tsum muaj
Yuav tsum muaj
Yuav tsum muaj
Yuav tsum muaj

Arduino- Kuv siv Mega, txawm li cas los xij tsis muaj laj thawj yog vim li cas Uno yuav tsum tsis ua haujlwm.

SdCard nyeem ntawv- txoj haujlwm tau teeb tsa rau: MicroSD Breakout Board Tswj hwm nrog Logic Conversion V2

Saib cov lus qhia no rau SdCard teeb cov ntsiab lus:

DAC0832 LCN- qhov zoo tshaj 8 ntsis digital rau kev hloov pauv sib piv- Ob peb phaus.

LM386 N-1 Op amp- pheej yig li chips

20 txoj kev nti qhov (socket)

8 txoj kev nti qhov (socket)

9 volt fais fab mov- lub roj teeb yuav ua.

LM336 2.5 V qhov ntsuas hluav taws xob siv

10uF Capacitor * 3 (txhua qhov hluav taws xob ntau dua 9V)

10 ohm tiv thaiv

50nF capacitor- (lossis qhov chaw ze-47nF, 56nf, 68nf- yuav ua)

220uF Capacitor Cov

64 ohm hais lus

10K linear potentiometer

Cable los txuas 8 cov ntaub ntawv kab ntawm Arduino thiab Circuit-

Ntawm Uno 8 qhov kev sib txuas tau nyob hauv kab, ntawm Mega lawv nyob ua khub.

Ntawm Mega Kuv tau siv 10 txoj kev hlua kab txuas nrog 10 txoj hauv kev IDC lub taub hau. (2 xov hlau yog seem)

Qhov (socket) txuas rau 0V, 9V thiab DAC tawm

Tooj liab tooj liab, laug, xaim, txiav thiab lwm yam

Kauj Ruam 2: Cov Lus Qhia Tshwj Xeeb

Cov Specifications
Cov Specifications

Serial teeb ntawm 115200 baud.

Kev txhawb nqa yog nyob rau qhov chaw Hobbytronics MicroSD Breakout Board siv Mega. Kev xaiv nti thiab lwm qhov chaw nres nkoj yuav hloov ntawm Mega thiab Uno.

Cov ntaub ntawv Wav yuav tsum muaj nyob hauv cov npe hu ua adlog- Xav tias dawb rau npe nws lwm yam thiab rov npaj qhov tsim nyog coding.

Cov ntaub ntawv wav yuav tsum yog 8 ntsis mono. Kuv tau sim txog 44KHz.

Tus saib xyuas Serial qhia cov ntaub ntawv wav hauv daim nplaub tshev adlog. Cov npe cov ntaub ntawv raug xa los ntawm tus saib xyuas kab tawm.

Cov ntaub ntawv loj tsuas yog txwv los ntawm SdCard loj.

Kauj ruam 3: Pib

Pib Pib
Pib Pib

Txuas SD daim npav nyeem ntawv. Cov no yog cov kev sib txuas rau Mega.

0, 5vv

CLK to pin 52

D0 pin 50

D1 to pin 51

CS to pin 53

(Saib cov chaw muag khoom lub vev xaib rau Uno chaw nres nkoj txuas)

Koj yuav xav sim tias koj daim npav ua haujlwm ntawm theem no- siv cov ntawv sau los ntawm tus muag khoom.

Peb yuav tsum tau ua lub voj voog me me

Peb yuav xa cov kwj ntawm cov suab bytes los ntawm Arduino.

Cov zauv no nyob nruab nrab ntawm 0 thiab 255. Lawv sawv cev rau qhov hluav taws xob.

Kev nyob ntsiag to yog 127-128.

255 yog hais lus lub khob hliav qab nyuaj ib txoj kev.

0 yog tus hais lus lub khob hliav lwm txoj.

Yog li lub suab tau sau tseg raws li tus lej khaws tseg, uas tsim qhov sib txawv ntawm qhov sib txawv, uas tsim cov lus sib tham txav.

Peb tuaj yeem xa tus lej tawm ntawm 8 kab ntawm Arduino, ib txhij, los ntawm kev siv "chaw nres nkoj".

Yog tias peb pub 8 kab rau hauv cov hloov pauv digital mus rau qhov sib piv, nws ua raws li nws tau hais ntawm lub tin thiab tsim cov hluav taws xob sib piv uas yog sib piv rau cov lej.

Txhua yam peb yuav tsum tau ua yog ntim lub zog tawm mus rau lub tshuab ua haujlwm me me thiab tom qab ntawd mus rau tus hais lus.

Kauj Ruam 4: Cov Hluav Taws Xob Me

Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit
Qhov Me Me Circuit

Cov DAC0832 LCN

Qhov no yog qhov zoo tshaj, pheej yig 8 ntsis Digital rau kev hloov pauv sib piv. (DAC)

Nws tuaj yeem tswj tau tag nrho nrog cov ntaub ntawv tuav, cov ntaub ntawv piv txwv kab.

Los yog nws tuaj yeem teeb tsa los ua nws txhua qhov nyob hauv "Flow through operation".

Txhawm rau txheeb xyuas phau ntawv:

Yooj yim rau hauv av CS, WR1, WR2, thiab XFER thiab khi ILE siab tso cai rau ob qho kev sau npe sab hauv kom ua raws cov ntaub ntawv siv digital (ntws-dhau) thiab cuam tshuam ncaj qha rau DAC cov khoom tso tawm.

OK uas yog plaub qhov sib txuas rau lub teeb teeb qis thiab ib qho teeb tsa rau 9V - yooj yim.

Peb tsis xav kom muaj qhov ntsuas tsis zoo tawm yog li phau ntawv hais tias peb yuav tsum siv "hom hloov hluav taws xob" thiab lawv muab daim duab.

Txhua yam peb yuav tsum tau ua yog hloov lub suab me me me dua li qhov lawv tau hais qhia.

LM386-N Suab Amp

Amp phau ntawv qhia muab cov duab yam tsawg kawg nkaus- muab qhov nce ntawm 20 (Txoj kev ntau dhau rau peb-tab sis nws muaj kev tswj ntim).

Txhua yam peb yuav tsum tau ua yog ntxiv lub capacitor nruab nrab ntawm DAC thiab amp kom peb tsuas yog nthuav tawm AC cov cim.

Peb tseem yuav tsum ntxiv ob peb lub capacitors ze rau tus pin muab khoom ntawm txhua ntawm peb cov chips txwv tsis pub peb yuav tau txais hum los ntawm peb cov khoom siv 9V.

Kauj Ruam 5: Tshem Tawm Cov Hluav Taws Xob

Tawm Tawm Cov Hluav Taws Xob
Tawm Tawm Cov Hluav Taws Xob
Tawm Tawm Cov Hluav Taws Xob
Tawm Tawm Cov Hluav Taws Xob
Tawm Tawm Cov Hluav Taws Xob
Tawm Tawm Cov Hluav Taws Xob

Raws li lub Circuit Court yog qhov yooj yim Kuv tsis npaj siab muab tshuab los tshuab tshuab.

Nov yog qee qhov taw qhia:

  • Npaj ib daim ntawm Copper strip board tsawg kawg 28 los ntawm 28 qhov. (Yog kuv paub cov kws phais neeg lub hlwb tuaj yeem ua rau nws me dua)
  • Yog tias koj npaj siab yuav kho nws nrog cov ntsia hlau, tso cai rau lawv thaum pib!
  • Mount cov chips ntawm qhov (socket). Ntxig cov chips tsuas yog thaum txhua yam tau tshuaj xyuas.
  • Khaws cov xov hlau tawm ntawm qhov tso tawm.
  • Soj ntsuam qhov tseeb polarity rau lub capacitors.
  • Xa mus rau daim duab rau lub hauv paus pom ntawm LM336 qhov ntsuas hluav taws xob. Kev kho ceg tsis siv thiab tuaj yeem txiav.
  • Nco tseg qhov txuas ncaj qha rau tus pin 8 ntawm DAC- Nws muaj txiaj ntsig zoo rau kev sim.
  • Kuv txuas nrog Audino nrog kab xov txuas thiab 10 txoj kev IDC txuas.
  • Ntawm Uno cov kev sib txuas yog nyob hauv kab ncaj - koj yuav pom tias npaj 8 qhov kev sib txuas sib txuas hauv ib txoj kab ncaj ncaj tso cai rau koj txuas rau Arduino nrog kev yuav khoom, npaj tau ua 8 txoj kev txuas,

Thaum nws ua tiav- txheeb xyuas cov laug thiab xyuas qhov khoob ntawm cov tooj liab.

Kuv pom 36 tpi junior hack pom hniav zoo heev rau kev tshem cov khib nyiab. Kuv tshem tus hniav qhov chaw pins thiab xaub lub ntsis ntawm cov hniav mus rau hauv txoj kev- Pom tseeb tias cov hniav tsis nyob hauv tus ncej.

Kauj Ruam 6: Xeem DAC

Xeem DAC
Xeem DAC

Tawm ntawm Kev Sib Txuas ntawm Circuit Court thiab Arduino tawm.

Teem lub ntim tswj ntawm koj lub voj voog mus rau ib nrab.

Hloov ntawm 9V DC Lub Hwj Chim rau koj lub Circuit Court tshiab.

Txheeb xyuas tias lub Circuit Court zoo- Kuv tsis tuaj yeem lees txais ib qho kev lav phib xaub rau koj lub Circuit Court!

Fais fab tuag

Txuas koj lub Circuit Court mus rau Arduino.

Ntawm Mega siv tus pin 22-29. (PORTA) Tsis txhob yuam kev ob 5V pins saum toj no!

Hauv Uno siv tus pin 0-7. Nov yog PORTD

Txuas 0V ntawm koj lub hwj chim muab rau 0V ntawm Arduino.

Fais fab.

Qhib qhov kev xeem no DAC_TEST

Rau UNO, hloov tag nrho cov ntawv xa mus rau PORTA rau PORTD

Hloov DDRA nrog DDRD- cov lus qhia no teev tag nrho 8 kab kom tso tawm hauv ib qho. Nov yog cov ntaub ntawv qhia txog kev sau npe.

Teem koj tus lej saib ntawm 115200.

Txuas lub voltmeter nruab nrab ntawm DAC tawm thiab OV

Qhov kev zov me nyuam yuav teeb tsa cov zis rau 255- txhua kab ntawm - qhov siab tshaj plaws.

Cov zis 128- ib nrab qhov siab tshaj plaws.

Cov zis 0- xoom hluav taws xob (lossis tej zaum ze li xoom).

Tom qab ntawd nws yuav ua ntu zus: 1, 2, 4, 8, 16, 32, 64, 128

Qhov hluav taws xob yuav tsum nce zuj zus.

Yog tias qhov hluav taws xob poob rov qab thaum tus lej nce koj yuav muaj ob ntawm cov xov hlau sib txuas rov qab.

Koj yuav tsum tau hnov tus hais lus ntsiag to nyem raws li qhov hloov pauv

Kauj Ruam 7: Nyeem Wav Header

Nyeem Wav Header
Nyeem Wav Header

Cov ntaub ntawv Wav tau khaws tseg nrog qhov tshwj xeeb zaus thiab cov ntaub ntawv loj.

Cov ntaub ntawv no muaj nyob hauv 44 byte header thaum pib ntawm cov ntaub ntawv wav.

Txawm hais tias qee qhov software txuas ntxiv lub taub hau (tom qab byte 35), ua rau qhov chaw ntawm cov ntaub ntawv loj dua nyuaj rau nrhiav.

Txhawm rau nyeem lub taub hau peb tsim qhov tsis thiab luam qhov pib ntawm cov ntawv.

Qhov zaus tau khaws cia hauv 4 bytes pib 24 bytes rau hauv cov ntawv.

// nyeem zaus tau teev tseg hauv wav file header

byte lub taub hau [60]

tempfile.seek (0);

tempfile.read (headbuf, 60);

retval = taub hau [27];

retval = (retval << 8) | lub taub hau [26];

retval = (retval << 8) | lub taub hau [25];

retval = (retval << 8) | lub taub hau [24];

Serial.print (F ("Cov Ntaub Ntawv Zaus"));

Serial.print (rov ua dua tshiab);

Txoj hauv kev zoo tshaj los nrhiav cov ntaub ntawv cov ntaub ntawv loj yog tshawb nrhiav lo lus "cov ntaub ntawv" hauv kab ntawv.

Tom qab ntawd rho tawm 4 bytes tom qab nws, uas ua rau tus nqi ntev

unsigned ntev retval;

int mypos = 40;

rau (int kuv = 36; kuv <60; kuv ++) {

yog (headbuf [kuv] == 'd') {

yog (headbuf [kuv+1] == 'a') {

yog (headbuf [kuv+2] == 't') {

yog (headbuf [kuv+3] == 'a') {

// thaum kawg peb muaj nws

mypos = kuv+4;

kuv = 60;

}

}

}

}

}

tempfile.seek (mypos);

retval = headbuf [mypos+3];

retval = (retval << 8) | headbuf [mypos+2];

retval = (retval << 8) | headbuf [mypos+1];

retval = (retval << 8) | headbuf [mypos];

OK peb muaj cov ntaub ntawv ntev thiab zaus!

Cov ntaub ntawv suab ua raws 4 bytes ua cov ntaub ntawv ntev tus nqi.

Kauj Ruam 8: cuam tshuam, cuam tshuam…

Kev cuam tshuam, cuam tshuam…
Kev cuam tshuam, cuam tshuam…

Peb siv cov ntaub ntawv zaus los tsim software cuam tshuam ntawm, lossis ze, qhov xav tau zaus.

Kev cuam tshuam tuaj yeem tsis tuaj yeem teeb tsa kom raug, tab sis nws txaus. Zaus nyeem los ntawm cov ntaub ntawv raug xa mus rau cov txheej txheem cuam tshuam subroutine.

void setintrupt (ntab freq) {ntab bitval = 8; // 8 rau 8 ntsis timers 0 thiab 2, 1024 rau timer 1 byte

setocroa = (16000000/(freq*bitval)) - 0.5;

// Tus nqi setocroa xav kom rho tawm ntawm -1. Txawm li cas los xij ntxiv 0.5 ncig mus rau ze tshaj 0.5

// Qhov kev daws teeb meem ntawm lub sijhawm yog txwv

// Thaum kawg txiav txim siab los ntawm qhov ntau ntawm bitval

cli (); // lov tes taw cuam tshuam // teeb tsa timer2 cuam tshuam

TXC2A = 0; // teeb tsa tag nrho TCCR2A sau npe rau 0

TCCR2B = 0; // tib yam rau TCCR2B

TCNT2 = 0; // initialize counter nqi rau 0

// teeb tsa kev sib piv sib tw sau npe rau zaus (hz) nce ntxiv

OCR2A = setocroa; // = (16*10^6) / (zaus*8) - 1 (yuav tsum yog <256)

// qhib rau CTC hom

TCCR2A | = (1 << WGM21); // Teeb CS21 ntsis rau 8 prescaler

TCCR2B | = (1 << CS21); // pab kom timer piv cuam tshuam

// TIMSK2 | = (1 << OCIE2A); // qhov no ua haujlwm, zoo li cov kab hauv qab no

sbi (TIMSK2, OCIE2A); // pab cuam tshuam ntawm timer 2

sib (); // pab cuam tshuam

Kev nyeem ntawv yuav tsum pom sbi (TIMSK2, OCIE2A)

Kuv teeb tsa ob peb ntawm (internet tau txais) lub luag haujlwm rau teeb tsa thiab tshem tawm cov npe khoom:

// Txhais kom tshem cov npe khoom#ifndef cbi

#define cbi (sfr, ntsis) (_SFR_BYTE (sfr) & = ~ _BV (ntsis))

#ib

// Txhais rau teeb tsa cov npe khoom

#ifndef swb

#define sbi (sfr, ntsis) (_SFR_BYTE (sfr) | = _BV (ntsis))

#ib

Cov haujlwm no muab kev hu yooj yim los teeb tsa lossis tshem tawm qhov cuam tshuam.

Yog li qhov cuam tshuam tab tom khiav, peb tuaj yeem ua dab tsi?

Kauj Ruam 9: Kev cuam tshuam thiab Ob Qhov Tsis Zoo

Kev cuam tshuam thiab Ob Qhov Tsis Taus
Kev cuam tshuam thiab Ob Qhov Tsis Taus
Kev cuam tshuam thiab Ob Qhov Tsis Taus
Kev cuam tshuam thiab Ob Qhov Tsis Taus

Ntawm 22 Khz ib byte ntawm cov ntaub ntawv suab raug tso tawm txhua txhua 0.045 ms

512 bytes (qhov loj me) tau nyeem hauv 2.08 ms.

Yog li qhov tsis tuaj yeem nyeem tsis tau los ntawm SDCard hauv ib tsab ntawv sau.

Txawm li cas los xij 512 bytes tau sau mus rau qhov chaw nres nkoj hauv 23.22ms.

Yog li txhua yam peb yuav tsum ua yog teeb tsa cov ntaub ntawv tshiab nyeem txhua lub sijhawm tsis nyob thiab peb muaj sijhawm txaus kom tau txais cov ntaub ntawv ua ntej yuav tsum tau thaiv cov ntaub ntawv tshiab … Piv txwv tias peb siv ob qhov tsis, khoob ib qho thaum peb sau lwm qhov.

Qhov no yog ob npaug.

Cov ntaub ntawv nyeem yuav qeeb los ntawm kev cuam tshuam ntau zaus, tab sis nws yuav ua tiav.

Kuv tau teeb tsa ob 512 byte buffers hu ua bufa thiab bufb.

Yog tias tus chij yog qhov tseeb peb nyeem los ntawm porta txwv tsis pub peb nyeem los ntawm portb

Thaum qhov chaw tsis (bufcount) mus txog qhov tsis loj (BUF_SIZE 512) peb teeb tus chij hu ua nyeem kom raug.

Lub voj void niaj hnub saib rau tus chij no thiab pib qhov thaiv nyeem:

yog (readit) {yog (! aready) {

// pib SDCard thaiv nyeem rau bufa

tempfile.read (bufa, BUF_SIZE);

lwm yam {

// pib SDCard thaiv nyeem rau bufb

tempfile.read (bufb, BUF_SIZE);

}

readit = tsis tseeb;

}

Thaum nws tau ua tiav cov txheej txheem niaj hnub nyeem = cuav.

Hauv qhov kev cuam tshuam niaj hnub peb yuav tsum txheeb xyuas tias lub void loop tau ua tiav los ntawm kev txheeb xyuas yog tias nyeem == cuav.

Qhov no yog rooj plaub peb taw qhia tias yuav tsum tau nyeem dua thiab hloov pauv tus chij aready kom hloov pauv.

Yog tias SDcard tseem tab tom nyeem peb yuav tsum rov qab taug qab ib qho nyeem (counter-; bufcount--;) thiab tawm qhov cuam tshuam los sim dua tom qab. (Nyem rau hauv lub suab tso tawm lub ntsiab lus hais tias qhov no tau tshwm sim.)

Thaum tag nrho cov ntaub ntawv tau nyeem qhov cuam tshuam raug tshem tawm, qhov chaw nres nkoj rov teeb tsa mus rau qhov nruab nrab qhov hluav taws xob ntawm 128 thiab cov ntaub ntawv kaw.

Ua ntej khiav cov ntawv dac2.ino thawj zaug, teeb koj lub ntim rau 50%. Qhov no yuav nrov heev, tab sis nws zoo dua 100%!

Yog tias koj lub ntim tswj ua haujlwm rov qab sib pauv cov coj ntawm qhov kawg ntawm 10K lub zog loj.

Qhia rau kuv paub tias nws zoo li cas.

Pom zoo: