İçindekiler:

Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör): 4 Adım (Resimlerle)
Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör): 4 Adım (Resimlerle)

Video: Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör): 4 Adım (Resimlerle)

Video: Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör): 4 Adım (Resimlerle)
Video: 7500 Metre Yükseklikte Çatısı Kopan Uçağın Piste İniş Hikayesi 2024, Temmuz
Anonim
Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör)
Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör)
Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör)
Hava Durumuna Dayalı Müzik Üreticisi (ESP8266 Tabanlı Midi Jeneratör)

Merhaba, bugün kendi küçük Hava Durumuna dayalı Müzik oluşturucunuzu nasıl yapacağınızı açıklayacağım.

Arduino'ya benzeyen bir ESP8266'ya dayanıyor ve sıcaklığa, yağmura ve ışık yoğunluğuna tepki veriyor.

Tüm şarkıları veya akor ilerlemelerini yapmasını beklemeyin. Daha çok insanların bazen Modüler Sentezleyicilerle yaptıkları Üretken Müzik gibi. Ama o zamandan biraz daha az rastgele, örneğin belirli Ölçeklere yapışıyor.

Gereçler

ESP8266 (Adafruit'ten Feather Huzzah ESP8266 kullanıyorum)

BME280 Sıcaklık, Nem ve Barometrik Basınç Sensörü (I2C Versiyonu)

Arduino Yağmur Sensörü

25K LDR (Işık Bağımlı Direnç)

Bazı Dirençler (iki adet 47, bir adet 100, bir adet 220 ve bir adet 1k Ohm)

PCB montajına uygun Dişi Midi Konnektör (5 Pin Din)

Jumper Telleri

Breadboard veya bir çeşit Prototipleme tahtası

Bilgisayar, Windows 8.1 çalıştıran birini kullanacağım, ancak bildiğim kadarıyla herhangi bir işletim sisteminde çalışması gerekiyor.

İsteğe bağlı: Adafruit'ten JST konektörlü 1250 mAh LiPo pil (yalnızca bazı ESP'lerle uyumludur)

Adım 1: Adım 1: Yazılım

Öncelikle Arduino IDE'ye ihtiyacınız var.

O zaman SiLabs CP2104 sürücüsüne ve ESP8266 Anakart Paketine ihtiyacınız var.

Bu, bilgisayarınızın yerleşik UART aracılığıyla ESP'yi programlamasını ve Arduino IDE'nin ESP'yi programlamasını sağlar.

IDE, Sürücü ve Board Paketi ile ilgili tüm bilgileri Adafruit web sitesinde bu sayfada bulabilirsiniz.

Midi verilerini gönderebilmek için Arduino Midi Kütüphanesine de ihtiyacınız olacak. Onsuz yapılabilir, ancak bu her şeyi çok daha kolay hale getirir.

BME280 ile iletişim kurmak için bu BME280-I2C-ESP32 kitaplığını kullandım. (Bu, BME280'in I2C versiyonu içindir)

Ve bu kitaplık da Adafruit Birleşik Sensör Sürücüsünü gerektirir. Farklı bir kütüphaneyi sorunsuz kullanmak için bu kütüphaneye ilk defa ihtiyaç duymuyorum, bu yüzden her zaman bu Kütüphaneyi bir yere işaretledim.

2. Adım: 2. Adım: Donanım

2. Adım: Donanım
2. Adım: Donanım
2. Adım: Donanım
2. Adım: Donanım
2. Adım: Donanım
2. Adım: Donanım

Pekala, sonunda iyi şeylere, donanıma geldik.

Bahsettiğim gibi bu Adafruit ESP'yi kullandım, ancak bir NodeMCU ile iyi çalışması gerekiyor. Bir breadboard'a çok daha iyi uyacağına inandığım için V2 sürümünü tavsiye ediyorum ve onları eBay veya AliExpress'ten çok ucuza alabilirsiniz. Adafruit ESP'nin daha hızlı bir CPU'ya sahip olması, bir LiPo için dişi JST konektörü ve bir şarj devresi ile gelmesi hoşuma gidiyor. Hangi Pini kullandığınızı anlamak da biraz daha kolay. Bir NodeMCU'da, örneğin Etiketli D1 piminin aslında GPIO5 olduğuna inanıyorum, bu nedenle her zaman kullanışlı bir Pinout grafiğine ihtiyacınız var. Hiç de büyük bir sorun değil, ancak Adafruit'i çok net bir şekilde etiketledikleri yeni başlayanlar için uygun.

Öncelikle BME280'i bağlayalım çünkü bu modelde bazı varyasyonlar var. Resimlerden de görebileceğiniz gibi benimkinin büyük bir deliği var ama 2 delikli olanlar da var. 4 Giriş ve Çıkış, 1 güç, bir toprak ve bir SCL ve SDA olduğunu görebilirsiniz. Bu, I2C üzerinden iletişim kurduğu anlamına gelir. Diğer modellerin SPI aracılığıyla iletişim kurduğuna inanıyorum. Ve bazılarında SPI veya I2C'yi seçebilirsiniz. SPI, farklı bir Kitaplık veya en azından farklı kod ve farklı kablolama gerektirebilir. Ayrıca SPI'deki S'nin Seri anlamına geldiğine inanıyorum ve bunun bu projenin Midi kısmına müdahale edip etmeyeceğini söyleyemem çünkü bu da Seri bağlantı üzerinden çalışıyor.

Bu BME'yi bağlamak oldukça basittir. ESP8266'da pin 4 ve 5'in sırasıyla SDA ve SCL olarak etiketlendiğini görebilirsiniz. Bu pinleri doğrudan BME üzerindeki SDA ve SCL pinine bağlamanız yeterlidir. Elbette, VIN'i Breadboard'un Pozitif Rayına ve GND'yi Negatif Ray'a da bağlayın. Bunlar da ESP'nin 3V3 ve GND pinine bağlanır.

Sırada LDR'yi bağlayacağız. Fritzing örneğinde, bir dirençten geçen 3,3 voltu görebilirsiniz, ardından LDR'ye ve başka bir dirence bölünür. Sonra LDR'den sonra tekrar bir dirence ve ADC'ye bölünür.

Bu, ESP'yi çok yüksek voltajlardan korumak ve okunabilir değerler aldığından emin olmak içindir. ADC 0-1 Volt'u işleyebilir, ancak 3V3 3,3 volt sağlar. 1 voltun üzerine çıkarsanız muhtemelen hiçbir şeyi patlatmaz, ancak iyi çalışmayacaktır.

Bu yüzden önce voltajı 3,3'ten 1,031 volta düşürmek için 220 ve 100 ohm dirençler kullanan bir Voltaj Bölücü kullanıyoruz. Daha sonra 25k ohm LDR ve 1k ohm direnç, voltajı LDR'nin aldığı ışık miktarına bağlı olarak 1.031 ile 0 volt arasında herhangi bir yerden düşüren başka bir Voltaj Saptırıcı oluşturur.

Sonra Yağmur Sensörümüz var. Bir parça FC-37 diyor, diğer parça HW-103 diyor. Ebay'de 3,3 ve 5 volt ile başa çıkabileceğini söyleyen ilkini satın aldım. (Bence hepsi yapabilir).

Bu oldukça basit, bir Analog çıkış kullanabiliriz, ancak sensörün istediğimiz kadar hassas olmasını sağlamak için küçük Trimpot'u çevirebiliriz (ve ESP'de zaten bir Analog pinimizi kullandık). Diğer sensörlerde olduğu gibi, Pozitif Raydan Güç sağlamalı ve bunu Toprak rayına bağlamalıyız. Bazen pinlerin sırası değişir. Benimkinde VCC, Ground, Digital, Analog, ancak Fritzing resminde farklı. Ama sadece dikkat ederseniz, bunu düzeltmek kolay olacaktır.

Ve son olarak, Midi Jack. Breadboard'umda, pimler aynı hizada olmadığı için breadboard'un kenarına oturamaz. Bu sizi rahatsız ederse, fiziksel bir mağazada bir breadboard almaya çalışırdım. Veya resimleri çok iyi inceleyin.

Şematikten de görebileceğiniz gibi, pozitif voltaj ve Seri sinyal, 47 ohm'luk bir dirençten geçer.

Bu projeyi Arduino Uno ile yapıyorsanız, örneğin 220 ohm direnç kullandığınızdan emin olun! Bu ESP'ler 3.3 V mantığında çalışır, ancak çoğu Arduino 5.0 V kullanır, bu nedenle Midi kablosundan geçen akımı daha fazla sınırlamanız gerekir.

Ve son olarak orta pimi Toprak rayına bağlayın. 5 Pin Din'deki diğer 2 pin kullanılmaz.

Adım 3: Adım 3: Kodlama

Ve sonunda kodumuz var!

Bu Zip dosyasına 2 adet eskiz koydum. 'LightRainTemp' sadece tüm sensörleri test eder ve değerlerini geri gönderir. (Terminal Penceresini açtığınızdan emin olun!)

Ve elbette LRTGenerativeMidi (LRT, Işık, Yağmur, Sıcaklık anlamına gelir) taslağımız var.

İçeride, neler olduğuna dair yorumlarda bir sürü açıklama bulabilirsiniz. Her şeyi nasıl yazdığıma girmeyeceğim, saatler sürer. Böyle bir şeye nereden başlayacağınızı bilmek istiyorsanız, aklımda başka projeler var. Birkaç düğmeli küçük bir Rastgele Riff üreteci ve diğer modellerde bulamadığım bir dizi özelliğe sahip bir Sıralayıcı.

Ama önce tasarlamayı ve kodlamayı bitirmem gerekecek. Diğer projelerden haberdar olmak istiyorsanız bana bildirin. Daha fazla öğretici mi yapacağım yoksa bir video dizisi mi yapacağıma karar vermedim.

Adım 4: Adım 4: Bağlayın ve Test Edin

Ve şimdi test etme zamanı!

Sadece bir Midi kablosu bağlayın, Synth/Klavyenizi kanal 1'e yanıt verecek şekilde ayarladığınızdan veya Arduino kodundaki kanalı değiştirdiğinizden emin olun ve çalışıp çalışmadığını görün!

Bununla ne yaptığınızı görmeyi ve duymayı gerçekten merak ediyorum. Değişiklikler, yükseltmeler, ince ayarlar yaparsanız (Işık sensörü ve Sıcaklık değerleri gibi. Dışarıda, içeriden daha iyi veya daha kötü çalışabilir) herhangi bir şey.

Ayrıca tüm Sentezleyicilerle iyi çalışıp çalışmadığını merak ediyorum. Volca Bass'ımda mükemmel çalışıyor, ancak Neutron'umda bir Midi Notası gönderir göndermez LFO takılıyor. Yeniden başlattığımda sorun yok ama garip. Midi Kitaplığı'nda veya kodumda bir şey olup olmadığından emin değilim, yakında Kitaplık olmadan yapmayı deneyebilir ve daha iyi olup olmadığına bakabilirim.

Okuduğunuz ve izlediğiniz için teşekkürler ve iyi şanslar!!

Önerilen: