Mündəricat:

Jest Nəzarətli Ultrasonik Pi Piano!: 10 Addım (Şəkillərlə)
Jest Nəzarətli Ultrasonik Pi Piano!: 10 Addım (Şəkillərlə)

Video: Jest Nəzarətli Ultrasonik Pi Piano!: 10 Addım (Şəkillərlə)

Video: Jest Nəzarətli Ultrasonik Pi Piano!: 10 Addım (Şəkillərlə)
Video: Sonoff ZBDongle-E və ZB-GW04 çubuqlarında Zigbee və Thread ilə Multi-PAN (RCP) firmware 2024, Iyul
Anonim
Image
Image
Jest Nəzarətli Ultrasonik Pi Piano!
Jest Nəzarətli Ultrasonik Pi Piano!

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

Ultrasonik Sensorları Səkkizbucaqlı lövhəyə qoşun
Ultrasonik Sensorları Səkkizbucaqlı lövhəyə qoşun
Ultrasonik sensorları səkkizbucaqlı lövhəyə qoşun
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

Məntiq səviyyəsi çeviricisini səkkizbucaqlı lövhəyə qoşun
Məntiq səviyyəsi çeviricisini səkkizbucaqlı lövhə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ə (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

Məntiq səviyyəsi çeviricisini Raspberry Pi -yə qoşun
Məntiq səviyyəsi çeviricisini 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

Raspberry Pi 5V -ni Octasonic 5V -ə qoşun
Raspberry Pi 5V -ni Octasonic 5V -ə qoşun
Raspberry Pi 5V -ni Octasonic 5V -ə qoşun
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ə: