Mündəricat:

Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): 4 addım (şəkillərlə)
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): 4 addım (şəkillərlə)

Video: Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): 4 addım (şəkillərlə)

Video: Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): 4 addım (şəkillərlə)
Video: Azərbaycanın göndərdiyi generatorlar Ukraynaya çatdı - BAKU TV 2024, Iyul
Anonim
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator)
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator)
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator)
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator)

Salam, bu gün hava şəraitində kiçik bir musiqi generatorunuzu necə edəcəyinizi izah edəcəyəm.

Bir növ Arduino kimi bir ESP8266 -a əsaslanır və temperatur, yağış və işıq intensivliyinə cavab verir.

Bütün mahnıların və ya akkordun irəliləməsini gözləməyin. İnsanlar bəzən Modulyar Sintezatorlarla hazırladıqları Generative Music kimidir. Ancaq bir az təsadüfi deyil, məsələn, müəyyən Ölçəklərə yapışır.

Təchizat

ESP8266 (Adafruit -dən Feather Huzzah ESP8266 istifadə edirəm)

BME280 Temperatur, Rütubət və Barometrik Təzyiq Sensoru (I2C Versiyası)

Arduino Yağış Sensoru

25K LDR (İşıqdan Rezistor)

Bəzi Rezistorlar (iki 47, biri 100, biri 220 və biri 1k Ohm)

Dişi Midi Bağlayıcı (5 Pin Din), PCB montajı üçün uyğundur

Jumper telləri

Çörək lövhəsi və ya bir növ prototip lövhəsi

Kompüter, Windows 8.1 işləyən birini istifadə edəcəyəm, amma bildiyim qədər hər hansı bir OS -də işləməlidir.

İsteğe bağlı: Adafruit -dən JST konnektorlu 1250 mAh LiPo batareya (yalnız bəzi ESP -lərlə uyğundur)

Addım 1: Adım 1: Proqram təminatı

İlk növbədə Arduino IDE -yə ehtiyacınız var.

Sonra SiLabs CP2104 sürücüsü və ESP8266 Kart Paketi lazımdır.

Bu, kompüterinizə UART -da quraşdırılmış ESP -ni proqramlaşdırmağa və Arduino IDE -yə ESP -ni proqramlaşdırmağa imkan verir.

IDE, Sürücü və Kart Paketi haqqında bütün məlumatları bu səhifədə Adafruit saytında tapa bilərsiniz.

Midi məlumatlarını göndərmək üçün Arduino Midi Kitabxanasına da ehtiyacınız olacaq. Onsuz edilə bilər, amma bu hər şeyi çox asanlaşdırır.

BME280 ilə əlaqə yaratmaq üçün bu BME280-I2C-ESP32 kitabxanasından istifadə etdim. (Bu BME280 -in I2C versiyası üçündür)

Və bu kitabxana öz növbəsində Adafruit Vahid Sensor Sürücüsü tələb edir. Fərqli bir kitabxanadan problemsiz istifadə etmək üçün bu kitabxanaya ilk dəfə ehtiyacım yoxdur, buna görə də həmişə bu kitabxananın bir yerdə əlfəcinlənməsi var.

Adım 2: Adım 2: Avadanlıq

Addım 2: Avadanlıq
Addım 2: Avadanlıq
Addım 2: Avadanlıq
Addım 2: Avadanlıq
Addım 2: Avadanlıq
Addım 2: Avadanlıq

Doğrudur, nəhayət yaxşı şeylərə, aparata çatırıq.

Qeyd edildiyi kimi, bu Adafruit ESP -dən istifadə etdim, ancaq NodeMCU ilə yaxşı işləməlidir. V2 versiyasını məsləhət görürəm, çünki çörək taxtasına daha yaxşı uyğun olduğunu düşünürəm və eBay və ya AliExpress -dən çox ucuz əldə edə bilərsiniz. Adafruit ESP -nin daha sürətli bir CPU -ya sahib olması, bir LiPo üçün bir qadın JST konnektoru və şarj dövrəsi ilə birlikdə olması xoşuma gəlir. Hansı Pin istifadə etdiyinizi anlamaq da bir az daha asandır. NodeMCU -da etiketli D1 pininin həqiqətən GPIO5 olduğuna inanıram, buna görə də həmişə lazımlı bir Pinout cədvəlinə ehtiyacınız var. Ümumiyyətlə böyük bir problem deyil, ancaq yeni başlayanlar üçün əlverişlidir ki, Adafruit -i bu qədər aydın şəkildə qeyd etdilər.

Əvvəlcə BME280 -i bağlayaq, çünki bu modeldə bəzi dəyişikliklər var. Şəkillərdən də göründüyü kimi, mənim böyük bir çuxurum var, amma 2 dəliyi olan da var. Görə bilərsiniz ki, 4 Giriş və Çıxış, 1 güc üçün, biri torpaq üçün və bir SCL və SDA. Bu o deməkdir ki, I2C vasitəsilə əlaqə qurur. İnanıram ki, digər modellər SPI vasitəsilə ünsiyyət qurur. Bəzilərində SPI və ya I2C seçə bilərsiniz. SPI fərqli bir Kitabxana və ya ən azı fərqli bir kod və fərqli kabel tələb edə bilər. İnanıram ki, SPI -dəki S Serialdır və bunun bu layihənin Midi hissəsinə müdaxilə edib -etməyəcəyini deyə bilmərəm, çünki bu da Serial bağlantısı ilə işləyir.

Bu BME -ni bağlamaq olduqca düzdür. ESP8266 -da, sırasıyla SDA və SCL etiketli 4 və 5 -ci pinləri görə bilərsiniz. Sadəcə bu sancaqları BME -dəki SDA və SCL pininə bağlayın. Əlbəttə ki, VIN -ni Çörək Panelinin Müsbət Dəmir Yoluna və GND -ni Mənfi Dəmiryoluna bağlayın. Bunlar öz növbəsində ESP -nin 3V3 və GND pininə bağlıdır.

Gələcəkdə LDR -ni bağlayacağıq. Fritzing nümunəsində bir rezistordan keçən 3.3 volt, sonra LDR və başqa bir rezistora bölünmüş olduğunu görə bilərsiniz. Sonra LDR -dən sonra yenidən bir rezistora və ADC -ə bölünür.

Bu, ESP -ni çox yüksək gərginliklərdən qorumaq və oxunaqlı dəyərlər əldə etdiyinə əmin olmaq üçündür. ADC 0-1 Volt idarə edə bilər, lakin 3V3 3.3 volt verir. Yəqin ki, 1 voltdan yuxarı qalxsanız heç bir şey partlatmayacaq, amma yaxşı işləməyəcək.

Beləliklə, əvvəlcə gərginliyi 3,3 -dən 1,031 volta endirmək üçün 220 və 100 ohm rezistorlardan istifadə edərək bir Voltaj Bölücü istifadə edirik. Sonra 25k ohm LDR və 1k ohm rezistor, LDR -nin aldığı işıq miqdarından asılı olaraq hər hansı bir yerdən gərginliyi 1.031 ilə 0 volt arasında endirən başqa bir Gərginlik Cihazı meydana gətirir.

Sonra Yağış Sensorumuz var. Bir hissədə FC-37, digər hissədə HW-103 deyilir. Ebayda tapdığım 3.3 və 5 volt tuta biləcəyini söyləyən birincisini aldım. (Düşünürəm ki, hamısı edə bilər).

Bu olduqca düzdür, bir Analog çıxışı istifadə edə bilərik, ancaq sensorun istədiyimiz qədər həssas olmasını təmin etmək üçün kiçik Trimpotu döndərə bilərik (və biz artıq ESP -də bir Analog pinimizi istifadə etmişik). Digər sensorlar kimi, biz də pozitiv dəmir yolu ilə enerji təmin etməliyik və onu yerüstü relsə bağlamalıyıq. Bəzən sancaqlar sırası dəyişir. Mənim üçün VCC, Ground, Digital, Analogdur, amma Fritzing şəkilində fərqlidir. Ancaq diqqət yetirsəniz, bunu düzəltmək asan olmalıdır.

Və nəhayət, Midi Jack. Breadboard -da çörək taxtasının kənarında oturmaq olmaz, çünki sancaqlar hamısı bir -birinə uyğun gəlmir. Bu sizi narahat edərsə, fiziki bir mağazada çörək taxtası almağa çalışardım. Və ya şəkilləri çox yaxşı yoxlayın.

Şemadan görə bildiyiniz kimi, müsbət gərginlik və Serial siqnal hər ikisi 47 ohm rezistordan keçir.

Bu layihəni bir Arduino Uno ilə edirsinizsə, məsələn, 220 ohm rezistorlardan istifadə etdiyinizə əmin olun! Bu ESP 3.3 V məntiqi üzərində işləyir, lakin əksər Arduino 5.0 V istifadə edir, buna görə Midi kabelindən keçən cərəyanı daha çox məhdudlaşdırmalısınız.

Və nəhayət, orta pimi Zəmin rayına bağlayın. 5 Pin Din -dən digər 2 pin istifadə edilmir.

Addım 3: Adım 3: Kod

Və nəhayət kodumuz var!

Bu Zip faylına 2 eskiz qoydum. 'LightRainTemp' sadəcə olaraq bütün sensorları yoxlayır və dəyərlərini geri göndərir. (Terminal Pəncərəsini açdığınızdan əmin olun!)

Əlbəttə ki, LRTGenerativeMidi (LRT İşıq, Yağış, Temperatur) eskizinə sahibik.

İçəridə baş verənlərə dair şərhlərdə bir çox izahat tapa bilərsiniz. Bütün bunları necə yazdığımla məşğul olmayacağam, bunun üçün saatlar lazımdır. Belə bir işlə haradan başlamaq lazım olduğunu bilmək istəyirsinizsə, başqa layihələrim var. Bir neçə düyməli kiçik bir Random Riff generatoru və digər modellərdə tapa bilməyəcəyim bir çox xüsusiyyətə malik bir Sequencer.

Ancaq əvvəlcə dizayn etməyi və kodlamağı başa vurmalıyam. Başqa layihələrdən xəbər tutmaq istəsəniz mənə bildirin. Daha çox təlimat verəcəyimə və ya video serial çəkəcəyimə qərar verməmişəm.

Adım 4: Adım 4: Bağlayın və sınayın

Və indi sınamağın vaxtı gəldi!

Sadəcə bir Midi kabeli bağlayın, Synth/Klaviaturanızı 1 -ci kanala cavab verəcəyinə və ya Arduino kodundakı kanalı dəyişdirdiyinizə və işlədiyinə baxın!

Bununla nə etdiyinizi görmək və eşitmək həqiqətən maraqlıdır. Dəyişikliklər etsəniz, təkmilləşdirmələr, düzəlişlər (İşıq sensoru və Temperatur dəyərləri kimi. Xaricdə içəridən daha yaxşı və ya daha pis işləyə bilər) hər hansı bir şey.

Bütün Sintezatorlarla yaxşı işlədiyini görmək də maraqlıdır. Volca Bass cihazımda mükəmməl işləyir, amma Neytronumda Midi Qeyd göndərən kimi LFO ilişib qalır. Yenidən yüklədiyim zaman yaxşıdır, amma qəribədir. Midi Kitabxanasında və ya kodumda bir şey olub -olmadığından əmin deyiləm, bunu tezliklə Kitabxana olmadan etməyə çalışa bilərəm və daha yaxşı olub olmadığını öyrənə bilərəm.

Oxuduğunuz və izlədiyiniz üçün təşəkkürlər və uğurlar !!

Tövsiyə: