Სარჩევი:

მელოდია: 8 ნაბიჯი (სურათებით)
მელოდია: 8 ნაბიჯი (სურათებით)

ვიდეო: მელოდია: 8 ნაბიჯი (სურათებით)

ვიდეო: მელოდია: 8 ნაბიჯი (სურათებით)
ვიდეო: ზურა ბენიაიძე - 300 არაგველი / Zura Beniaidze - 300 Aragveli 2024, ივლისი
Anonim
Image
Image
ნაკადის გაგება
ნაკადის გაგება

მრავალი უპირატესობისა და ტექნოლოგიური გადაწყვეტილებების გარდა, რაც სახლიდან მუშაობის საშუალებას იძლევა, თანამშრომლებთან ურთიერთობის შემუშავებისა და სიცოცხლის შექმნის სირთულე კვლავ რჩება. MELODY არის ციფრული-ფიზიკური მოწყობილობა, რომელიც საშუალებას იძლევა შეიქმნას ერთობლივი მოკლე მუსიკალური ჯემი. თანამშრომლები კოორდინაციას უწევენ დროს და მოწყობილობა ადგენს ჯემის სესიას მორიგეობით და სხვადასხვა შემთხვევითი ხმით. პირველი მონაწილე ადგენს კონკრეტულ რიტმს, რის შემდეგაც თითოეული მონაწილე ამატებს საკუთარ მუსიკალურ მონაკვეთს, რომელიც შეესაბამება მითითებულ რიტმს. იმისათვის, რომ გაუადვილოს მომხმარებლებს მუსიკალური ფონის გარეშე, პროგრამული უზრუნველყოფა ეხმარება მათ შეინარჩუნონ ტემპი მათი დაწკაპუნებების შერჩევით და შესაბამისი რიტმის მორგებით. სესია მთავრდება დაახლოებით 3 წუთის შემდეგ, როდესაც ყველა მონაწილემ დაასრულა თავისი ნაწილის ჩაწერა.

Როგორ მუშაობს?

მელოდია დაფუძნებულია ESP2866 აპარატურაზე, რომელიც ურთიერთობს Node-Red სერვერთან MQTT პროტოკოლით. მოწყობილობა თარგმნის მოთამაშის ჩანაწერებს სიმბოლოების სტრიქონად, რომელიც იგზავნება სერვერზე და სერვერიდან უკან სხვა მოთამაშეებზე. ეს საშუალებას აძლევს ყველას ითამაშოს და მოისმინოს მელოდია ქსელის კავშირის შეწყვეტის გარეშე.

მელოდიას აქვს ორი ძირითადი ვიზუალური მაჩვენებელი. პირველი არის LED ზოლი, რომელიც აცნობებს მოთამაშეს როდის იწყება და როდის მთავრდება და მიუთითებს თუ არა მოთამაშის ჯერი. მეორე არის LED დისპლეი პროდუქტის ცენტრში, რომელიც გამოიყენება არსებული მელოდიის ვიზუალურად გამოსახვისათვის. 3 -დან 1 -მდე დათვლა მიუთითებს თამაშის დაწყების შესახებ და დროის ჩვენება მიმართავს მომხმარებელს როდის და როგორ სურს მას წვლილი შეიტანოს ჯგუფის მელოდიაში. ჩანაწერი ავტომატურად ინახება კომპანიის ღრუბელში მომავალი გამოყენებისთვის.

ეს პროექტი შემუშავებულია ოთხი სტუდენტის მიერ მედია ინოვაციების ლაბორატორიაში (MiLab) ინტერდისციპლინარულ ცენტრში Herzliya (IDC): შაჰარ აგასი, ედენ ბარ-ტოვი, გალ ეშჩარი და გად შტერნი. ზვიკა მარკფელდის, ნეტა ოფერისა და მიხალ ლესინსკის დახმარებით და ნოა მორაგისა და ორენ ცუკერმანის ხელმძღვანელობით.

მადლობა ტომ გრანოტს დიდი სასწავლო ინსტრუქციის შექმნისთვის, რომელიც დამეხმარა ვისწავლე როგორ განვახორციელო ზოგიერთი რამ აქ (ზოგიერთი ნაბიჯი აქ არის მოდელირებული ამ შესანიშნავი ინსტრუქციის მიხედვით).

მარაგები

  • 3D პრინტერი
  • ESP8266
  • 7 ღილაკი
  • 8X8 LED მატრიცა
  • WS2812B LED ზოლები
  • I2S გამაძლიერებელი
  • ქალი 1/8 "(3.5 მმ) 4 პოლუსიანი აუდიო ჯეკი
  • 4X 1K რეზისტორი
  • 1X3K რეზისტორი

ნაბიჯი 1: ნაკადის გაგება

ნაკადის გაგება
ნაკადის გაგება
ნაკადის გაგება
ნაკადის გაგება

ამ პროექტში ჩვენ შევეცადეთ რამდენიმე საკითხის მოგვარება:

  1. როგორ მოვახერხოთ ის ონლაინ რეჟიმში, რათა მოთამაშეებს შეეძლოთ ერთდროულად თამაში?
  2. როგორ შეგვიძლია გავიაროთ ინტერნეტ შეფერხებები და შევქმნათ შეუფერხებელი გამოცდილება?
  3. როგორ შეგვიძლია მუსიკას კარგი ჟღერადობა გავუწიოთ თუნდაც მუსიკალური ფონის გარეშე?

მუსიკის დრო და სერიალიზაცია

პირველი საკითხის გადასაჭრელად ჩვენ შევხედეთ MIDI პროტოკოლს და შევეცადეთ გამოგვეყენებინა იგი, მაგრამ ჩვენ დავინახეთ, რომ ის უფრო მძლავრია, ვიდრე ის, რაც ჩვენ რეალურად გვჭირდებოდა. ჩვენ მივიღეთ შთაგონება MIDI– დან და გავაკეთეთ ჩვენი მუსიკალური მარყუჟი, რომელიც წარმოდგენილია რიგით რიცხვით (0-5 – დან) რამდენჯერ მარყუჟების ზომა მოთამაშეებზე (ჩვენ მოგვიანებით განვმარტავთ ყველა მუსიკალურ მათემატიკას).

მუსიკაში ჩვენ რიტმებს ვყოფთ მუსიკალურ ბარებად. თითოეული ბარი ძირითადად მცირე დროის სეგმენტია, ჩვენ ვირჩევთ გამოვიყენოთ 4/4 (იგულისხმება 4 დარტყმა მუსიკალურ ზოლში) - ყველაზე გავრცელებული.

თითოეული დარტყმა იყოფა 4 შერჩევის ფანჯარაში, ასე რომ ყოველი დაკრული ნოტი ავტომატურად იქნება განლაგებული c კარგ პოზიციაში და ასევე მოგვცემს საშუალებას წარმოვადგინოთ სიმღერა, როგორც რიცხვის სტრიქონი სერვერზე გასაგზავნად.

იმისათვის, რომ მეგობრული ვიყოთ მოთამაშეებთან მუსიკალური ფონის გარეშე, ჩვენ გავაკეთეთ სამი რამ:

  1. შეზღუდეთ კლავიშების რაოდენობა, რათა მოთამაშე უფრო ნაკლებ ვარიანტზე გაამახვილოს ყურადღება.
  2. ჩვენ შევარჩიეთ იმავე მასშტაბის ნოტები, რომლებიც კარგად თამაშობენ, რათა არ იყოს დისონანსური ხმა.
  3. თითოეული პრეს დაყენებულია რიტმის "ფანჯარაში", რითაც უცხოა მოთამაშე მუსიკის რიტმისთვის

საკომუნიკაციო პროტოკოლები

ასე რომ, მას შემდეგ რაც გავიგეთ მუსიკის მიღმა არსებული ლოგიკა, როგორ შეგვიძლია ვუკავშირდეთ მას ჩვენს მოთამაშეებს შორის?

ამისათვის ჩვენ ვიყენებთ MQTT, გამოქვეყნება-გამოწერის ქსელის პროტოკოლს, რომელიც აგზავნის შეტყობინებებს მოწყობილობებს შორის.

თითოეული მოთამაშე გამოწერილია ორ თემაზე: მარყუჟი (მიიღეთ უახლესი მარყუჟი) და რიგი (იღებს მიმდინარე მოთამაშის პირადობის მოწმობას სინქრონიზაციის მიზნით).

თავის მხრივ, როდესაც მოთამაშე ასრულებს მელოდიის დაკვრას, ის დააჭერს UP ღილაკს და მარყუჟი (განახლებული) გადაეგზავნება MQTT ბროკერს, რომელიც გადასცემს მას მარყუჟის არხის ყველა მოთამაშეს.

ეს მარყუჟი დარჩება "მიძინებული" სანამ მიმდინარე მარყუჟი არ დასრულდება და შემდეგ შეცვლის მას. ასე რომ, ის გამჭვირვალე იქნება მოთამაშისთვის. ასევე მას შემდეგ, რაც ახალი მარყუჟი ამჟამად ადგილობრივად არის შენახული პლეერის მოწყობილობაზე, მუსიკისთვის ინტერნეტის შეფერხება არ არის, ამიტომ ჩვენ გადავწყვიტეთ მეორე საკითხი.

ნაბიჯი 2: სერვერის დაყენება - Ngrok

სერვერის დაყენება - Ngrok
სერვერის დაყენება - Ngrok
სერვერის დაყენება - Ngrok
სერვერის დაყენება - Ngrok

ngrok არის გვირაბის მომსახურება. ეს გვაძლევს საშუალებას გამოვავლინოთ ადგილობრივად გაშვებული სერვისი (ჩვენს შემთხვევაში, Node -RED) გარე სამყაროში - სერვერის დაყენების და DNS ჩანაწერებთან მუშაობის გარეშე. თქვენ უბრალოდ აწარმოებთ Node-RED თქვენს კომპიუტერს და შემდეგ აწარმოებთ გათბობას იმავე პორტზე Node-RED მუშაობს.

ეს არის ის - თქვენ მიიღებთ URL- ს, რომლითაც შეგიძლიათ გამოიყენოთ Node -RED მსოფლიოს ნებისმიერი ადგილიდან, მიუხედავად იმისა, თუ რა ქსელთან არის ის დაკავშირებული.

ინსტალაცია და კონფიგურაცია

  1. ჩამოტვირთეთ ngrok თქვენი ოპერაციული სისტემისთვის აქედან.
  2. მიჰყევით გადმოტვირთვის გვერდზე არსებულ ნაბიჯს, სანამ არ გახვალთ ნაბიჯი "Fire it up".
  3. "Fire it up step" - ში შეცვალეთ 80 1883 - ით და http to tcp as in./ngrok tcp 1883 თქვენიდან გამომდინარე
  4. შეინახეთ URL და პორტის ნომერი (ჩანს სურათზე) ჩვენ დაგვჭირდება, მოგვიანებით.

ნაბიჯი 3: სერვერის დაყენება - Node -Red

სერვერის დაყენება - კვანძი -წითელი
სერვერის დაყენება - კვანძი -წითელი

პროექტის სერვერის ლოგიკა, Node-RED არის ვიზუალური პროგრამირების გარემო, რომელიც საშუალებას გაძლევთ დააკავშიროთ სხვადასხვა პროგრამული უზრუნველყოფა (და აპარატურა!).

აქ ჩვენ გავაკეთეთ ყველა მოთამაშეს შორის კომუნიკაციის ლოგიკა (მარყუჟების გაზიარება და მიღება და შემობრუნების კოორდინაცია)

დააინსტალირეთ Node-Red

მიჰყევით შემდეგ ნაბიჯებს თქვენი Node-RED ნაკადის ჩატვირთვა თქვენს ადგილობრივ კომპიუტერზე:

  1. Node-RED მოითხოვს Node.js, დააინსტალირეთ აქედან
  2. დააინსტალირეთ Node-RED თავად ინსტრუქციის გამოყენებით.

ახლა, როდესაც თქვენ დაინსტალირებული გაქვთ Node-RED, გაუშვით იგი ზემოთ მოცემულ ინსტრუქციებზე და დაადასტურეთ თქვენ შეგიძლიათ ნახოთ ცარიელი ტილოს გვერდი. ის უნდა განთავსდეს

ახლა თქვენ დაგჭირდებათ იმ ნაკადის იმპორტი, რომელიც ჩვენ გამოვიყენეთ ამ პროექტისათვის, შეგიძლიათ იპოვოთ აქ და უბრალოდ დააჭიროთ იმპორტს დაამატეთ JSON ფაილი და დააჭირეთ განლაგებას.

Node-Red- ის დაყენება:

თუ გადახედავთ სურათს, რომელიც თან ერთვის ამ ნაბიჯს, ხედავთ, რომ ჩვენ გვაქვს 2 ძირითადი "მოქმედება", ჩვენ ვიღებთ მიმდინარე მარყუჟს ჩვენი ერთ -ერთი მოთამაშისგან და შემდეგ ვაძლევთ მას ყველა სხვა მოთამაშეს. გარდა ამისა, ჩვენ ვაგზავნით ახალ თამაშს ყველა მოთამაშეს. ასე რომ თამაში სინქრონიზებული რჩება.

ნაბიჯი 4: სერვერის დაყენება - MQTT (Mosquitto)

სერვერის დაყენება - MQTT (Mosquitto)
სერვერის დაყენება - MQTT (Mosquitto)

ვინაიდან Node-RED– ს არ ჰყავს საკუთარი MQTT ბროკერი და ჩვენ დაგვჭირდება კომუნიკაცია ჩვენს სენსორებთან და აქტივატორებთან MQTT– ით, ჩვენ გამოვიყენებთ ერთგულ MQTT ბროკერს. ვინაიდან Node-RED გირჩევთ Mosquitto- ს, ეს არის ის, რასაც ჩვენ გამოვიყენებთ. იხილეთ აქ გარკვეული ინფორმაცია MQTT– ს შესახებ და რატომ გამოიყენება იგი ხშირად IoT პროექტებში.

ინსტალაცია და კონფიგურაცია

  1. გადმოწერეთ Mosquitto აქედან და დააინსტალირეთ, ყველაფერი თქვენი ოპერაციული სისტემის მიხედვით.
  2. ჩვეულებრივ, თქვენ უნდა მიჰყევით ინსტრუქციას აქ, რათა დააკავშიროთ Node-RED Mosquitto– ს. თუმცა, თუ თქვენ იყენებდით ჩვენს ნაკადს, ის უკვე წინასწარ არის კონფიგურირებული თქვენთვის. სანამ სწორად დააინსტალირებთ ნაკადს და Mosquitrro- ს და Mosquitto მუშაობს 1883 პორტზე (რომელზეც ის ნაგულისხმევად მუშაობს), ის უნდა გამოვიდეს ყუთში.
  3. გაითვალისწინეთ, რომ ეს ნიშნავს, რომ MQTT ბროკერი და თქვენი Node-RED სერვერი მუშაობს ერთ აპარატზე. ეს სასარგებლოა სისტემის შიგნით კომუნიკაციის გასაადვილებლად. დამატებითი ინფორმაციისთვის იხილეთ ქვემოთ მოცემული შენიშვნა.

MQTT ტრაფიკის მონიტორინგი

მე გამოვიყენე MQTTfx ტრაფიკის მონიტორინგისთვის, ეს შესანიშნავი ინსტრუმენტია ძალიან მარტივი GUI– ით.

ნაბიჯი 5: კოდი

Კოდი
Კოდი

თქვენ შეგიძლიათ იპოვოთ კოდი GitHub– ში (ყველა მონაცემთა ფაილით და კონფიგურაციით. h)

დამოკიდებულებები:

სანამ esp2866 კოდს ჩატვირთავთ, თქვენ უნდა დააინსტალიროთ რამდენიმე ბიბლიოთეკა:

  1. libmad-8266 (მუსიკის დეკოდირება SPIFF– დან I2S– ში)
  2. EspMQTTC კლიენტი
  3. ESP8266WiFi
  4. ადაფრუტ_ნეოპიქსელი

ატვირთეთ ხმები ESP– ში SPIFF– ის გამოყენებით:

  1. მიჰყევით ამ დიდ ინსტრუქციას.
  2. დაამატეთ მონაცემთა საქაღალდე წყაროს კოდის დირექტორიაში.
  3. Arduino IDE ინსტრუმენტებში შეცვალეთ Flash ზომა "4MB (FS: 3MB TOA: ~ 512KB)"
  4. ასევე Tools– ში დააჭირეთ ESP2866 Sketch Data Upload

პარამეტრების დაყენება:

ამის შემდეგ გადადით config.h ფაილზე და დაამატეთ საჭირო მონაცემები, როგორიცაა WIFI სერთიფიკატები და ngrok URL და პორტი წინა საფეხურიდან (გადახედეთ თანდართულ ფოტოს მითითებისთვის).

p.s-მე ჯერ კიდევ დავამატე ავტომატური კავშირის ფუნქცია, რომელიც დაგეხმარებათ დააყენოთ WIFI და ngrok მონაცემები თქვენი სმარტფონიდან, რადგან ეს იყო კონცეფციის მხოლოდ პირველი მტკიცებულება, მინდა დავამატო ის ერთ დღეს.

დააყენეთ თქვენთვის სასურველი მოთამაშის რაოდენობა (ეს თამაში საუკეთესოდ მუშაობს 2-3 მოთამაშესთვის და ყუთის გარეთ ის დატვირთულია ბგერების მასივით 2 მოთამაშისთვის). მაგრამ შეიძლება ადვილად მორგებული იყოს მეტისთვის:

თითოეული მოთამაშისთვის დაამატეთ კიდევ ერთი ნაკადი წითელ კვანძში, რათა გამოაქვეყნოს მარყუჟი მომხმარებლის სპეციფიკურ თემაში.

ასევე, შეგიძლიათ შეცვალოთ მუსიკალური ხმა ამ მასივის მორგებით თქვენს პერსონალურ ბგერებზე:

აქ შეგიძლიათ ნახოთ 3 სახის ინსტრუმენტი (Chrods მოთამაშისთვის 0, წამყვანი მოთამაშისთვის 1 და ბასი მოთამაშისთვის 2)

const char* paths [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Cords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};

ნაბიჯი 6: დაბეჭდეთ 3D მოდელი

დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი
დაბეჭდეთ 3D მოდელი

პირველი ნაბიჯისათვის გადმოწერეთ STL და დაბეჭდეთ.

საყრდენების ამოღების და შესაძლოა ცოტაოდენი ქვიშის შემდეგ (დამოკიდებულია პრინტერის გარჩევადობაზე)

ხატავს მას სასურველ ფერში

ნაბიჯი 7: შეკრება და შედუღება

შეკრება და შედუღება
შეკრება და შედუღება

ასე რომ, ძირითადად აქ ხდება ნამდვილი მაგია.

თქვენ შეგიძლიათ მიჰყევით ამ სქემებს და შეაერთეთ ყველაფერი ერთად.

გაითვალისწინეთ, რომ თქვენ შეგიძლიათ შეცვალოთ PIN კოდების პოზიცია, უბრალოდ გახსოვდეთ, რომ შეიცვალოს იგი ასევე კოდში.

A0 და I2S საკმაოდ დაფიქსირებულია ადგილზე:

ვინაიდან A0 არის რეზისტენტული ხიდისთვის (ჩვენ ვიყენებთ განსხვავებას დენში, რომ ვიცოდეთ რომელი 5 ღილაკია დაჭერილი - მსგავსი ინსტრუქციის მსგავსი.

I2S– ს აქვს კონკრეტული კოდირება, რომლის ნახვა შეგიძლიათ აქ

ნაბიჯი 8: ითამაშეთ რამოდენიმე მარყუჟი თქვენს მეგობრებთან ერთად

გირჩევთ: