Բովանդակություն:
- Քայլ 1: Այն, ինչ մեզ պետք է այս ծրագրի համար (պահանջներ)
- Քայլ 2. Աշխատանքի սկզբունքի իմացություն
- Քայլ 3: Սխեմատիկ
- Քայլ 4. Փոխարկեք MP3- ը WAV ֆայլ ՝ Audacity- ի միջոցով
- Քայլ 5: WAV դեպի C-Code
- Քայլ 6. Կազմեք վերջնական ֆայլ և գործարկեք ձեր Linux- ը
Video: Նվագարկեք երգեր (MP3) Arduino- ի միջոցով ՝ օգտագործելով PWM խոսափողի կամ թռիչքի տրանսֆորմատորի վրա. 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Բարև տղերք, Սա իմ առաջին հրահանգն է, հուսով եմ ձեզ դուր կգա !!
Հիմնականում, այս նախագծում ես օգտագործել եմ սերիական հաղորդակցություն իմ Arduino- ի և իմ նոութբուքի միջև ՝ նոութբուքից երաժշտության տվյալները Arduino- ին փոխանցելու համար: Եվ օգտագործելով Arduino TIMERS- ը ՝ տվյալները որպես PWM ազդանշան նվագարկելու համար:
Ես ուզում էի նշել, որ այս նախագիծը սկսնակների համար չէ !!!:
Իրականում, այս նախագիծը ամենաերկար նախագծերից մեկն էր, քանի որ մենք պետք է շատ բաներ անենք, որպեսզի այն աշխատի:
Ո ATՇԱԴՐՈԹՅՈՆ
Ես դարձրեցի այս ուսուցման երկրորդ մասը, որն ավելի հեշտ է և աշխատելու համար նվազագույն դժվարությունների կարիք ունի
Երկրորդ մասի հղում (ամենահեշտը):
Քայլ 1: Այն, ինչ մեզ պետք է այս ծրագրի համար (պահանջներ)
1. Arduino Board (մենք կարող ենք օգտագործել ցանկացած տախտակ (328, 2560), այսինքն ՝ Mega, Uno, Mini և այլն, բայց հատուկ տարբեր կապումներով)
2. ԱՀ կամ նոութբուք Linux- ով (ես օգտագործել եմ Fedora 29) կամ Live USB Linux- ով
3. Breadboard կամ Perfboard
4. Լարերի միացում
5. TC4420 (Mosfet վարորդ կամ նման բան)
6. Power Mosfet (N կամ P ալիք, խնդրում ենք համապատասխանաբար լարել) (ես օգտագործել եմ N- ալիքը)
7. Բարձրախոս կամ հետադարձ տրանսֆորմատոր (Այո, ճիշտ եք կարդացել !!)
8. Հարմար սնուցման աղբյուր (0-12V) (ես օգտագործել եմ իմ սեփական ATX սնուցման աղբյուրը)
9. atեռուցման լվացարան (ես փրկվել եմ իմ հին համակարգչից)
10. ԱՀ համակարգիչ Windows- ով և գրիչով:
Յուրաքանչյուր բաղադրիչի և այս նախագծի մանրամասն աշխատանքին ծանոթանալու համար կարդացեք հաջորդ քայլը:
Ես դարձրեցի այս ուսուցողական երկրորդ մասը, որն ավելի հեշտ է և աշխատելու համար անհրաժեշտ է նվազագույն խնդիրներ: Հղում դեպի երկրորդ մաս (ամենահեշտը):
Քայլ 2. Աշխատանքի սկզբունքի իմացություն
Ահհհ !! այս բաժինը կարդալը և գրելն ամենևին էլ ձանձրալի է:
Նախևառաջ, մենք պետք է ընդհանուր պատկերացում կազմենք, թե իրականում ինչպես է այս բանը գործում:
այն, ինչ մենք անում ենք այստեղ, այն է, որ առաջին հերթին մենք մեր MP3 երգը վերածում ենք WAV ֆայլի և այս ֆայլը ՝ C վերնագրի ֆայլի ՝ օգտագործելով ծրագրակազմը, որը գտնվում է հղման մեջ: Այս C կոդը իրականում պարունակում է 8-բիթ (ինչու՞ 8-բիթ ?? կարդալ ավելին) տվյալների նմուշներ, որոնք մենք պետք է խաղանք մեր Arduino- ի միջոցով `ֆիքսված արագությամբ կամ արագությամբ, որը նշված է մեր ընտրանքային դրույքաչափի համաձայն:
Աուդիո ազդանշանի տեսություն:
Նրանց համար, ովքեր չգիտեն, թե որն է նմուշառման տոկոսադրույքը կամ բիթային տոկոսադրույքը.
Նմուշառման տոկոսադրույքը սահմանվում է որպես Նմուշների քանակ, մենք խաղում ենք երկրորդում (սովորաբար չափվում է Հց կամ ԿՀց հաճախականությամբ):
Մանրամասներին ավելին իմանալու համար.-Կտտացրեք այստեղ
Ստանդարտ ընտրանքային դրույքաչափերն են `44100 Հց (լավագույն որակ), 32000 Հց, 22050 Հց և այլն
ինչը նշանակում է, որ 44100 Նմուշ օգտագործվում է վայրկյանում ՝ համապատասխանաբար ալիք առաջացնելու համար:
այսինքն ՝ Յուրաքանչյուր Նմուշ պահանջվում է խաղալ 1/44100 = 22.67 uS ֆիքսված ընդմիջումով:
Այնուհետև գալիս է աուդիո ազդանշանի բիթ խորությունը, որը սովորաբար չափիչ է, թե որքան ճշգրիտ է ձայնը ներկայացված թվային աուդիոյում: Որքան բարձր է բիտի խորությունը, այնքան ավելի ճշգրիտ է թվային ձայնը:
Սակայն Arduino- ի կամ 16 ՄՀց ժամացույց ունեցող ցանկացած այլ միկրոկառավարիչի միջոցով մեզ թույլ է տալիս օգտագործել մեզ միայն մինչև 8 բիթանոց: Ես կբացատրեմ, թե ինչու:
328p- ի տվյալների թերթում ՝ թիվ 102 էջում կա բանաձև.- Տվյալների թերթիկ
Չեմ մանրամասնի, թե ինչու եմ ես օգտագործում այս բանաձևը:
Ազդանշանի հաճախականությունը = Signամացույցի ազդանշան / N x (1+TOP)
Ockամացույցի ազդանշան = 16 ՄՀց (Arduino տախտակ)
N = prescaler (1 -ը արժեք է մեր նախագծի համար)
TOP = 0-ից 2^16 արժեքը (16-բիթ ժամաչափի համար) (255 = 2^8 (8-բիթ) մեր նախագծի համար)
մենք ստանում ենք Ազդանշանի հաճախականության արժեքը = 62.5 կՀց
Սա նշանակում է, որ կրիչի ալիքի հաճախականությունը կախված է Bit խորությունից:
Ենթադրենք, եթե մենք օգտագործում ենք TOP արժեքը = 2^16 = 65536 (այսինքն ՝ բիտ 16 բիթ խորություն)
ապա մենք ստանում ենք Ազդանշանի հաճախականության արժեքը = 244 Հց (որը չենք կարող օգտագործել)
OKK… Այսպիսով, այսքան տեսություն, թե ինչպես է աշխատում ձայնային ազդանշանները, բավական է: Այսպիսով, վերադառնանք նախագծին:
Երգի համար ստեղծված C ծածկագիրը կարող է պատճենվել Arduino- ում և կարող է նվագարկվել, սակայն մենք սահմանափակված ենք մինչև 3 վայրկյան ձայնային նվագարկմամբ `ընտրանքային արագությամբ 8000 Հց: Քանի որ այս C ծածկագիրը տեքստային ֆայլ է և, հետևաբար, ոչ թե սեղմված է, այլ բավականին սեղմված: Եվ դա չափազանց շատ տեղ է զբաղեցնում: (օրինակ ՝ C կոդի ֆայլ ՝ 43 վրկ ձայնով ՝ 44, 1 ԿՀց նմուշներով ՝ մինչև 23 ՄԲ տարածք է զբաղեցնում): Եվ մեր Arduino Mega- ն մեզ տալիս է մոտ 256 Կբ տարածք:
Այսպիսով, ինչպես ենք երգեր նվագելու Arduino- ի միջոցով: Դա հնարավոր չէ: Այս հրահանգը կեղծ է: Մի անհանգստացեք ընթերցողներ, Այդ իսկ պատճառով մենք պետք է Arduino- ի միջև ինչ -որ տեսակի հաղորդակցություն օգտագործենք չափազանց բարձր արագությամբ (մինչև 1 Մբ/վ) `Arduino- ին Աուդիո տվյալներ ուղարկելու համար:
Բայց որքա՞ն արագություն է մեզ պետք դա անելու համար:
Պատասխանը 44000 բայթ է վրկ, ինչը նշանակում է ավելի քան 44000*8 = 325, 000 բիթ/վ արագություն:
Մեզ անհրաժեշտ է մեկ այլ ծայրամասային սարք ՝ մեծ պահեստով ՝ այս տվյալները մեր Arduino- ին ուղարկելու համար: Եվ դա կլինի մեր համակարգիչը Linux- ով (ինչու՞ համակարգիչ Linux- ով ??? խնդրում ենք կարդալ ավելին ՝ դրա մասին ավելին իմանալու համար):
Ahaa … Դա նշանակում է, որ մենք կարող ենք օգտագործել սերիական հաղորդակցություն … Բայց սպասեք … սերիալը հնարավոր է ընդամենը 115200 բիթ/վ արագությամբ, ինչը նշանակում է (325000/115200 = 3), որ այն երեք անգամ ավելի դանդաղ է, քան պահանջվում է:
Ոչ, իմ ընկերներ, դա այդպես չէ: Մենք կօգտագործենք 500 կամ 000 Բիթ/վ արագության արագություն ՝ մինչև 20-30 սմ առավելագույն մալուխով, ինչը 1,5 անգամ ավելի արագ է, քան պահանջվում է:
Ինչու Linux, ոչ Windows ???
Այսպիսով, մենք պետք է նմուշներ ուղարկենք մեր համակարգչի հետ 1/44100 = 22.67 uS ընդմիջումով (նաև նշված է վերևում):
Այսպիսով, ինչպե՞ս կարող ենք դա ծրագրել դա անելու համար:
Մենք կարող ենք օգտագործել C ++ - ը `տվյալների բայթը Serial- ի միջոցով ընդմիջումով ուղարկելու համար` օգտագործելով քնի որոշակի գործառույթ
ինչպես nanosleep, Chrono և այլն, և այլն…
համար (int x = 0; x
sendData (x);
նանոար (22000); // 22uS
}
ԲԱՅ NO ՉԻ ԱՇԽԱՏԱՆՔԱՅԻՆ ԼՈ LinuxՍԱՄՈՏՆԵՐԻՆ նույնպես Linux- ում այս կերպ չէր աշխատում (բայց ես գտա մեկ այլ տարբերակ, որը դուք կարող եք տեսնել իմ կցված ծածկագրում):
Քանի որ պատուհանների միջոցով մենք չենք կարող հասնել նման հատիկավորության: Նման մանրամասնության հասնելու համար ձեզ անհրաժեշտ է Linux:
Խնդիրներ, որոնք ես գտա նույնիսկ Linux- ի հետ…
Linux- ի միջոցով մենք կարող ենք հասնել այսպիսի մանրամասնության, բայց ես չեմ գտել նման գործառույթ ՝ իմ ծրագիրը 22uS- ով քնելու համար:
Այն գործառույթները, ինչպիսիք են nanosleep- ը, Chrono nanosleep- ը և այլն, և այլն: նույնպես չեն գործում, քանի որ դրանք ապահովում են քնի ավելի քան 100 ԱՄՆ դոլար: Բայց ինձ պետք էր հենց, ճշգրիտ 22 ԱՄՆ դոլար: Ես ուսումնասիրել եմ Google- ի յուրաքանչյուր էջ և փորձարկել բոլոր հնարավոր գործառույթները, որոնք առկա են C/C ++ - ում, բայց ինձ մոտ ոչինչ չի ստացվել: Հետո ես մտածեցի իմ գործառույթի մասին, որն ինձ համար աշխատում էր որպես իսկական հմայք:
Եվ իմ կոդը այժմ ապահովում է ճշգրիտ, ճշգրիտ քուն 1uS կամ ավելի բարձր !!!
Այսպիսով, մենք լուսաբանել ենք դժվար մասը, իսկ մնացածը հեշտ է…
Եվ մենք ցանկանում ենք արտադրել PWM ազդանշան ՝ օգտագործելով Arduino- ն ՝ որոշակի հաճախականությամբ, նաև կրող ալիքի հաճախականությամբ: (62.5 ԿՀց (ինչպես հաշվարկված է վերևում) ՝ ազդանշանի լավ իմունիտետի համար):
Այսպիսով, PWM ստեղծելու համար մենք պետք է օգտագործենք այսպես կոչված Arduino- ի TIMERS- ը: Ի դեպ, ես դրա մասին շատ չեմ մանրամասնի, քանի որ դուք կգտնեք բազմաթիվ ձեռնարկներ IMԱՄԱՆԱԿՆԵՐԻ թեմայով, բայց եթե մի քանիսը չգտնեք, ապա ստորև մեկնաբանեք, ես մեկն անեմ:
Ես օգտագործել եմ TC4420 Mosfet վարորդը ՝ մեր Arduino Pins- ը պահելու համար, որովհետև նրանք չեն կարող այնքան հոսանք հաղորդել, որ երբեմն MOSFET վարելու համար:
Այսպիսով, սա այս նախագծի գրեթե տեսությունն էր, այժմ կարող ենք տեսնել սխեմայի սխեման:
ՈTՇԱԴՐՈԹՅՈ ATՆ ՈTՇԱԴՐՈԹՅՈՆ ՈTՇԱԴՐՈԹՅՈՆ
Իրականում, այս նախագիծը միտումնավոր շատ դժվարացվեց (ես կասեմ, թե ինչու), կա մեկ այլ մեթոդ, որը պահանջում է ոչ մի համակարգչային Arduino և բարձրախոս իմ հաջորդ անուղղելի ծրագրում: Հղումն այստեղ է:
*Այս նախագծի հիմնական նպատակն է օգտագործել սերիական հաղորդակցումը և իմանալ դրա հզորությունը և սովորել, թե ինչպես կարող ենք ծրագրավորել մեր համակարգիչը `առաջադրանքներ կատարել հենց այսպիսի լավ ընդմիջումներով:*
Քայլ 3: Սխեմատիկ
Միացրեք բոլոր բաղադրիչները, ինչպես ցույց է տրված սխեմատիկայում: Այսպիսով, այստեղ ունեք երկու տարբերակ.
1. Միացրեք բարձրախոս (միացված է 5 Վ)
2. Միացրեք Flyback տրանսֆորմատորը (միացված է 12 Վ)
Ես երկուսն էլ փորձել եմ: Եվ երկուսն էլ բավականին լավ են աշխատում:
Հրաժարում
*Ես խորհուրդ եմ տալիս օգտագործել Flyback Transformer- ը զգուշությամբ, քանի որ այն կարող է վտանգավոր լինել, քանի որ արտադրում է բարձր լարման: Եվ ես ոչ մի վնասի չեմ ենթարկվի:*
Քայլ 4. Փոխարկեք MP3- ը WAV ֆայլ ՝ Audacity- ի միջոցով
Այսպիսով, առաջին հերթին, ներբեռնեք ծրագրակազմը
1. Համարձակություն, որոնում և ներբեռնում Google- ից
2. WAV ֆայլը C- կոդի փոխարկելու համար ներբեռնեք պատուհանի ծրագիր, որը կոչվում է WAVToCode
Դուք կարող եք սովորել, թե ինչպես օգտագործել WAVToCode ծրագրակազմը այս հղումից և ներբեռնել այն այս հղումից:
Ես նաև մանրամասն քայլեր կտամ, թե ինչպես օգտագործել երկու ծրագրակազմը:
Խնդրում ենք դիտել այս հրահանգի հետ կապված լուսանկարները:
Այս քայլով մենք MP3- ը կվերածենք Wav- ի: (Հետևեք լուսանկարներին, ծրագրի արագությունը պետք է լինի 44100 Հց)
Հաջորդ քայլում մենք wav ֆայլը կփոխարկենք C կոդի:
Քայլ 5: WAV դեպի C-Code
Հետևեք լուսանկարներին:
Դիտեք վերջին երկու նկարները, փոփոխությունները պետք է լինեն ճշգրիտ նույնը, Մեծատառերը պետք է լինեն մեծատառեր և փոքրատառեր, Կամ կազմման ընթացքում դուք կստանաք շարահյուսական սխալ:
(Դուք կարող եք տեսնել, որ 41 րոպե տևողությամբ 1 րոպե երգը զբաղեցրել է 23 ՄԲ տարածք):
Երգի անունը և երկարությունը համապատասխանաբար փոխեք ձեր երգի անվան և տևողության հետ:
Եվ պահպանեք C Code ֆայլը:
Դա արեք բոլոր այն երգերի նկատմամբ, որոնք ցանկանում եք նվագել Arduino- ի հետ:
Քայլ 6. Կազմեք վերջնական ֆայլ և գործարկեք ձեր Linux- ը
Ավելացրեք ձեր բոլոր փոխակերպված երգերը Ֆայլի մեջ ՝ տրված այս հղումով:
Եվ հետևեք նկարներին:
Վերբեռնեք կոդը Arduino- ում, որը ես կցել եմ:
Հիշեք C Code ֆայլի անունները: (օրինակ ՝ ապրելակերպի, դոլարի, կրելու համար), քանի որ մենք պետք է նշենք ճշգրիտ նույն անունները մեր ծածկագրում ՝ մեծատառերով:
Վերջում միացրեք ձեր Fedora Live USB- ը կամ այլ սարք և տեղադրեք gcc կոմպիլյատոր, այնուհետև թղթապանակից կազմող հրահանգների միջոցով կազմեք ծրագիրը և գործարկեք այն:
Ի վերջո, դուք կկարողանաք լսել երգեր Speaker- ից կամ Flyback- ից:
Շնորհակալ եմ այս ուսանելի դասընթացի համար և խնդրում եմ մեկնաբանել, եթե ձեզ դուր է գալիս:
ՈTՇԱԴՐՈԹՅՈՆ Ես դարձրեցի այս ուսուցման երկրորդ մասը, որն ավելի հեշտ է և աշխատելու համար նվազագույն դժվարությունների կարիք ունի: Երկրորդ մասի հղում (ամենահեշտը)
Խորհուրդ ենք տալիս:
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույս ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. 14 քայլ (նկարներով)
Վաղ նախազգուշացում Ազնվամորու PI թռիչքուղու լույսը ՝ օգտագործելով թռիչքի քարտեզագրման տվյալները. Այս լամպը առաջացել է մի քանի պատճառներից, որովհետև ինձ միշտ հետաքրքրում են ինքնաթիռները, որոնք թռչում են վերևում, իսկ ամռանը հանգստյան օրերին հաճախ բավականին թռիչք են կատարում: Թեև դուք հակված եք լսել դրանք միայն այն ժամանակ, երբ նրանք անցնում են
Նվագարկեք երգեր Arduino- ի միջոցով ՝ օգտագործելով ADC- ը PWM- ին Flyback Transformer- ի կամ բարձրախոսի վրա. 4 քայլ
Երգեր Arduino- ի միջոցով օգտագործելով ADC- ը PWM- ին Flyback Transformer- ի կամ խոսնակի վրա. Բարև տղերք, սա իմ մյուս ուսանելի (սա շատ դժվար էր) երկրորդ մասն էր: Հիմնականում, այս նախագծում ես օգտագործել եմ ADC- ն և TIMERS- ը իմ Arduino- ում աուդիո ազդանշանը վերածել PWM ազդանշանի: Սա շատ ավելի հեշտ է, քան իմ նախորդ հրահանգը
Նվագարկեք ձայնասկավառակներ առանց CD նվագարկիչի ՝ օգտագործելով AI և YouTube. 10 քայլ (նկարներով)
Նվագարկել ձայնասկավառակներ առանց CD նվագարկիչի, օգտագործելով AI և YouTube. Wantանկանու՞մ եք նվագարկել ձեր ձայնասկավառակները, բայց այլևս CD նվագարկիչ չունեք: CDամանակ չունե՞ք ձեր ձայնասկավառակները պատռելու համար: Պոկեց դրանք, բայց անհրաժեշտության դեպքում ֆայլերն անհասանելի են: Խնդիր չկա: Թող արհեստական ինտելեկտը (արհեստական բանականություն) նույնականացնի ձեր ձայնասկավառակը, և YouTube- ը նվագարկի այն: Ես գրել եմ Android ծրագիր
Նվագարկեք երգեր ՝ օգտագործելով Stepper Motor !!: 11 քայլ (նկարներով)
Նվագարկեք երգեր ՝ օգտագործելով Stepper Motor !! պարզ GUI, որը հ
Նվագարկեք Mp3- երը 70-ամյա ձայնագրիչի վրա `առանց մշտական փոփոխությունների. 3 քայլ
MP3 նվագարկեք 70-ամյա ձայնագրիչի վրա `առանց մշտական փոփոխությունների. Այն, ինչ ես հիմնականում արել եմ, մոնո կապ է ստեղծում ձեր ընտրած MP3- ի կամ MediaԼՄ-ների աղբյուրի, ձեր համակարգչի, ձայներիզների, ռոքի-թոկիի և ուղղակի տաք եղանակով: ալիգատոր սեղմակների միջոցով բարձրախոսին: Ինչպես միշտ, ձեռնարկ/ցուցադրական տեսանյութ. Խնդրում ենք, եթե