Სარჩევი:
- მარაგები
- ნაბიჯი 1: მშენებლობა - პურის დაფა
- ნაბიჯი 2: მშენებლობა - დააჭირეთ თავსაბურავებს/შედუღებას
- ნაბიჯი 3: მშენებლობა - შეაერთეთ დენის ქინძისთავები
- ნაბიჯი 4: მშენებლობა - I2S გაყვანილობა
- ნაბიჯი 5: BtAudio ბიბლიოთეკის დაყენება
- ნაბიჯი 6: BtAudio ბიბლიოთეკის გამოყენება
- ნაბიჯი 7: DSP - გაფილტვრა
- ნაბიჯი 8: DSP - დინამიური დიაპაზონის შეკუმშვა
- ნაბიჯი 9: Wifi ინტერფეისი
- ნაბიჯი 10: სამომავლო გეგმები
ვიდეო: Bluetooth აუდიო და ციფრული სიგნალის დამუშავება: Arduino ჩარჩო: 10 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
Შემაჯამებელი
როდესაც ვფიქრობ Bluetooth– ზე მე ვფიქრობ მუსიკაზე, მაგრამ სამწუხაროდ მიკროკონტროლერების უმეტესობას არ შეუძლია მუსიკის დაკვრა Bluetooth– ით. Raspberry Pi შეუძლია, მაგრამ ეს არის კომპიუტერი. მსურს შევქმნა არდუინოზე დაფუძნებული ჩარჩო მიკროკონტროლერებისათვის Bluetooth– ის საშუალებით აუდიოს დასაკრავად. მიკროკონტროლერის კუნთების სრულად შესამსუბუქებლად ვაპირებ აუდიოს რეალურ დროში ციფრული სიგნალის დამუშავების (DSP) დამატებას (მაღალი გამავლობის გაფილტვრა, დაბალი გამავლობის გაფილტვრა და დინამიური დიაპაზონის შეკუმშვა). ალუბლის თავზე დავამატებ ვებ სერვერს, რომელიც შეიძლება გამოყენებულ იქნას DSP უკაბელო კონფიგურაციისთვის. ჩაშენებული ვიდეო გვიჩვენებს Bluetooth აუდიოს საფუძვლებს მოქმედებაში. ის ასევე მაჩვენებს ვებ სერვერის გამოყენებას მაღალი გამავლობის გაფილტვრის, დაბალი გამავლობის ფილტრაციის და დინამიური დიაპაზონის შეკუმშვის შესასრულებლად. დინამიური დიაპაზონის შეკუმშვის პირველი გამოყენება მიზანმიმართულად იწვევს დამახინჯებას, როგორც ცუდი პარამეტრების არჩევანის მაგალითს. მეორე მაგალითი გამორიცხავს ამ დამახინჯებას.
ამ პროექტისთვის ESP32 არის არჩეული მიკროკონტროლერი. ღირს 10 ფუნტზე ნაკლები და გამორჩეულია ADC, DAC, Wifi, Bluetooth Low Energy, Bluetooth Classic და 240MHz ორმაგი ბირთვიანი პროცესორით. საბორტო DAC– ს შეუძლია ტექნიკურად აუდიოს დაკვრა, მაგრამ ის არ ჟღერს მშვენივრად. სამაგიეროდ, მე გამოვიყენებ Adafruit I2S სტერეო დეკოდერს ხაზის სიგნალის შესაქმნელად. ეს სიგნალი მარტივად შეიძლება გაიგზავნოს ნებისმიერ HiFi სისტემაში, რათა მყისიერად დაამატოთ უკაბელო აუდიო თქვენს არსებულ HiFi სისტემაში.
მარაგები
ვიმედოვნებთ, რომ შემქმნელთა უმეტესობას ექნება დაფა, მხტუნავები, USB კაბელები, დენის წყაროს შესადუღებელი უთოები და მხოლოდ 15 ფუნტის დახარჯვა მოუწევთ ESP32 და სტერეო დეკოდერზე. თუ არა, ყველა საჭირო ნაწილი ჩამოთვლილია ქვემოთ.
- ESP32 - ტესტირებულია ESP32 -PICO -KIT და TinyPico– ზე - 9.50 ფუნტი/ 24 £
- Adafruit I2S სტერეო დეკოდირი - 5.51 ფუნტი
- პურის დაფა - თითოეული 3–5 ფუნტი
- მხტუნავი მავთულები - 3 ფუნტი
- სადენიანი ყურსასმენები/Hi -Fi სისტემა -
- Push Headers ან Soldering Iron - 2.10 / / 30 £
- მიკრო USB კაბელი - 2.10// £ 3
- 3.5 მმ RCA კონექტორამდე/ 3.5 მმ ბუდე ჯეკამდე (ან რასაც თქვენი დინამიკი სჭირდება) - 2.40// 1.50
- USB კვების წყარო - 5 ფუნტი
ნაბიჯი 1: მშენებლობა - პურის დაფა
თუ თქვენ იყიდეთ ESP32-PICO-KIT თქვენ არ მოგიწევთ ქინძისთავების შედუღება, რადგან ის წინასწარ შედუღებულია. უბრალოდ განათავსეთ იგი პურის დაფაზე.
ნაბიჯი 2: მშენებლობა - დააჭირეთ თავსაბურავებს/შედუღებას
თუ თქვენ გაქვთ გასაყიდი რკინა, მიამაგრეთ ქინძისთავები სტერეო დეკოდერზე ადაფრუტის ვებგვერდზე მითითებული ინსტრუქციის შესაბამისად. წერის დროს ჩემი გამაგრილებელი რკინა მუშაობდა, რომელიც ჩაკეტილი იყო. მე არ მინდოდა დროებითი გამყიდველი რკინის გადახდა, ამიტომ პიმორონიდან ამოვიღე რამდენიმე სათაური. მე დავჭრა ისინი ისე, რომ ისინი მოერგოს სტერეო დეკოდერს. ეს არ არის საუკეთესო გამოსავალი (და არა ის, თუ როგორ იყო განკუთვნილი სათაურების გამოყენება), მაგრამ ეს არის ყველაზე იაფი ალტერნატივა გამაგრილებელი რკინისთვის. მოათავსეთ მოჭრილი სათაური პურის დაფაზე. დეკოდერისთვის დაგჭირდებათ მხოლოდ 1 ხაზი 6 ქინძისთავით. თქვენ შეგიძლიათ დაამატოთ კიდევ ექვსი მეორე მხარეს სტაბილურობისთვის, მაგრამ ეს არ არის აუცილებელი ამ პროტოტიპული სისტემისთვის. სათაურების ჩასამაგრებელი ქინძისთავები არის vin, 3vo, gnd, wsel, din და bclk.
ნაბიჯი 3: მშენებლობა - შეაერთეთ დენის ქინძისთავები
მოათავსეთ სტერეო დეკოდირი ბიძგის სათაურებზე (vin, 3vo, gnd, wsel, din და bclk ქინძისთავები) და მტკიცედ უბიძგეთ მათ ერთმანეთთან. ისევ და ისევ, ეს იდეალურად უნდა გაკეთდეს გასაყიდი რკინით, მაგრამ მომიწია იმპროვიზაცია. თქვენ შეამჩნევთ, რომ ამ ინსტრუქციის ყველა მავთული არის ლურჯი. ეს იმიტომ, რომ მე არ მქონდა ჯუმბერის მავთულები, ამიტომ 1 გრძელი მავთული დავჭრა პატარა ნაწილებად. ასევე, მე ვარ ბრმა და მე ნამდვილად არ მაინტერესებს მავთულის ფერი. დენის ქინძისთავები მიმაგრებულია შემდეგნაირად:
3v3 (ESP32) -> vin სტერეო დეკოდერზე
gnd (ESP32) -> gnd სტერეო დეკოდერზე
ნაბიჯი 4: მშენებლობა - I2S გაყვანილობა
ESP32– დან Bluetooth აუდიოს სტერეო დეკოდერზე გასაგზავნად ჩვენ ვაპირებთ გამოვიყენოთ ციფრული კომუნიკაციის მეთოდი, სახელწოდებით I2S. სტერეო დეკოდირება მიიღებს ამ ციფრულ სიგნალს და გადააქცევს მას ანალოგიურ სიგნალად, რომელიც შეიძლება ჩართული იყოს დინამიკში ან HiFi- ში. I2S მხოლოდ 3 მავთულს მოითხოვს და გასაგებიც მარტივია. ბიტის საათის (bclk) ხაზი ბრუნდება მაღლა და დაბლა, რომ მიუთითოს ახალი ბიტის გადაცემა. მონაცემთა გაცემის ხაზი (dout) ბრუნდება მაღალი ან დაბალი იმის დასადგენად აქვს თუ არა ამ ბიტს მნიშვნელობა 0 ან 1 და სიტყვა არჩევის ხაზი (wsel) ბრუნავს მაღლა ან დაბლა, რომ მიუთითოს მარცხენა ან მარჯვენა არხის გადაცემა. ყველა მიკროკონტროლერს არ აქვს I2S მხარდაჭერა, მაგრამ ESP32– ს აქვს 2 I2S ხაზი. ეს ხდის აშკარა არჩევანს ამ პროექტისთვის.
გაყვანილობა შემდეგია:
27 (ESP32) -> wsel (სტერეო დეკოდირი)
25 (ESP32) -> დინი (სტერეო დეკოდირი)
26 (ESP32) -> bclk (სტერეო დეკოდი)
ნაბიჯი 5: BtAudio ბიბლიოთეკის დაყენება
თუ ჯერ არ გაქვთ დაინსტალირებული დააინსტალირეთ Arduino IDE და Arduino ბირთვი ESP32– ისთვის. მათი დაყენების შემდეგ ეწვიეთ ჩემს Github გვერდს და გადმოწერეთ საცავი. Arduino IDE ფარგლებში Sketch >> Include Library >> აირჩიეთ "დაამატეთ. ZIP ბიბლიოთეკა". შემდეგ შეარჩიეთ გადმოწერილი zip ფაილი. ამან უნდა დაამატოს ჩემი btAudio ბიბლიოთეკა თქვენს Arduino ბიბლიოთეკებს. ბიბლიოთეკის გამოსაყენებლად თქვენ უნდა შეიყვანოთ შესაბამისი სათაური არდუინოს ესკიზში. ამას ნახავთ შემდეგ ეტაპზე.
ნაბიჯი 6: BtAudio ბიბლიოთეკის გამოყენება
დაინსტალირების შემდეგ დააკავშირეთ თქვენი ESP32 კომპიუტერთან მიკრო USB- ის საშუალებით და შემდეგ დაუკავშირეთ სტერეო დეკოდიორი თქვენს დინამიკს თქვენი 3.5 მმ -იანი მავთულით. ესკიზის ატვირთვამდე თქვენ უნდა შეცვალოთ რაღაც Arduino რედაქტორში. მას შემდეგ რაც შეარჩიეთ დაფა თქვენ დაგჭირდებათ დანაყოფის სქემის რედაქტირება ინსტრუმენტებში >> დანაყოფის სქემა და აირჩიეთ "არა OTA (დიდი აპლიკაცია)" ან "მინიმალური SPIFFS (დიდი პროგრამები OTA- სთან ერთად)". ეს აუცილებელია, რადგან ეს პროექტი იყენებს როგორც WiFi- ს, ასევე Bluetooth- ს, რომლებიც ორივე ძალიან მეხსიერებით მძიმე ბიბლიოთეკაა. ამის დასრულების შემდეგ ატვირთეთ შემდეგი ესკიზი ESP32– ზე.
#ჩართეთ
// ადგენს აუდიო მოწყობილობის სახელს btAudio audio = btAudio ("ESP_Speaker"); void setup () {// გადასცემს აუდიო მონაცემებს ESP32 audio.begin (); // გამოაქვს მიღებული მონაცემები I2S DAC int bck = 26; int ws = 27; int dout = 25; აუდიო. I2S (bck, dout, ws); } void loop () {}
ესკიზი ფართოდ შეიძლება დაიყოს 3 საფეხურად:
- შექმენით გლობალური btAudio ობიექტი, რომელიც განსაზღვრავს თქვენი ESP32- ის "Bluetooth სახელს"
- დააკონფიგურირეთ ESP32, რომ მიიღოთ აუდიო btAudio:: begin მეთოდით
- დააყენეთ I2S ქინძისთავები btAudio:: I2S მეთოდით.
ეს არის პროგრამული უზრუნველყოფის მხრივ! ახლა თქვენ მხოლოდ უნდა დაიწყოთ Bluetooth კავშირი თქვენს ESP32– თან. უბრალოდ დაათვალიერეთ ახალი მოწყობილობები თქვენს ტელეფონში/ლეპტოპზე/MP3 პლეერზე და გამოჩნდება "ESP_Speaker". მას შემდეგ რაც ბედნიერი იქნებით რომ ყველაფერი მუშაობს (მუსიკა უკრავს) შეგიძლიათ გათიშოთ ESP32 კომპიუტერიდან. ჩართეთ იგი USB დენის წყაროსთან და ის დაიმახსოვრებს ბოლო კოდს, რომელიც თქვენ ატვირთეთ მასში. ამ გზით თქვენ შეგიძლიათ სამუდამოდ დაიმალოთ თქვენი ESP32 თქვენი HiFi სისტემის მიღმა.
ნაბიჯი 7: DSP - გაფილტვრა
მიმღების გაფართოება ციფრული სიგნალის დამუშავებით
თუ თქვენ დაიცავით ყველა ნაბიჯი (და მე არაფერი გამომიტოვებია), თქვენ უკვე გაქვთ სრულად ფუნქციონირებული Bluetooth მიმღები თქვენი HiFi სისტემისთვის. მიუხედავად იმისა, რომ ეს მაგარია, ის ნამდვილად არ უბიძგებს მიკროკონტროლერს მის ზღვრამდე. ESP32– ს აქვს ორი ბირთვი, რომელიც მუშაობს 240 MHz– ზე. ეს ნიშნავს, რომ ეს პროექტი გაცილებით მეტია, ვიდრე უბრალოდ მიმღები. მას აქვს უნარი იყოს Bluetooth მიმღები ციფრული სიგნალის პროცესორით (DSP). DSPs არსებითად ასრულებს მათემატიკურ ოპერაციებს სიგნალზე რეალურ დროში. ერთ სასარგებლო ოპერაციას ეწოდება ციფრული გაფილტვრა. ეს პროცესი ამცირებს სიხშირეებს სიგნალში ქვემოთ ან ზემოთ გარკვეული სიხშირის სიგანეზე, ეს დამოკიდებულია იმაზე, იყენებთ თუ არა მაღალ გავლის ფილტრს ან დაბალ გავლას.
მაღალი გამავლობის ფილტრები
მაღალი გამავლობის ფილტრები ამცირებენ სიხშირეებს გარკვეული ზოლის ქვემოთ. მე შევქმენი ფილტრი ბიბლიოთეკა Arduino სისტემებისთვის, earlevel.com– ის კოდის საფუძველზე. მთავარი განსხვავება ისაა, რომ მე შევიცვალე კლასის სტრუქტურა, რათა უფრო მაღალი ხარისხის ფილტრების აგება უფრო ადვილი იყოს. უმაღლესი რიგის ფილტრები უფრო ეფექტურად თრგუნავენ სიხშირეებს თქვენი წყვეტის მიღმა, მაგრამ ისინი ბევრად მეტ გამოთვლას საჭიროებენ. ამასთან, ახლანდელი განხორციელებით, თქვენ შეგიძლიათ გამოიყენოთ მე -6 რიგის ფილტრები რეალურ დროში აუდიოსთვის!
ესკიზი იგივეა, რაც წინა საფეხურზე ნაპოვნი, გარდა იმისა, რომ ჩვენ შევცვალეთ მთავარი მარყუჟი. ფილტრების გასააქტიურებლად ჩვენ ვიყენებთ btAudio:: createFilter მეთოდს. ეს მეთოდი იღებს 3 არგუმენტს. პირველი არის ფილტრის კასკადის რაოდენობა. ფილტრის კასკადების რაოდენობა არის ფილტრის წესრიგის ნახევარი. მე -6 რიგის ფილტრისთვის პირველი არგუმენტი უნდა იყოს 3. მე -8 რიგის ფილტრისთვის ეს იქნება 4. მეორე არგუმენტი არის ფილტრის გათიშვა. მე დავაყენე ეს 1000Hz– ზე, რომ მართლაც დრამატული გავლენა იქონიოს მონაცემებზე. დაბოლოს, ჩვენ განვსაზღვრავთ შემავსებლის ტიპს მესამე არგუმენტით. ეს უნდა იყოს მაღალგამტარი მაღალი გამტარობის ფილტრისთვის და დაბალი გადასასვლელი დაბალი გამავლობის ფილტრისთვის. ქვემოთ მოყვანილი სკრიპტი ცვლის ამ სიხშირის წყვეტს 1000Hz– დან 2 HHz– მდე. თქვენ უნდა მოისმინოთ დრამატული ეფექტი მონაცემებზე.
#ჩართეთ
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; აუდიო. I2S (bck, dout, ws); } void loop () {დაგვიანებით (5000); audio.createFilter (3, 1000, მაღალი გადასასვლელი); დაგვიანება (5000); audio.createFilter (3, 2, მაღალი გადასასვლელი); }
დაბალი გამავლობის ფილტრები
დაბალი გამავლობის ფილტრები აკეთებენ პირიქით მაღალი გავლის ფილტრებს და აფერხებენ სიხშირეებს გარკვეულ სიხშირეზე მაღლა. მათი დანერგვა შესაძლებელია ისევე, როგორც მაღალი გავლის ფილტრები, გარდა იმისა, რომ ისინი საჭიროებენ მესამე არგუმენტის დაბალ გზაზე შეცვლას. ქვემოთ მოცემული ესკიზისთვის მე ვცვლი დაბალგამტარ წყვეტს 2000Hz– დან 20000Hz– მდე. იმედია, თქვენ მოისმენთ განსხვავებას. ის საკმაოდ ჩახლართულად უნდა ჟღერდეს, როდესაც დაბალი გამავლობის ფილტრი 2000 ჰც-ზეა.
#ჩართეთ
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; აუდიო. I2S (bck, dout, ws); } void loop () {დაგვიანებით (5000); audio.createFilter (3, 2000, დაბალი გადასასვლელი); დაგვიანება (5000); audio.createFilter (3, 20000, დაბალი გადასასვლელი); }
ნაბიჯი 8: DSP - დინამიური დიაპაზონის შეკუმშვა
ფონი
დინამიური დიაპაზონის შეკუმშვა არის სიგნალის დამუშავების მეთოდი, რომელიც ცდილობს აუდიოს ხმამაღლა გათანაბრება. ის შეკუმშავს ხმამაღალ ბგერებს, რომლებიც გარკვეულ ზღურბლზე მაღლა იწევს, მშვიდი დონის დონეზე და შემდეგ, სურვილისამებრ აძლიერებს ორივეს. შედეგი არის ბევრად უფრო თანაბარი მოსმენის გამოცდილება. ეს მართლაც სასარგებლო აღმოჩნდა, როდესაც მე ვუყურებდი გადაცემას ძალიან ხმამაღალი ფონური მუსიკით და ძალიან მშვიდი ვოკალით. ამ შემთხვევაში, მხოლოდ ხმის გაზრდა არ დაეხმარა, რადგან ამან მხოლოდ გააძლიერა ფონური მუსიკა. დინამიური დიაპაზონის შეკუმშვით, მე შემეძლო ხმამაღალი ფონური მუსიკის შემცირება ვოკალის დონეზე და ყველაფრის სწორად მოსმენა.
Კოდი
დინამიური დიაპაზონის შეკუმშვა არ გულისხმობს მხოლოდ მოცულობის შემცირებას ან სიგნალის ზღურბლს. ამაზე ცოტა ჭკვიანია. თუ ხმას შეამცირებთ, მშვიდი ხმები შემცირდება ისევე როგორც ხმამაღალი. ამის ერთი გზა არის სიგნალის ზღურბლი, მაგრამ ეს იწვევს სერიოზულ დამახინჯებას. დინამიური დიაპაზონის შეკუმშვა მოიცავს რბილი ზღურბლებისა და გაფილტვრის კომბინაციას, რათა მინიმუმამდე დაიყვანოს ის დამახინჯება, რაც სიგნალის ზღურბლის/დაჭერის შემთხვევაში. შედეგი არის სიგნალი, სადაც ხმამაღალი ხმები "იჭრება" დამახინჯების გარეშე და მშვიდი ხდებიან ისეთი, როგორიც არის. ქვემოთ მოყვანილი კოდი გადადის შეკუმშვის სამ სხვადასხვა დონეს შორის.
- შეკუმშვა დამახინჯებით
- შეკუმშვა დამახინჯების გარეშე
- შეკუმშვის გარეშე
#ჩართეთ
btAudio audio = btAudio ("ESP_Speaker"); void setup () {audio.begin (); int bck = 26; int ws = 27; int dout = 25; აუდიო. I2S (bck, dout, ws); } void loop () {დაგვიანებით (5000); audio.compress (30, 0.0001, 0.0001, 10, 10, 0); დაგვიანება (5000); audio.compress (30, 0.0001, 0.1, 10, 10, 0); დაგვიანება (5000); audio.decompress (); }
დინამიური დიაპაზონის შეკუმშვა გართულებულია და btAudio:: შეკუმშვის მეთოდებს ბევრი პარამეტრი აქვს. შევეცდები აგიხსნათ ისინი (თანმიმდევრობით) აქ:
- ბარიერი - დონე, რომლის დროსაც აუდიო მცირდება (იზომება დეციბელებში)
- შეტევის დრო - დრო, რომელიც საჭიროა კომპრესორის დასაწყებად, ბარიერის გადალახვის შემდეგ
- გამოშვების დრო - დრო, რომელიც სჭირდება კომპრესორის მუშაობის შეწყვეტას.
- შემცირების კოეფიციენტი - ფაქტორი, რომლითაც ხდება აუდიოს შეკუმშვა.
- მუხლის სიგანე - სიგანე (დეციბელებში) იმ ბარიერის გარშემო, რომელზეც კომპრესორი ნაწილობრივ მუშაობს (უფრო ბუნებრივი ხმა).
- შეკუმშვის შემდეგ სიგნალს დაემატა მომატება (დეციბელი) (მოცულობის გაზრდა/შემცირება)
შეკუმშვის პირველი გამოყენებისას ძალიან დამახინჯებული დამახინჯება ხდება იმიტომ, რომ ბარიერი ძალიან დაბალია და როგორც თავდასხმის დრო, ასევე გამოშვების დრო ძალიან მოკლეა, რაც ეფექტურად იწვევს მძიმე ბარიერის ქცევას. ეს აშკარად წყდება მეორე შემთხვევაში გათავისუფლების დროის გაზრდით. ეს არსებითად იწვევს კომპრესორის მოქმედებას გაცილებით რბილი გზით. აქ მე მხოლოდ ვაჩვენე, თუ როგორ შეიძლება 1 პარამეტრის შეცვლამ დრამატული გავლენა მოახდინოს აუდიოზე. ახლა თქვენი ჯერია ექსპერიმენტი ჩაატაროთ სხვადასხვა პარამეტრებით.
განხორციელება (ჯადოსნური მათემატიკა - სურვილისამებრ)
აღმოვაჩინე, რომ დინამიური დიაპაზონის შეკუმშვის გულუბრყვილოდ განხორციელება რთული იყო. ალგორითმი მოითხოვს 16 ბიტიანი მთლიანი რიცხვის გარდაქმნას დეციბელებად და შემდეგ გარდაქმნას მას 16 ბიტიან მთელ რიცხვზე მას შემდეგ რაც დაამუშავებთ სიგნალს. შევამჩნიე, რომ კოდის ერთ სტრიქონს სჭირდებოდა 10 მიკროწამი სტერეო მონაცემების დასამუშავებლად. როგორც სტერეო აუდიო აღებული 44.1 KHz ტოვებს მხოლოდ 11.3 მიკროწამს DSP– სთვის, ეს არის მიუღებლად ნელი… თუმცა, მცირე საძიებო ცხრილის (400 ბაიტი) და ინტერპოლაციის პროცედურის შერწყმით, Netwon– ის დაყოფილ განსხვავებებზე დაყრდნობით, ჩვენ შეგვიძლია მივიღოთ თითქმის 17 ბიტიანი სიზუსტე 0.2 მიკროწამში რა მე დაურთო pdf დოკუმენტი ყველა მათემატიკით ჭეშმარიტად დაინტერესებულთათვის. ეს გართულებულია, თქვენ გაფრთხილებული ხართ!
ნაბიჯი 9: Wifi ინტერფეისი
ახლა თქვენ გაქვთ Bluetooth მიმღები, რომელსაც შეუძლია გაუშვას რეალურ დროში DSP. სამწუხაროდ, თუ გსურთ შეცვალოთ DSP– ის რომელიმე პარამეტრი, თქვენ უნდა გათიშოთ თქვენი HiFi– დან, ატვირთოთ ახალი ესკიზი და შემდეგ ხელახლა დააკავშიროთ. ეს არის უხამსი. ამის გამოსასწორებლად მე შევქმენი ვებ სერვერი, რომლის საშუალებითაც შეგიძლიათ შეცვალოთ ყველა DSP პარამეტრი თქვენს კომპიუტერთან ხელახლა დაკავშირების გარეშე. ვებ სერვერის გამოყენების ესკიზი ქვემოთ მოცემულია.
#ჩართეთ
#მოიცავს btAudio audio = btAudio ("ESP_Speaker"); webDSP ვებ; void setup () {Serial.begin (115200); audio.begin (); int bck = 26; int ws = 27; int dout = 25; აუდიო. I2S (bck, dout, ws); // შეცვალეთ თქვენი WiFi ID და პაროლი const char* ssid = "SSID"; const char* პაროლი = "PASSWORD"; web.begin (ssid, პაროლი და აუდიო); } void loop () {web._server.handleClient (); }
კოდი თქვენს ESP32- ს ანიჭებს IP მისამართს, რომელიც შეგიძლიათ გამოიყენოთ ვებგვერდზე წვდომისათვის. პირველად ამ კოდის გაშვებისას თქვენ უნდა მიამაგროთ იგი თქვენს კომპიუტერს. ამ გზით თქვენ შეგიძლიათ ნახოთ თქვენს ESP32– ზე მინიჭებული IP მისამართი თქვენს სერიულ მონიტორზე. თუ გსურთ ამ ვებგვერდზე წვდომა, უბრალოდ ჩაწერეთ ეს IP მისამართი ნებისმიერ ბრაუზერში (დადასტურებულია ქრომზე).
ამ დროისთვის ჩვენ უნდა ვიცოდეთ Bluetooth და I2S ჩართვის მეთოდი. მთავარი განსხვავება არის webDSP ობიექტის გამოყენება. ეს ობიექტი იღებს თქვენს Wifi SSID- ს და პაროლს არგუმენტებად, ასევე მაჩვენებელს btAudio ობიექტზე. მთავარ მარყუჟში, ჩვენ მუდმივად ვიღებთ webDSP ობიექტს, რომ მოუსმინოს შემომავალი მონაცემები ვებ გვერდიდან და შემდეგ განაახლოთ DSP პარამეტრები. როგორც დასკვნითი წერტილი, უნდა აღინიშნოს, რომ Bluetooth და Wifi იყენებენ ერთსა და იმავე რადიოს ESP32– ზე. ეს ნიშნავს, რომ თქვენ შეიძლება დაგჭირდეთ 10 წამამდე ლოდინი, როდესაც თქვენ შეიყვანთ პარამეტრებს ვებ გვერდზე, სანამ ინფორმაცია ფაქტობრივად აღწევს ESP32.
ნაბიჯი 10: სამომავლო გეგმები
ვიმედოვნებთ, რომ თქვენ ისიამოვნეთ ინსტრუქციულად და ახლა თქვენს HiFi- ს დაემატა Bluetooth Audio და DSP. თუმცა, მე ვფიქრობ, რომ ამ პროექტში განვითარების დიდი ადგილია და მე უბრალოდ მინდოდა აღვნიშნო სამომავლო მიმართულებები, რომელთა მიღებაც შემიძლია.
- აუდიოს Wifi ნაკადის ჩართვა (აუდიოს საუკეთესო ხარისხისთვის)
- გამოიყენეთ I2S მიკროფონი ხმოვანი ბრძანებების გასააქტიურებლად
- შექმენით WiFi კონტროლირებადი ექვალაიზერი
- გახადე ის ლამაზად (პურის დაფა არ ყვირის პროდუქტის დიდ დიზაინზე)
როდესაც ამ იდეების განხორციელებას შევუდგები, მე უფრო ინსტრუქტაჟს გავაკეთებ. ან იქნებ ვინმემ მიიღოს ეს მახასიათებლები. ეს არის სიამოვნება, რომ ყველაფერი ღია წყარო იყოს!
გირჩევთ:
YADPF (YET კიდევ ერთი ციფრული სურათის ჩარჩო): 7 ნაბიჯი (სურათებით)
YADPF (YET კიდევ ერთი ციფრული სურათის ჩარჩო): მე ვიცი, რომ ეს არ არის ახალი პერსონალი, ვიცი, მე ვნახე ზოგიერთი ეს პროექტი აქ, მაგრამ მე ყოველთვის მინდოდა ჩემი ციფრული სურათის ჩარჩოს შექმნა. ყველა სურათის ჩარჩო, რაც მე ვნახე, ლამაზია, მაგრამ მე ვეძებდი სხვა რამეს, მე ვეძებ ნამდვილად ლამაზს
ციფრული სურათის ჩარჩო Gen4 ULCD-43DCT-CLB გამოყენებით: 3 ნაბიჯი
ციფრული სურათის ჩარჩო Gen4 ULCD-43DCT-CLB გამოყენებით: ციფრული სურათის ჩარჩოს შეუძლია აჩვენოს სურათები მიკრო SD ბარათზე წვდომით. ეს პროექტი იყენებს 4D სისტემებს, Gen4 uLCD-43DCT-CLB მისი ჩვენების მოდულისთვის. ციფრული სურათის ჩარჩო არის მარტივი პროექტი, რომელიც შეიძლება გამოყენებულ იქნას როგორც ჩვენება სახლისთვის ან ოფისებისთვის. მომხმარებლებს შეუძლიათ
წვრილმანი Arduino აუდიო სიგნალის სპექტრის ანალიზატორი: 3 ნაბიჯი
წვრილმანი Arduino აუდიო სიგნალის სპექტრის ანალიზატორი: ეს არის ძალიან მარტივი აუდიო ანალიზატორი ცვალებადი ვიზუალური რეჟიმებით
ციფრული სურათის ჩარჩო Numero Dos!: 4 ნაბიჯი (სურათებით)
ციფრული სურათის ჩარჩო Numero Dos!: ეს არის მეორე ციფრული სურათის ჩარჩო, რომელიც მე გავაკეთე (იხ. იაფი ციფრული სურათის ჩარჩო). მე ეს გავაკეთე საქორწინო საჩუქრად ჩემი ძალიან კარგი მეგობრისთვის და ვფიქრობ, რომ ძალიან კარგად გამოვიდა. მინიჭებული აქვს ციფრული სურათის ჩარჩოების ღირებულება
Raspberry Pi ციფრული სურათის ჩარჩო: 5 ნაბიჯი
Raspberry Pi ციფრული სურათის ჩარჩო: 10 წლის შემდეგ, მაღაზიაში ნაყიდი ციფრული სურათის ჩარჩო ჩავარდა. მე ვეძებდი ჩანაცვლებას ონლაინ რეჟიმში და აღმოვაჩინე, რომ შესადარებელი ჩანაცვლება რეალურად მეტს დაჯდა, ვიდრე ჩემი 10 წლის ჩარჩო. ვფიქრობდი, რომ ისინი პრაქტიკულად თავისუფლები იქნებოდნენ. ცხადია, შემეძლო