Სარჩევი:

ულტრაბგერითი პიანინო ჟესტური კონტროლით!: 10 ნაბიჯი (სურათებით)
ულტრაბგერითი პიანინო ჟესტური კონტროლით!: 10 ნაბიჯი (სურათებით)

ვიდეო: ულტრაბგერითი პიანინო ჟესტური კონტროლით!: 10 ნაბიჯი (სურათებით)

ვიდეო: ულტრაბგერითი პიანინო ჟესტური კონტროლით!: 10 ნაბიჯი (სურათებით)
ვიდეო: ამოუცნობი ფენომენი - სარეცხის თოკები 2024, ნოემბერი
Anonim
Image
Image
ულტრაბგერითი პი პიანინო ჟესტების კონტროლით!
ულტრაბგერითი პი პიანინო ჟესტების კონტროლით!

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

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

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

მე შევქმენი ეს პროექტი Gizmo Dojo– სთან ერთად (ჩემი ადგილობრივი მწარმოებელი Broomfield, CO), რათა შემექმნა ინტერაქტიული ექსპონატები, რომელთა გადატანა შეგვიძლია ადგილობრივ STEM/STEAM ღონისძიებებსა და Maker Faires– ში.

გთხოვთ ასევე გაეცნოთ უახლეს დოკუმენტაციას და გაკვეთილებს https://theotherandygrove.com/octasonic/, რომელიც ახლა შეიცავს ინფორმაციას ამ პროექტის პითონის ვერსიაზე (ეს ინსტრუქცია დაიწერა ჟანგის ვერსიისთვის).

ნაბიჯი 1: ინგრედიენტები

ამ ინსტრუქციისთვის დაგჭირდებათ შემდეგი ინგრედიენტები:

  • ჟოლო Pi (2 ან 3) SD ბარათით
  • 8 ულტრაბგერითი სენსორი HC-SR04
  • Octasonic Breakout დაფა
  • ორმხრივი ლოგიკური დონის კონვერტორი
  • 32 x 12 "ქალი-ქალი მხტუნავი მავთულები ულტრაბგერითი სენსორების დასაკავშირებლად
  • 13 x 6 "ქალი-ქალი Jumper მავთულები Raspberry Pi, Octasonic და Logic Level Converter დასაკავშირებლად
  • შესაფერისი კვების წყარო Raspberry Pi– სთვის
  • კომპიუტერის დინამიკები ან მსგავსი

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

HC -SR04 ულტრაბგერითი სენსორებს აქვთ 4 კავშირი - 5V, GND, Trigger და Echo. როგორც წესი, Trigger და Echo დაკავშირებულია მიკროკონტროლერის ან Raspberry Pi- ს ცალკეულ ქინძისთავებთან, მაგრამ ეს ნიშნავს, რომ თქვენ დაგჭირდებათ 16 ქინძისთავის გამოყენება 8 სენსორის დასაკავშირებლად და ეს პრაქტიკული არ არის. სწორედ აქ შემოდის Octasonic Breakout დაფა. ეს დაფა უკავშირდება ყველა სენსორს და აქვს გამოყოფილი მიკროკონტროლი, რომელიც აკონტროლებს სენსორებს და შემდეგ დაუკავშირდება Raspberry Pi– ს SPI– ით.

HC-SR04 მოითხოვს 5V- ს და Raspberry Pi არის მხოლოდ 3.3V, ამიტომ ჩვენ ასევე გვჭირდება ლოგიკური დონის გადამყვანი, რომელიც Raspberry Pi- ს აკავშირებს Octasonic გარღვევის დაფაზე.

ნაბიჯი 2: შეაერთეთ ულტრაბგერითი სენსორები Octasonic დაფასთან

შეაერთეთ ულტრაბგერითი სენსორები Octasonic Board- თან
შეაერთეთ ულტრაბგერითი სენსორები Octasonic Board- თან
შეაერთეთ ულტრაბგერითი სენსორები Octasonic Board- თან
შეაერთეთ ულტრაბგერითი სენსორები Octasonic Board- თან

გამოიყენეთ 4 ქალი-ქალი ჯუმბერის მავთული თითოეული ულტრაბგერითი სენსორის დაფაზე დასაკავშირებლად, ფრთხილად იყავით, რომ სწორად დააკავშიროთ ისინი. დაფა შექმნილია ისე, რომ ქინძისთავები იყოს იმავე თანმიმდევრობით, როგორც ულტრაბგერითი სენსორის ქინძისთავები. დაფაზე მარცხნიდან მარჯვნივ, ქინძისთავები არის GND, Trigger, Echo, 5V.

ნაბიჯი 3: შეაერთეთ ლოგიკური დონის გადამყვანი Octasonic დაფასთან

შეაერთეთ ლოგიკური დონის გადამყვანი Octasonic დაფასთან
შეაერთეთ ლოგიკური დონის გადამყვანი Octasonic დაფასთან

Raspberry Pi და Octasonic Board ურთიერთობენ SPI– ით. SPI იყენებს 4 მავთულს:

  • Master in, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • სერიული საათი (SCK)
  • მონათა შერჩევა (SS)

გარდა ამისა, ჩვენ გვჭირდება ენერგიის დაკავშირება (5V და GND).

ლოგიკური დონის გადამყვანს აქვს ორი მხარე - დაბალი ძაბვა (LV) და მაღალი ძაბვა (HV). ჟოლო დაუკავშირდება LV მხარეს, რადგან ეს არის 3.3V. Octasonic დაუკავშირდება HV მხარეს, რადგან ის არის 5V.

ეს ნაბიჯი არის Octasonic– ის დასაკავშირებლად ლოგიკური დონის გადამყვანის HV მხარეს

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

კავშირები Octasonic– დან Logic Level– ის გადამყვანთან უნდა იყოს შემდეგი:

  • 5V HV– მდე
  • SCK- დან HV4- მდე
  • MISO– დან HV3– მდე
  • MOSI– დან HV2– მდე
  • SS– დან HV1– მდე
  • GND to GND

ნაბიჯი 4: შეაერთეთ ლოგიკური დონის გადამყვანი Raspberry Pi– სთან

შეაერთეთ ლოგიკური დონის გადამყვანი Raspberry Pi– სთან
შეაერთეთ ლოგიკური დონის გადამყვანი Raspberry Pi– სთან

Raspberry Pi და Octasonic Board ურთიერთობენ SPI– ით. SPI იყენებს 4 მავთულს:

  • Master in, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • სერიული საათი (SCK)
  • მონათა შერჩევა (SS)

გარდა ამისა, ჩვენ გვჭირდება ენერგიის დაკავშირება (3.3V და GND). ლოგიკური დონის გადამყვანს აქვს ორი მხარე - დაბალი ძაბვა (LV) და მაღალი ძაბვა (HV). ჟოლო დაუკავშირდება LV მხარეს, რადგან ეს არის 3.3V. Octasonic დაუკავშირდება HV მხარეს, რადგან ის არის 5V.

ეს ნაბიჯი არის Raspberry Pi ლოგიკური დონის გადამყვანის LV მხარეს დასაკავშირებლად

კავშირები Raspbery Pi– დან ლოგიკური დონის გადამყვანთან უნდა იყოს შემდეგი:

  • 3.3V to LV
  • GPIO11 (SPI_SCLK) LV4- მდე
  • GPIO09 (SPI_MISO) LV3- მდე
  • GPIO10 (SPI_MOSI) LV2– დან
  • GPIO08 (SPI_CE0_N) SS– დან LV1– მდე
  • GND to GND

გამოიყენეთ ამ საფეხურზე დამაგრებული დიაგრამა ჟოლოს პიზე სწორი ქინძისთავების მოსაძებნად!

ნაბიჯი 5: დაუკავშირეთ Raspberry Pi 5V Octasonic 5V– ს

დაუკავშირეთ Raspberry Pi 5V Octasonic 5V– ს
დაუკავშირეთ Raspberry Pi 5V Octasonic 5V– ს
დაუკავშირეთ Raspberry Pi 5V Octasonic 5V– ს
დაუკავშირეთ Raspberry Pi 5V Octasonic 5V– ს

დასამატებელია ერთი ბოლო მავთული. ჩვენ რეალურად უნდა გავამდიდროთ Octasonic დაფა 5V– ით, ასე რომ ჩვენ ამას ვაკეთებთ ერთი Raspberry Pi 5V ქინძისთავის შეერთებით Octasonic AVR სათაურზე 5V პინთან. ეს არის ქვედა მარცხენა პუნქტი AVR სათაურის ბლოკში (ეს არის 2 x 3 ბლოკი დაფის ზედა მარჯვენა კუთხეში). იხილეთ თანდართული ფოტო, სადაც ნაჩვენებია სად არის AVR ბლოკი.

იხილეთ სხვა თანდართული დიაგრამა, რომ იპოვოთ 5V პინი Raspberry Pi– ზე.

ნაბიჯი 6: დააინსტალირეთ პროგრამული უზრუნველყოფა

დააინსტალირეთ Raspian

დაიწყეთ Raspbian Jessie– ს სუფთა ინსტალაციით, შემდეგ განაახლეთ იგი უახლესი ვერსიით:

sudo apt-get განახლება

sudo apt-get განახლება

SPI ჩართვა

თქვენ უნდა ჩართოთ SPI Raspberry Pi– ზე ამ პროექტის მუშაობისთვის! ამისათვის გამოიყენეთ Raspberry Pi Configuration პროგრამა.

ასევე მნიშვნელოვანია Pi- ს გადატვირთვა SPI- ის მოქმედების შემდეგ

დააინსტალირეთ FluidSynth

Fluidsynth არის გასაოცარი უფასო პროგრამული უზრუნველყოფა MIDI synth. თქვენ შეგიძლიათ დააინსტალიროთ იგი ბრძანების სტრიქონიდან ამ ბრძანებით:

sudo apt-get დააინსტალირეთ fluidsynth

დააინსტალირეთ Rust პროგრამირების ენა

ულტრაბგერითი Pi პიანინო ხორციელდება Rust პროგრამირების ენაზე Mozilla– დან (ეს არის C ++ - ის მსგავსი, მაგრამ ცუდი ნაჭრების გარეშე). ეს არის ის, რასაც ყველა მაგარი ბავშვი იყენებს ამ დღეებში.

მიჰყევით ინსტრუქციას https://rustup.rs/, რომ დააინსტალიროთ Rust. თქვენი დროის დაზოგვის მიზნით, მითითებულია ამ ერთი ბრძანების შესრულება. თქვენ შეგიძლიათ მიიღოთ ნაგულისხმევი პასუხები ნებისმიერ კითხვაზე ინსტალაციის დროს.

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

ექსპორტი RUSTUP_USE_HYPER = 1 კურსი https://sh.rustup.rs -sSf | შ

ჩამოტვირთეთ ულტრაბგერითი Pi Piano წყაროს კოდი

ულტრაბგერითი Pi Piano კოდის წყაროს კოდი განთავსებულია github– ზე. კოდის მიღების ორი ვარიანტი არსებობს. თუ თქვენ იცნობთ git და github, შეგიძლიათ მოახდინოთ რეპონის კლონირება:

git clone [email protected]: TheGizmoDojo/UltrasonicPiPiano.git

გარდა ამისა, შეგიძლიათ ჩამოტვირთოთ უახლესი კოდის zip ფაილი.

შეადგინეთ საწყისი კოდი

cd ულტრაბგერითი პიანინო

ტვირთის მშენებლობა -გამოშვება

გამოცადეთ კოდი

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

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

ტვირთის გაშვება -გამოშვება

თუ გაინტერესებთ, "-გამოშვების" დროშა ეუბნება Rust- ს, შეადგინოს კოდი რაც შეიძლება ეფექტურად, განსხვავებით ნაგულისხმევი "-debug" პარამეტრისგან.

ნაბიჯი 7: შექმენით მუსიკა

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

ეს "run.sh" სკრიპტი დარწმუნებულია, რომ კოდი შედგენილია და შემდეგ აწარმოებს კოდს, მილსადენს გამოსავალს fluidsynth- ში.

./ გაუშვით.შ

დარწმუნდით, რომ თქვენ გაქვთ გამაძლიერებელი დინამიკები, რომლებიც დაკავშირებულია 3.5 მმ აუდიო ჯეკთან Raspberry Pi- ზე და სენსორებზე ხელის მოძრაობისას უნდა გესმოდეთ მუსიკა.

თუ თქვენ არ გესმით მუსიკა და გაქვთ HDMI მონიტორი მიმაგრებული, მაშინ აუდიო გამომავალი ალბათ იქ მიდის. ამის გამოსასწორებლად, უბრალოდ გაუშვით ეს ბრძანება და შემდეგ ხელახლა დაიწყეთ Pi Piano:

sudo amixer cset numid = 3 1

მოცულობის შეცვლა

მოცულობა (ან "მოგება") მითითებულია "-g" პარამეტრით fluidsynth. თქვენ შეგიძლიათ შეცვალოთ run.sh სკრიპტი და შეცვალოთ ეს მნიშვნელობა. გთხოვთ გაითვალისწინოთ, რომ ამ პარამეტრში მცირე ცვლილებები იწვევს მოცულობის დიდ ცვლილებას, ამიტომ შეეცადეთ გაზარდოთ იგი მცირე რაოდენობით (მაგალითად, 0.1 ან 0.2).

ნაბიჯი 8: ჟესტების კონტროლი

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

კონცეფცია ძალიან მარტივია. პროგრამული უზრუნველყოფა თვალყურს ადევნებს რომელი სენსორები არის დაფარული (10 სმ -ის ფარგლებში) და რომელი არა. ეს ითარგმნება 8 ორობითი რიცხვით (1 ან 0). ეს ძალიან მოსახერხებელია, რადგან 8 ორობითი რიცხვის თანმიმდევრობა ქმნის "ბაიტს", რომელსაც შეუძლია წარმოადგინოს რიცხვები 0 -დან 255 -მდე. თუ თქვენ ჯერ კიდევ არ იცით ორობითი რიცხვების შესახებ, მაშინ მე გირჩევთ გაკვეთილის ძიებას. ორობითი რიცხვები არის ფუნდამენტური უნარი, თუ გსურთ გაიგოთ მეტი პროგრამირების შესახებ.

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

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

ნაბიჯი 9: დანართის დამზადება

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

ნაბიჯი 10: პრობლემების მოგვარება და შემდეგი ნაბიჯები

Დიაგნოსტიკა

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

კიდევ ერთი საერთო პრობლემა არის SPI– ის ჩართვა და pi– ს გადატვირთვა.

გთხოვთ ეწვიოთ https://theotherandygrove.com/octasonic/ სრული დოკუმენტაციისთვის, მათ შორის პრობლემების მოგვარების რჩევებს, Rust და Python– ის სპეციალურ სტატიებს, ასევე ინფორმაციას იმის შესახებ, თუ როგორ მიიღოთ მხარდაჭერა.

Შემდეგი ნაბიჯები

პროექტის დასრულებისთანავე გირჩევთ ექსპერიმენტი ჩაატაროთ კოდზე და სცადოთ სხვადასხვა მუსიკალური ინსტრუმენტები. MIDI ინსტრუმენტის კოდები არის 1 -დან 127 -მდე და დოკუმენტირებულია აქ.

გსურთ ერთი მუსიკალური ინსტრუმენტი თითოეული სენსორით განსხვავებული ოქტავა? იქნებ გსურთ თითოეული სენსორი იყოს ცალკე ინსტრუმენტი? შესაძლებლობები თითქმის შეუზღუდავია!

იმედი მაქვს მოგეწონათ ეს სასწავლო. გთხოვთ მოიწონოთ, თუ მოგეწონათ და აუცილებლად გამოიწერეთ ჩემი აქ და ჩემი YouTube არხი მომავალი პროექტების სანახავად.

გირჩევთ: