Mündəricat:
- Addım 1: Tərkibi
- Addım 2: Ultrasonik Sensorları Səkkizbucaqlı lövhəyə qoşun
- Addım 3: Məntiq Səviyyə Dönüştürücüsünü Səkkizlik lövhəsinə qoşun
- Addım 4: Məntiq Səviyyə Dönüştürücüsünü Raspberry Pi -yə qoşun
- Addım 5: Raspberry Pi 5V -ni Octasonic 5V -ə qoşun
- Addım 6: Proqramı Qurun
- Addım 7: Biraz musiqi yaradın
- Addım 8: Jest Control
- Addım 9: Qutunun hazırlanması
- Addım 10: Problem Giderme və Sonrakı Adımlar
Video: Jest Nəzarətli Ultrasonik Pi Piano!: 10 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Bu layihə, giriş olaraq ucuz HC-SR04 ultrasəs sensorlarından istifadə edir və yüksək keyfiyyətli səs üçün Raspberry Pi üzərindəki sintezator vasitəsilə çalınabilən MIDI qeydləri yaradır.
Layihə, əllərinizi bir neçə saniyə ərzində ən kənardakı iki sensordan tutaraq dəyişdirilə biləcəyiniz bir jest nəzarətinin əsas formasından da istifadə edir. Başqa bir jest, bitirdikdən sonra Raspberry Pi -ni bağlamaq üçün istifadə edilə bilər.
Yuxarıdakı video, bitmiş məhsulu sadə bir lazer kəsmə qutusunda göstərir. Layihənin necə işlədiyini izah edən bu təlimatda daha sonra daha dərin bir video var.
Bu layihəni, yerli STEM/STEAM tədbirlərinə və Maker Faires -ə apara biləcəyimiz bəzi interaktiv eksponatlar hazırlamaq üçün Gizmo Dojo (Broomfield, CO -dakı yerli istehsal sahəm) ilə birlikdə yaratdım.
Zəhmət olmasa https://theotherandygrove.com/octasonic/ ünvanındakı ən son sənədləri və dərsləri nəzərdən keçirin ki, bu da bu layihənin Python versiyası haqqında məlumatları ehtiva edir (bu təlimat Rust versiyası üçün yazılmışdır).
Addım 1: Tərkibi
Bu təlimat üçün aşağıdakı maddələrə ehtiyacınız olacaq:
- SD kartlı Raspberry Pi (2 və ya 3)
- 8 HC-SR04 ultrasəs sensoru
- Octasonic Breakout Board
- İki istiqamətli məntiq səviyyəsi çeviricisi
- Ultrasonik sensorları birləşdirmək üçün 32 x 12 "Qadın-Qadın Jumper Telləri
- Raspberry Pi, Octasonic və Logic Level Converter-i bağlamaq üçün 13 x 6 "Qadın-Qadın Jumper Telləri
- Raspberry Pi üçün uyğun enerji təchizatı
- PC dinamikləri və ya bənzəri
Mümkünsə daha çox həssas və xoş bir səslə nəticələnən daha çox hesablama gücünə malik olduğu üçün Raspberry Pi 3 istifadə etməyi məsləhət görürəm. Kiçik bir düzəliş ilə bir Raspberry Pi 2 ilə yaxşı işləyə bilər, amma bu layihə üçün orijinal Raspberry Pi istifadə etməyə çalışmazdım.
HC -SR04 ultrasonik sensorlar 4 əlaqəyə malikdir - 5V, GND, Trigger və Echo. Tipik olaraq, Trigger və Echo bir mikrokontrolörün və ya Raspberry Pi -nin ayrı pinlərinə bağlanır, lakin bu, 8 sensoru bağlamaq üçün 16 pin istifadə etməyiniz lazım olduğunu bildirir və bu praktik deyil. Bura Octasonic breakout lövhəsinin daxil olduğu yerdir. Bu lövhə bütün sensorlara qoşulur və sensorları izləyən və sonra SPI üzərindən Raspberry Pi ilə əlaqə quran xüsusi bir mikro nəzarətçiyə malikdir.
HC-SR04 5V tələb edir və Raspberry Pi yalnız 3.3V-dir, buna görə də Raspberry Pi-ni Octasonic breakout lövhəsinə bağlayacaq məntiqi səviyyəli çeviriciyə ehtiyacımız var.
Addım 2: Ultrasonik Sensorları Səkkizbucaqlı lövhəyə qoşun
Hər bir ultrasonik sensoru lövhəyə bağlamaq üçün 4 qadın-dişi tullanan teldən istifadə edərək onları düzgün şəkildə bağlayın. Lövhə, sancaqlar ultrasonik sensordakı sancaqlar ilə eyni qaydada olacaq şəkildə dizayn edilmişdir. Lövhədə soldan sağa sancaqlar GND, Trigger, Echo, 5V -dir.
Addım 3: Məntiq Səviyyə Dönüştürücüsünü Səkkizlik lövhəsinə qoşun
Raspberry Pi və Octasonic Board SPI üzərindən ünsiyyət qurur. SPI 4 teldən istifadə edir:
- Giriş, Köləlik (MISO)
- Master Out, Slave In (MOSI)
- Serial Saat (SCK)
- Qul Seçimi (SS)
Əlavə olaraq, gücə (5V və GND) qoşulmalıyıq.
Məntiq səviyyəsi çeviricisinin iki tərəfi var - aşağı gərginlik (LV) və yüksək gərginlik (HV). Raspberry 3.3V olduğundan LV tərəfinə qoşulacaq. Octasonic, 5V olduğu üçün HV tərəfinə qoşulacaq.
Bu addım, Octasonic'i məntiq səviyyəsi çeviricisinin HV tərəfinə bağlamaq üçündür
Məntiq səviyyəsi çeviricisinə hansı pinlərin bağlanmalı olduğunu göstərən bu addıma əlavə edilmiş fotoya baxın.
Octasonic -dən Logic Level çeviricisinə bağlantılar aşağıdakı kimi olmalıdır:
- 5V - HV
- HV4 -ə SCK
- MISO -dan HV3 -ə qədər
- MOSI -dən HV2 -ə qədər
- SS -dən HV1 -ə qədər
- GND - GND
Addım 4: Məntiq Səviyyə Dönüştürücüsünü Raspberry Pi -yə qoşun
Raspberry Pi və Octasonic Board SPI üzərindən ünsiyyət qurur. SPI 4 teldən istifadə edir:
- Giriş, Köləlik (MISO)
- Master Out, Slave In (MOSI)
- Serial Saat (SCK)
- Qul Seçimi (SS)
Əlavə olaraq, gücü (3.3V və GND) birləşdirməliyik. Məntiq səviyyəsi çeviricisinin iki tərəfi var - aşağı gərginlik (LV) və yüksək gərginlik (HV). Raspberry 3.3V olduğundan LV tərəfinə qoşulacaq. Octasonic, 5V olduğu üçün HV tərəfinə qoşulacaq.
Bu addım, Raspberry Pi -ni məntiq səviyyəsi çeviricisinin LV tərəfinə bağlamaq üçündür
Raspbery Pi -dən Məntiq Səviyyə çeviricisinə bağlantılar aşağıdakı kimi olmalıdır:
- 3.3V -dan LV -ə qədər
- GPIO11 (SPI_SCLK) - LV4
- GPIO09 (SPI_MISO) - LV3
- GPIO10 (SPI_MOSI) - LV2
- GPIO08 (SPI_CE0_N) SS -dən LV1 -ə qədər
- GND - GND
Raspberry Pi -də düzgün pinləri tapmaq üçün bu addıma əlavə edilmiş diaqramı istifadə edin!
Addım 5: Raspberry Pi 5V -ni Octasonic 5V -ə qoşun
Əlavə etmək üçün bir son tel var. Octasonic lövhəsini 5V ilə gücləndirməliyik, buna görə də Raspberry Pi 5V pinlərindən birini Octasonic AVR başlığındakı 5V pininə bağlayaraq edirik. Bu AVR başlıq blokundakı sol alt pindir (bu, lövhənin sağ üst hissəsindəki 2 x 3 blokdur). AVR blokunun harada olduğunu göstərən fotoşəkilə baxın.
Raspberry Pi üzərindəki 5V pinini tapmaq üçün əlavə edilmiş diaqrama baxın.
Addım 6: Proqramı Qurun
Raspian quraşdırın
Təmiz bir Raspbian Jessie quraşdırması ilə başlayın, sonra ən son versiyaya yeniləyin:
sudo apt-get yeniləməsi
sudo apt-get yeniləmə
SPI aktiv edin
Bu layihənin işləməsi üçün Raspberry Pi -də SPI -ni aktiv etməlisiniz! Bunu etmək üçün Raspberry Pi Konfiqurasiya yardım proqramından istifadə edin.
SPI -nin qüvvəyə minməsi üçün onu işə saldıqdan sonra Pi -ni yenidən başlatmaq da vacibdir
FluidSynth quraşdırın
Fluidsynth inanılmaz bir pulsuz proqram MIDI synthdir. Bu əmrlə əmr satırından quraşdıra bilərsiniz:
sudo apt-get install fluidsynth
Rust Proqramlaşdırma Dilini quraşdırın
Ultrasonik Pi Piano, Mozilla'dan Rust Proqramlaşdırma Dilində tətbiq olunur (C ++ kimidir, amma pis bitlər olmadan). Bu günlərdə bütün sərin uşaqların istifadə etdikləri budur.
Rust qurmaq üçün https://rustup.rs/ ünvanındakı təlimatları izləyin. Vaxtınıza qənaət etmək üçün təlimatlar bu bir əmri yerinə yetirməkdir. Quraşdırma zamanı bütün sualların standart cavablarını qəbul edə bilərsiniz.
Qeyd: Bu təlimat verildiyindən, Raspberry Pi -də Rust -un quraşdırılması ilə bağlı bəzi problemlər var. Pis vaxt:-/ amma məsələni həll etmək üçün aşağıdakı əmri dəyişdirdim. Ümid edirik ki, bunu tezliklə düzəldəcəklər. İnsanların yükləyə və SD karta yaza biləcəyi bir görüntü yaratmaq üzərində işləyirəm. İstəyirsinizsə, mənimlə əlaqə saxlayın.
ixrac RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | ş
Ultrasonik Pi Piano mənbə kodunu yükləyin
Ultrasonik Pi Piano mənbə kodu github -da yerləşdirilir. Kodu əldə etmək üçün iki seçim var. Git və github ilə tanışsınızsa, repo klonlaya bilərsiniz:
git clone [email protected]: TheGizmoDojo/UltrasonicPiPiano.git
Alternativ olaraq, ən son kodun bir zip faylını yükləyə bilərsiniz.
Mənbə kodunu tərtib edin
cd UltrasonicPiPiano
yük qurmaq -buraxmaq
Kodu sınayın
Növbəti addımda musiqi yaratmağa keçməzdən əvvəl, proqramın işlədiyinə və sensorlardan etibarlı məlumatları oxuya biləcəyimizə əmin olaq.
Tətbiqi işə salmaq üçün aşağıdakı əmrdən istifadə edin. Bu sensorlardakı məlumatları oxuyacaq və sonra konsolda çap olunan MIDI qeydlərinə çevirəcəkdir. Əllərinizi sensorlar üzərində hərəkət etdirərkən məlumatların yaradıldığını görməlisiniz. Əks təqdirdə, bu təlimatın sonunda olan problemlərin aradan qaldırılması bölməsinə keçin.
yüklərin buraxılması
Əgər maraqlanırsınızsa, "-buraxın" bayrağı Rusta kodun mümkün olan ən səmərəli tərtib etməsini söyləyir.
Addım 7: Biraz musiqi yaradın
Hələ də mənbə kodunu yüklədiyiniz qovluqda olduğunuzdan əmin olun və aşağıdakı əmri işlədin.
Bu "run.sh" skripti, kodun tərtib olunduğundan əmin olur və sonra çıxışı fluidsynth -ə ötürərək kodu işə salır.
./run.sh
Raspberry Pi üzərindəki 3.5 mm audio jakına gücləndirilmiş dinamiklər bağladığınızdan və əllərinizi sensorlar üzərində gəzdirərkən musiqi eşitməyinizdən əmin olun.
Musiqi eşitmirsinizsə və bir HDMI monitorunuz varsa, ehtimal ki, səs çıxışı ora gedir. Bunu düzəltmək üçün bu əmri işlədin və sonra Pi Pianonu yenidən başladın:
sudo amixer cset sayı = 3 1
Səsin dəyişdirilməsi
Həcmi (və ya "mənfəət") "-g" parametri ilə fluidsynth üçün göstərilir. Run.sh skriptini dəyişdirə və bu dəyəri dəyişə bilərsiniz. Unutmayın ki, bu parametrdəki kiçik dəyişikliklər həcmdə böyük bir dəyişikliklə nəticələnir, buna görə də onu az miqdarda artırmağa çalışın (0.1 və ya 0.2 kimi).
Addım 8: Jest Control
Jest nəzarətinin necə işlədiyi də daxil olmaqla layihənin tam nümayişi üçün bu addıma əlavə edilmiş videoya baxın.
Konsepsiya çox sadədir. Proqram, hansı sensorların əhatə olunduğunu (10 sm daxilində) və hansının olmadığını izləyir. Bu 8 ikili rəqəmə çevrilir (1 və ya 0). Bu çox əlverişlidir, çünki 8 ikili ədəddən ibarət ardıcıllıq 0 ilə 255 arasında olan rəqəmləri təmsil edə biləcək bir "bayt" təşkil edir. Əgər ikili ədədlər haqqında hələ məlumatınız yoxdursa, o zaman bir dərslik axtarmağı məsləhət görürəm. İkili ədədlər, proqramlaşdırma haqqında daha çox öyrənmək istəyirsinizsə öyrənmək üçün əsas bir bacarıqdır.
Proqram, sensorların mövcud vəziyyətini cari jesti təmsil edən bir bayta xəritələyir. Bu rəqəm bir çox dövr üçün eyni qalırsa, proqram bu jestlə hərəkət edir.
Ultrasonik sensorlar çox etibarlı olmadığından və sensorlar arasında müdaxilə ola biləcəyi üçün jestlərdən istifadə edərkən bir az səbr etməlisiniz. Sensorlardan tutduğunuz məsafəni və tutduğunuz bucağı dəyişməyə çalışın. Səsi daha yaxşı əks etdirmək üçün soyuqdan da sensorlar üzərində düz və möhkəm bir şey tutmağa çalışırsınız.
Addım 9: Qutunun hazırlanması
Bunu daimi bir sərgi etmək və insanlara nümayiş etdirmək istəyirsinizsə, yəqin ki, bir növ qapaq etmək istəyəcəksiniz. Bu ağacdan, kartondan və ya bir çox digər materiallardan hazırlana bilər. Bu layihə üçün üzərində işlədiyimiz korpusu göstərən bir video. Bu ağacdan hazırlanmışdır, ultrasəs sensorlarını yerində saxlamaq üçün deliklər açılmışdır.
Addım 10: Problem Giderme və Sonrakı Adımlar
Giderme
Layihə işləmirsə, bu ümumiyyətlə bir kabel xətası ilə əlaqədardır. Bütün əlaqələri iki dəfə yoxlamaq üçün vaxt ayırın.
Başqa bir ümumi problem, SPI -ni işə sala bilməmək və pi -ni yenidən başlatmaqdır.
Zəhmət olmasa, https://theotherandygrove.com/octasonic/ saytına daxil olun və Rust və Python -a aid xüsusi məqalələr daxil olmaqla problemlərin həlli ilə bağlı məsləhətlər də daxil olmaqla tam sənədlər əldə edin.
Növbəti addımlar
Layihə işlədikdən sonra kodu sınamağı və fərqli musiqi alətlərini sınamağı məsləhət görürəm. MIDI alət kodları 1 ilə 127 arasındadır və burada sənədləşdirilmişdir.
Hər sensoru fərqli bir oktavada çalan tək bir musiqi aləti istəyirsinizmi? Bəlkə hər bir sensorun ayrı bir alət olmasını istərdiniz? İmkanlar demək olar ki, sonsuzdur!
Ümid edirəm bu dərsdən zövq aldınız. Zəhmət olmasa bəyənsəniz, gələcək layihələri görmək üçün burada və YouTube kanalımda mənə abunə olun.
Tövsiyə:
Jest Nəzarətli Robot - Spinel Crux: 4 addım
Jest Nəzarətli Robot - Spinel Crux: Spinel Crux Simsiz Müşahidə Layihəsi üçün Jestlə İdarə Edilən Robot. Bu seriyada, kobud ərazilərdə gəzə bilən və əl hərəkətləri ilə idarə edə bilən bir robot quracağıq. Robotu idarə etmək üçün idarəetmə əlcəyindən istifadə edəcəyik
Sadə Jest Nəzarəti - Qolunuzun Hərəkəti ilə RC Oyuncaqlarınızı İdarə Edin: 4 Addım (Şəkillərlə)
Sadə Jest Nəzarəti - Qolunuzun Hərəkəti ilə RC Oyuncaqlarınızı İdarə Edin: 'ible' #45 -ə xoş gəldiniz. Bir müddət əvvəl Lego Star Wars hissələrini istifadə edərək BB8-in tam işlək bir RC versiyasını hazırladım … https://www.instructables.com/id/Whats-Inside-My-R… Nə qədər sərin olduğunu görəndə Sphero tərəfindən hazırlanan Force Band, düşündüm: "Tamam, mən
Jest Nəzarət Robotu yaratmağın ən asan yolu: 7 addım (şəkillərlə)
Bir Jest Nəzarət Robotu yaratmağın ən asan yolu: Oyuncaqları super qəhrəman kimi idarə edin. Jestlə idarə olunan avtomobilin necə hazırlanacağını öyrənin. Bu, jestlə idarə olunan avtomobili özünüz necə düzəltmək barədədir. Əsasən bu MPU-6050 3 oxlu giroskop, akselerometrin sadə bir tətbiqidir. Daha çox şey edə bilərsiniz
Node-MCU ilə Jest Nəzarətli Universal Uzaqdan: 12 Addım
Node-MCU ilə Jest Nəzarətli Universal Uzaqdan: Hər kəsə salam və bu layihəyə xoş gəldiniz! Mən olduqca tənbəl insanam və tənbəl adamın kabusu uzaqdan uzaqda olduğunu başa düşəndə televizora baxmaqdır! Uzaqdan idarə edə bilsəm heç vaxt çox uzaqda olmayacağını başa düşdüm
Bir Akselerometr və RF Verici-Alıcı Çifti istifadə edərək Jest Nəzarətli Rover: 4 addım
Bir Akselerometr və RF Verici-Alıcı Çifti istifadə edərək Jest Nəzarətli Rover: Hey, siz heç vaxt sadə əl hərəkətləri ilə idarə edə biləcəyiniz bir rover qurmaq arzusunda idiniz, lakin heç vaxt cəsarəti ilə görüntünün işlənməsi və veb kameranızla əlaqə qura bilməzsiniz. yoxuşdan başqa mikro nəzarətçi