Სარჩევი:
- ნაბიჯი 1: რაც ჩვენ გვჭირდება ამ პროექტისთვის (მოთხოვნები)
- ნაბიჯი 2: მუშაობის პრინციპის გაგება
- ნაბიჯი 3: სქემატური
- ნაბიჯი 4: გადაიყვანეთ MP3 WAV ფაილში Audacity– ის გამოყენებით
- ნაბიჯი 5: WAV C კოდიდან
- ნაბიჯი 6: შექმენით საბოლოო ფაილი და გაუშვით თქვენი Linux
ვიდეო: სიმღერების დაკვრა (MP3) Arduino– ით PWM– ს გამოყენებით სპიკერზე ან Flyback Transformer– ზე: 6 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
Გამარჯობათ ბიჭებო, ეს არის ჩემი პირველი სასწავლო ინსტრუქცია, იმედი მაქვს მოგეწონებათ !!
ძირითადად, ამ პროექტში მე გამოვიყენე სერიული კომუნიკაცია ჩემს არდუინოსა და ჩემს ლეპტოპს შორის, ლეპტოპიდან მუსიკალური მონაცემების გადასაცემად არდუინოში. Arduino TIMERS– ის გამოყენებით მონაცემების დაკვრა PWM სიგნალის სახით.
მინდოდა აღვნიშნო, რომ ეს პროექტი არ არის დამწყებთათვის !!!.
სინამდვილეში, ეს პროექტი იყო ერთ -ერთი ყველაზე გრძელი პროექტი, რადგან ბევრი რამის გაკეთება გვიწევს იმისათვის, რომ ის იმუშაოს.
ყურადღება
მე გავაკეთე ამ ინსტრუქციის მეორე ნაწილი, რომელიც ბევრად უფრო ადვილია და სამუშაოს მინიმალური პრობლემები სჭირდება
მეორე ნაწილის ბმული (უმარტივესი).
ნაბიჯი 1: რაც ჩვენ გვჭირდება ამ პროექტისთვის (მოთხოვნები)
1. Arduino დაფა (ჩვენ შეგვიძლია გამოვიყენოთ ნებისმიერი დაფა (328, 2560) ანუ მეგა, უნიო, მინი და სხვა, მაგრამ კონკრეტული განსხვავებული ქინძისთავებით)
2. კომპიუტერი ან ლეპტოპი Linux– ით (მე გამოვიყენე Fedora 29) ან Live USB Linux– ით
3. Breadboard ან Perfboard
4. დამაკავშირებელი მავთულები
5. TC4420 (Mosfet მძღოლი ან მსგავსი რამ)
6. სიმძლავრე Mosfet (N ან P არხი, გთხოვთ მიაწოდოთ შემდეგ შესაბამისად) (მე გამოვიყენე N არხი)
7. სპიკერი ან Flyback Transformer (დიახ თქვენ სწორად წაიკითხეთ !!)
8. შესაფერისი კვების წყარო (0-12V) (მე გამოვიყენე ჩემი საკუთარი ATX კვების ბლოკი)
9. გამათბობელი (მე ამოღებული მაქვს ძველი კომპიუტერიდან)
10. კომპიუტერი Windows და კალამიანი დისკით.
თითოეული კომპონენტისა და ამ პროექტის დეტალური მუშაობის შესასწავლად გთხოვთ წაიკითხოთ შემდეგი ნაბიჯი.
მე გავაკეთე ამ ინსტრუქციის მეორე ნაწილი, რაც ბევრად უფრო ადვილია და სამუშაოს მინიმალური პრობლემები სჭირდება. მეორე ნაწილთან დაკავშირება (უმარტივესი).
ნაბიჯი 2: მუშაობის პრინციპის გაგება
აჰჰ !! ინსტრუქციის ყველაზე გრძელი ნაწილი, ამ მონაკვეთის კითხვა და წერა ორივე მოსაწყენია.
უპირველეს ყოვლისა, ჩვენ უნდა მივიღოთ მიმოხილვა, თუ როგორ მუშაობს სინამდვილეში ეს.
რასაც ჩვენ ვაკეთებთ აქ არის ის, რომ ჩვენ პირველ რიგში ვაკონვერტირებთ ჩვენს MP3 სიმღერას WAV ფაილში და ამ ფაილს C სათაურის ფაილში პროგრამული უზრუნველყოფის გამოყენებით, რომელიც არის ბმულში. ეს C კოდი სინამდვილეში შეიცავს 8-ბიტიან (რატომ 8-ბიტიანი? წაიკითხეთ შემდგომ) მონაცემთა ნიმუშებს, რომლებიც უნდა ვითამაშოთ ჩვენი Arduino– ს გამოყენებით ფიქსირებული სიჩქარით ან სიჩქარით, რაც მითითებულია ჩვენი შერჩევის მაჩვენებლის მიხედვით.
აუდიო სიგნალის თეორია.
მათთვის, ვინც არ იცის რა არის შერჩევის მაჩვენებელი ან ბიტ განაკვეთი:-
შერჩევის მაჩვენებელი განისაზღვრება როგორც ნიმუშების რაოდენობა, ჩვენ ვთამაშობთ მეორეში (ჩვეულებრივ იზომება Hz ან KHz).
უფრო დეტალურად რომ იცოდეთ:-დააწკაპუნეთ აქ
სტანდარტული შერჩევის მაჩვენებლებია 44100 Hz (საუკეთესო ხარისხი), 32000 Hz, 22050 Hz და ა.შ.
რაც იმას ნიშნავს, რომ 44100 ნიმუში გამოიყენება წამში, რათა წარმოქმნას ტალღა შესაბამისად.
ანუ თითოეული ნიმუში უნდა იყოს დაკრული 1/44100 = 22.67 აშშ დოლარით.
შემდეგ მოდის აუდიო სიგნალის ბიტ სიღრმე, რომელიც ჩვეულებრივ ზომავს რამდენად ზუსტად არის წარმოდგენილი ხმა ციფრულ აუდიოში. რაც უფრო მაღალია ბიტის სიღრმე, მით უფრო ზუსტია ციფრული ხმა.
მაგრამ Arduino– სთან ან სხვა მიკროკონტროლერთან ერთად 16Mhz საათი საშუალებას გვაძლევს გამოვიყენოთ მხოლოდ 8 ბიტიანი. აგიხსნით რატომ.
არსებობს ფორმულა.102 გვერდზე 328p მონაცემთა ცხრილში:- მონაცემთა ცხრილი
მე არ შევალ დეტალურად, რატომ ვიყენებ ამ ფორმულას.
სიგნალის სიხშირე = საათის სიგნალი / N x (1+TOP)
საათის სიგნალი = 16 MHz (Arduino დაფა)
N = prescaler (1 არის ღირებულება ჩვენი პროექტისთვის)
TOP = მნიშვნელობა 0-დან 2^16-მდე (16 ბიტიანი ტაიმერის მრიცხველისთვის) (255 = 2^8 (8 ბიტიანი) ჩვენი პროექტისათვის)
ჩვენ ვიღებთ სიგნალის სიხშირის მნიშვნელობას = 62.5 კჰც
ეს ნიშნავს, რომ გადამზიდავი ტალღის სიხშირე დამოკიდებულია ბიტის სიღრმეზე.
დავუშვათ, თუ ჩვენ ვიყენებთ TOP მნიშვნელობას = 2^16 = 65536 (ანუ ბიტის სიღრმე 16 ბიტიანი)
შემდეგ ვიღებთ სიგნალის სიხშირის მნიშვნელობას = 244 ჰერცი (რომელსაც ჩვენ ვერ ვიყენებთ)
OKK … ასე რომ, ამდენი თეორია იმის შესახებ, თუ როგორ მუშაობს აუდიო სიგნალები, საკმარისია, ასე რომ დავუბრუნდეთ პროექტს.
სიმღერისთვის წარმოქმნილი C კოდი შეიძლება გადაწერილი იყოს Arduino– ში და შეიძლება დაკვრა, მაგრამ ჩვენ შეზღუდული ვართ 3 წამამდე აუდიო დაკვრით, შერჩევის სიჩქარით 8000 Hz. ვინაიდან ეს C კოდი არის ტექსტური ფაილი და, შესაბამისად, არ არის შეკუმშული და საკმაოდ დეკომპრესიული. და ძალიან ბევრ ადგილს იკავებს. (მაგ. C კოდის ფაილი 43 წმ აუდიოთი 44, 1 KHz ნიმუშებით იკავებს ადგილს 23 მბ-მდე). და ჩვენი Arduino Mega გვაძლევს სივრცეს დაახლოებით 256 Kb.
როგორ ვითამაშებთ სიმღერებს არდუინოს გამოყენებით. Ეს შეუძლებელია. ეს ინსტრუქცია ყალბია. არ ინერვიულო მკითხველებო, სწორედ ამიტომ, ჩვენ უნდა გამოვიყენოთ რაიმე სახის კომუნიკაცია Arduino– ს შორის ძალიან მაღალი სიჩქარით (1 მბ/წმ – მდე) აუდიო მონაცემების Arduino– ში გასაგზავნად.
მაგრამ ზუსტად რამდენი სიჩქარე გვჭირდება ამის გასაკეთებლად ??
პასუხი არის 44000 ბაიტი წამში, რაც ნიშნავს სიჩქარეს 44000*8 = 325, 000 ბიტი/წმ -ზე მეტი.
ჩვენ გვჭირდება სხვა პერიფერიული მოწყობილობა, რომელსაც აქვს დიდი საცავი, რომ გავაგზავნოთ ეს მონაცემები ჩვენს არდუინოში. და ეს იქნება ჩვენი კომპიუტერი Linux– ით (რატომ კომპიუტერი Linux– ით ??? გთხოვთ, წაიკითხოთ მეტი, რომ მეტი იცოდეთ ამის შესახებ.)
აჰა … ეს ნიშნავს, რომ ჩვენ შეგვიძლია გამოვიყენოთ სერიული კომუნიკაცია … მაგრამ დაელოდეთ … სერიალი შესაძლებელია მხოლოდ 115200 ბიტი/წმ სიჩქარით, რაც ნიშნავს (325000/115200 = 3), რომ ის სამჯერ ნელია ვიდრე საჭიროა.
არა, ჩემო მეგობრებო, ეს ასე არ არის. ჩვენ გამოვიყენებთ სიჩქარეს ან Baud Rate- ს 500, 000 ბიტი/წმ სიჩქარით კაბელით მაქსიმუმ 20-30 სმ-მდე, რაც 1.5-ჯერ მეტია ვიდრე საჭიროა.
რატომ Linux და არა Windows ???
ასე რომ, ჩვენ უნდა გავაგზავნოთ ნიმუშები ინტერვალით (ასევე მითითებულია ზემოთ) 1/44100 = 22.67 uS ჩვენს კომპიუტერთან.
ასე რომ, როგორ შეგვიძლია დავაპროგრამოთ ის ამის გასაკეთებლად ??
ჩვენ შეგვიძლია გამოვიყენოთ C ++, რომ გავაგზავნოთ მონაცემთა ბაიტი სერიალის საშუალებით ინტერვალით ძილის ფუნქციის გამოყენებით
როგორიცაა ნანო ძილი, ქრონო და ა.შ. და ა.შ.…
for (int x = 0; x
sendData (x);
ნანო ძილი (22000); // 22uS
}
მაგრამ ის არ მუშაობს Windows– ზე ასევე არ მუშაობდა Linux– ზე ამ გზით (მაგრამ მე ვიპოვე სხვა გზა, რომელსაც თქვენ ხედავთ ჩემს თანდართულ კოდში).
იმიტომ, რომ ჩვენ ვერ მივაღწევთ ასეთ მარცვლოვანებას ფანჯრების გამოყენებით. თქვენ გჭირდებათ Linux, რომ მიაღწიოთ ამგვარ სიზუსტეს.
პრობლემები, რომლებიც მე აღმოვაჩინე Linux– თანაც კი…
ჩვენ შეგვიძლია მივაღწიოთ ამგვარ სიზუსტეს Linux– ის გამოყენებით, მაგრამ მე ვერ ვიპოვნე ასეთი ფუნქცია, რომ დამეძინა ჩემი პროგრამა 22uS.
ფუნქციები, როგორიცაა nanosleep, Chrono nanosleep და ა.შ. და ა.შ. ასევე არ მუშაობს, რადგან ისინი უზრუნველყოფენ ძილს მხოლოდ 100 აშშ დოლარზე მეტი. მაგრამ მე მჭირდებოდა ზუსტად, ზუსტად 22 აშშ დოლარი. მე გამოვიკვლიე Google– ის თითოეული გვერდი და ექსპერიმენტი გავუკეთე ყველა შესაძლო ფუნქციას, რომელიც ხელმისაწვდომია C/C ++ - ში, მაგრამ არაფერი გამომივიდა. შემდეგ გამოვედი ჩემი საკუთარი ფუნქციით, რომელიც მუშაობდა ჩემთვის, როგორც ნამდვილი ხიბლი.
და ჩემი კოდი ახლა იძლევა ზუსტ, ზუსტად 1uS ძილს ან ზემოთ !!!
ასე რომ, ჩვენ განვიხილეთ რთული ნაწილი და დანარჩენი ადვილია…
ჩვენ გვსურს PWM სიგნალის გენერირება Arduino– ს გამოყენებით კონკრეტული სიხშირით, ასევე ტალღის მატარებელი სიხშირით. (62.5 KHz (ზემოთ გამოთვლილი) სიგნალის კარგი იმუნიტეტისთვის).
ამრიგად, ჩვენ უნდა გამოვიყენოთ Arduino– ს ეგრეთ წოდებული TIMERS PWM– ის შესაქმნელად. სხვათა შორის, მე არ დაწვრილებით განვიხილავ ამაზე, რადგან თქვენ ნახავთ ბევრ გაკვეთილს TIMERS– ის თემაზე, მაგრამ თუ ვერ იპოვით, შემდეგ კომენტარს გავაკეთებ ქვემოთ.
მე გამოვიყენე TC4420 Mosfet– ის დრაივერი ჩვენი Arduino Pins– ის შესანახად, რადგან მათ არ შეუძლიათ ამდენი დენის მიწოდება ხანდახან MOSFET– ის მართვისთვის.
ასე რომ, ეს იყო ამ პროექტის თითქმის თეორია, ახლა ჩვენ შეგვიძლია ვნახოთ წრიული დიაგრამა.
ყურადღება გაამახვილე ყურადღება ყურადღება
სინამდვილეში, ეს პროექტი გამიჭირდა განზრახ (მე გეტყვით რატომ), არის კიდევ ერთი მეთოდი, რომელიც არ საჭიროებს არა მხოლოდ PC- ს Arduino- ს და მომხსენებელს ჩემს შემდგომ ინსტრუქციაში. ბმული აქ არის.
*ამ პროექტის მთავარი მიზანია სერიული კომუნიკაციის გამოყენება და მისი ძალაუფლების ცოდნა და ვისწავლოთ თუ როგორ შეგვიძლია ჩვენი კომპიუტერის პროგრამირება დავალებების ზუსტად შესასრულებლად.
ნაბიჯი 3: სქემატური
შეაერთეთ ყველა კომპონენტი, როგორც ეს მოცემულია სქემატურ რეჟიმში. ასე რომ თქვენ გაქვთ ორი ვარიანტი:-
1. შეაერთეთ სპიკერი (უკავშირდება 5 ვ)
2. შეაერთეთ Flyback Transformer (დაკავშირებულია 12V– თან)
ორივე ვცადე. და ორივე საკმაოდ კარგად მუშაობს.
უარი პასუხისმგებლობაზე:-
*მე გირჩევთ გამოიყენოთ Flyback Transformer სიფრთხილით, რადგან ის შეიძლება საშიში იყოს, რადგან ის აწარმოებს მაღალ ძაბვებს. და მე არ ვიქნები პასუხისმგებელი რაიმე სახის ზიანისთვის.*
ნაბიჯი 4: გადაიყვანეთ MP3 WAV ფაილში Audacity– ის გამოყენებით
ასე რომ, პირველ რიგში, გადმოწერეთ პროგრამა
1. სიმამაცე, მოძებნეთ და გადმოწერეთ Google- დან
2. WAV ფაილის C- კოდზე გადასაყვანად ჩამოტვირთეთ ფანჯრის პროგრამა, სახელწოდებით WAVToCode
თქვენ შეგიძლიათ გაიგოთ როგორ გამოიყენოთ WAVToCode პროგრამული უზრუნველყოფა ამ ბმულიდან და გადმოწეროთ ამ ბმულიდან.
მე ასევე მივცემ დეტალურ ნაბიჯებს, თუ როგორ გამოიყენოთ ორივე პროგრამული უზრუნველყოფა.
გთხოვთ, იხილოთ ამ ინსტრუქციასთან დაკავშირებული ფოტოები.
ამ ნაბიჯში ჩვენ MP3– ს გადავიყვანთ Wav– ში. (მიჰყევით ფოტოებს, პროექტის სიხშირე უნდა იყოს 44100 ჰც)
მომდევნო ეტაპზე, ჩვენ გადავაქცევთ wav ფაილს C კოდში.
ნაბიჯი 5: WAV C კოდიდან
მიჰყევით ფოტოებს.
იხილეთ ბოლო ორი სურათი, ცვლილებები ზუსტად იგივე უნდა იყოს, დიდი ასოები უნდა იყოს დიდი და მცირე ასოები, ან თქვენ მიიღებთ სინტაქსურ შეცდომას შედგენისას.
(თქვენ ხედავთ, რომ 41 წუთის 1 წუთის სიმღერა 23 მბ ადგილს იკავებდა.)
შეცვალეთ სიმღერის სახელი და სიგრძე თქვენი სიმღერის სახელისა და ხანგრძლივობის შესაბამისად.
და შეინახეთ C კოდის ფაილი.
გააკეთეთ ეს ყველა იმ სიმღერაზე, რომელზეც გსურთ არდუინოსთან ერთად დაკვრა
ნაბიჯი 6: შექმენით საბოლოო ფაილი და გაუშვით თქვენი Linux
დაამატეთ თქვენი ყველა გარდაქმნილი სიმღერა ამ ბმულზე მოცემულ ფაილში.
და მიჰყევით სურათებს.
ატვირთეთ კოდი Arduino– ში, რომელიც მე დავამატე.
დაიმახსოვრეთ C კოდის ფაილის სახელები.
ბოლოს აანთეთ თქვენი Fedora Live USB ან სხვა და დააინსტალირეთ gcc შემდგენელი და შემდეგ საქაღალდედან შემდგენელი ინსტრუქციის გამოყენებით შეადგინეთ პროგრამა და გაუშვით.
საბოლოო ჯამში, თქვენ გექნებათ შესაძლებლობა მოუსმინოთ სიმღერებს Speaker ან Flyback– დან.
გმადლობთ რომ კითხულობთ ამ სასწავლო ინსტრუქციას და გთხოვთ მოგვწეროთ თუ მოგეწონებათ.
ATTENTIONI მე გავაკეთე ამ ინსტრუქციის მეორე ნაწილი, რაც ბევრად უფრო ადვილია და მუშაობისთვის მინიმალური უბედურებაა საჭირო. მეორე ნაწილის ბმული (უმარტივესი)
გირჩევთ:
საუბარი არდუინოზე. - MP3– ის დაკვრა არდუინოსთან ერთად ყოველგვარი მოდულის გარეშე - MP3 ფაილის Arduino– დან დაკვრა PCM– ის გამოყენებით: 6 ნაბიჯი
საუბარი არდუინოზე. | MP3– ის დაკვრა არდუინოსთან ერთად ნებისმიერი მოდულის გარეშე | Arduino– დან Mp3 ფაილის დაკვრა PCM– ის გამოყენებით: ამ ინსტრუქციებში ჩვენ ვისწავლით თუ როგორ ვითამაშოთ arduino– ით mp3 ფაილი აუდიო მოდულის გამოყენების გარეშე, აქ ჩვენ გამოვიყენებთ PCM ბიბლიოთეკას Arduino– სთვის, რომელიც უკრავს 16 ბიტიან PCM– ს 8kHZ სიხშირით, ასე რომ, ამის გაკეთება
დაუკარით სიმღერები Arduino– ს გამოყენებით ADC to PWM Flyback Transformer ან სპიკერი: 4 ნაბიჯი
დაუკარით სიმღერები Arduino– ს გამოყენებით ADC to PWM Flyback Transformer ან სპიკერი: გამარჯობა ბიჭებო, ეს არის ჩემი მეორე სასწავლო (ეს ძალიან რთული) მეორე ნაწილი, ძირითადად, ამ პროექტში, მე გამოვიყენე ADC და TIMERS ჩემს Arduino– ში აუდიო სიგნალის გადაკეთება PWM სიგნალად. ეს ბევრად უფრო ადვილია, ვიდრე ჩემი წინა ინსტრუქცია
CD– ების დაკვრა CD პლეერის გარეშე, AI და YouTube– ის გამოყენებით: 10 ნაბიჯი (სურათებით)
CD– ების დაკვრა CD პლეერის გარეშე, AI და YouTube– ის გამოყენებით: გსურთ თქვენი CD– ების დაკვრა, მაგრამ აღარ გაქვთ CD პლეერი? არ გქონდათ დრო თქვენი CD– ების გადასაღებად? გაანადგურეს ისინი, მაგრამ საჭიროების შემთხვევაში ფაილები მიუწვდომელია? პრობლემა არ არის. მიეცით AI (ხელოვნური ინტელექტი) იდენტიფიკაციის თქვენი CD და YouTube ითამაშეთ! მე დავწერე Android app doin
სიმღერების დაკვრა Stepper Motor– ის გამოყენებით !!: 11 ნაბიჯი (სურათებით)
ითამაშეთ სიმღერები Stepper Motor !!: ეს პროექტი არის მარტივი დინამიური ინტერფეისის შემუშავების შესახებ, რომელიც საშუალებას მისცემს სტეპერ ძრავასთან ურთიერთქმედება ორი განსხვავებული გზით. პირველი ინტერფეისი გააკონტროლებს სტეპერი ძრავის მიმართულებას და სიჩქარეს აპარატის გამოყენებით მარტივი GUI, რომელიც თ
ვიდეოების უკანა დაკვრა Quicktime Player– ის გამოყენებით: 5 ნაბიჯი
ვიდეოების უკანა დაკვრა Quicktime Player– ის გამოყენებით: ეს არის საუკუნის ყველაზე საშინელი ხრიკი. ეს ინსტრუქციულად გიჩვენებთ მარტივ გზას, თუ როგორ უნდა ითამაშოთ ვიდეოები უკუღმა პროგრამების ჩამოტვირთვის გარეშე (თუ არ გაქვთ სწრაფი დრო დაგჭირდებათ.) სურათს არაფერი აქვს გავაკეთე პროექტი, მაგრამ მჭირდებოდა