Talaan ng mga Nilalaman:

Weather based Music Generator (ESP8266 Batay sa Midi Generator): 4 na Hakbang (na may Mga Larawan)
Weather based Music Generator (ESP8266 Batay sa Midi Generator): 4 na Hakbang (na may Mga Larawan)

Video: Weather based Music Generator (ESP8266 Batay sa Midi Generator): 4 na Hakbang (na may Mga Larawan)

Video: Weather based Music Generator (ESP8266 Batay sa Midi Generator): 4 na Hakbang (na may Mga Larawan)
Video: Weather Generated Music On A Budget (Volca Bass + ESP8266) 2024, Hulyo
Anonim
Tagabuo ng Musika Batay sa Panahon (Batay sa Midi Generator ng ESP8266)
Tagabuo ng Musika Batay sa Panahon (Batay sa Midi Generator ng ESP8266)
Tagabuo ng Musika Batay sa Panahon (Batay sa Midi Generator ng ESP8266)
Tagabuo ng Musika Batay sa Panahon (Batay sa Midi Generator ng ESP8266)

Kumusta, ngayon ay ipapaliwanag ko kung paano gumawa ng iyong sariling maliit na Weather based Music generator.

Batay ito sa isang ESP8266, na kung saan ay uri ng tulad ng isang Arduino, at tumutugon ito sa temperatura, ulan at lakas na ilaw.

Huwag asahan na makagawa ito ng buong mga kanta o pag-unlad ng chord. Ito ay katulad ng Generative Music na ginagawa ng mga tao sa Modular Synthesizers. Ngunit ito ay isang maliit na mas kaunting random pagkatapos na, dumidikit ito sa ilang mga Kaliskis halimbawa.

Mga gamit

ESP8266 (Gumagamit ako ng Feather Huzzah ESP8266 mula sa Adafruit)

BME280 Temperatura, Humidity at Barometric Pressure Sensor (Ang Bersyon ng I2C)

Arduino Rain Sensor

25K LDR (Light Dependent Resistor)

Ang ilang mga Resistors (dalawang 47, isang 100, isang 220 at isang 1k Ohm)

Babae Midi Connector (5 Pin Din) na angkop para sa pag-mount ng PCB

Jumper Wires

Breadboard o ilang uri ng Prototyping board

Computer, gagamit ako ng isang nagpapatakbo ng Windows 8.1, ngunit dapat itong gumana sa anumang OS sa pagkakaalam ko.

Opsyonal: 1250 mAh LiPo na baterya na may konektor ng JST mula sa Adafruit (katugma lamang sa ilang mga ESP)

Hakbang 1: Hakbang 1: Software

Una sa lahat kailangan mo ng Arduino IDE.

Pagkatapos ay kailangan mo ng driver ng SiLabs CP2104 at ng Package ng Board ng ESP8266.

Pinapayagan nito ang iyong computer na i-program ang ESP sa pamamagitan ng built in na UART at pinapayagan ang Arduino IDE na i-program ang ESP.

Mahahanap mo ang lahat ng impormasyon tungkol sa IDE, Driver at Board Package sa pahinang ito sa website ng Adafruit.

Kakailanganin mo rin ang Arduino Midi Library upang makapagpadala ng Midi data. Maaari itong magawa nang wala, ngunit ginagawa nitong mas madali ang lahat.

Upang makipag-usap sa BME280 ginamit ko ang library ng BME280-I2C-ESP32 na ito. (Ito ay para sa bersyon ng I2C ng BME280)

At ang silid-aklatan na iyon ay nangangailangan ng Adafruit Unified Sensor Driver. Hindi ito ang kauna-unahang pagkakataon na kailangan ko ang library na ito upang magamit ang ibang library nang walang mga isyu, kaya palagi kong na-bookmark ang Library na ito sa kung saan.

Hakbang 2: Hakbang 2: Hardware

Hakbang 2: Hardware
Hakbang 2: Hardware
Hakbang 2: Hardware
Hakbang 2: Hardware
Hakbang 2: Hardware
Hakbang 2: Hardware

Tama kaya sa wakas nakarating kami sa magagandang bagay, ang hardware.

Tulad ng nabanggit ginamit ko ang Adafruit ESP na ito, ngunit dapat lamang itong gumana nang maayos sa isang NodeMCU. Inirerekumenda ko ang bersyon ng V2 dahil sa tingin ko ito ay umaangkop nang mas mahusay sa isang breadboard at makukuha mo silang napaka murang mula sa eBay o AliExpress. Gusto ko ang katunayan na ang Adafruit ESP ay may isang mas mabilis na CPU, may kasamang isang babaeng konektor ng JST para sa isang LiPo at isang singil ng circuit. Medyo mas madali din upang malaman kung anong Pin ang ginagamit mo. Naniniwala ako sa isang NodeMCU na ang pin na May label na D1 ay talagang GPIO5 halimbawa, kaya palagi kang nangangailangan ng isang madaling gamiting tsart ng Pinout. Hindi isang malaking isyu sa lahat, ngunit maginhawa lamang para sa mga baguhan na malinaw na nilagyan nila ng label ang Adafruit.

Una, ikonekta natin ang BME280, dahil maraming mga pagkakaiba-iba sa modelong ito. Tulad ng nakikita mo mula sa mga larawan na minahan ay mayroong isang malaking butas, ngunit mayroon ding ilang may 2 butas. Maaari mong makita na mayroon itong 4 In at Outputs, 1 para sa lakas, isa para sa ground at isang SCL at SDA. Nangangahulugan ito na nakikipag-usap ito sa pamamagitan ng I2C. Naniniwala ako na ang ibang mga modelo ay nakikipag-usap sa pamamagitan ng SPI. At sa ilan maaari kang pumili ng alinman sa SPI o I2C. Maaaring mangailangan ang SPI ng ibang Library o hindi bababa sa magkakaibang code at iba't ibang mga kable. Naniniwala rin ako na ang S sa SPI ay nangangahulugang Serial at hindi ko masasabi kung makagambala ito sa Midi na bahagi ng proyektong ito dahil gumagana rin iyon sa pamamagitan ng koneksyon ng Serial.

Ang pag-hook up ng BME na ito ay medyo tuwid. Sa ESP8266 maaari mong makita ang pin 4 at 5 na may label na SDA at SCL ayon sa pagkakabanggit. Ikonekta lamang ang mga pin na direkta sa SDA at SCL pin sa BME. Siyempre ikonekta din ang VIN sa Positive Rail ng Breadboard at GND sa Negative Rail. Ang mga iyon naman ay konektado sa 3V3 at GND pin ng ESP.

Sa susunod ay ikonekta namin ang LDR. Sa halimbawa ng Fritzing maaari mong makita ang 3.3 volts na dumadaan sa isang risistor, pagkatapos ay nahati ito sa LDR at isa pang risistor. Pagkatapos pagkatapos ng LDR ay nahati muli ito sa isang risistor at sa ADC.

Ito ay upang maprotektahan ang ESP mula sa pagkuha ng masyadong mataas na boltahe at upang matiyak na nakakakuha ito ng nababasa na mga halaga. Maaaring hawakan ng ADC ang 0-1 Volts ngunit ang 3V3 ay naghahatid ng 3.3 volts. Marahil ay hindi ito sasabog ng anumang bagay kung pumunta ka sa itaas ng 1 volt, ngunit hindi ito gagana nang maayos.

Sa gayon muna gumamit kami ng isang Voltage Divider gamit ang 220 at 100 ohm resistors upang maibaba ang boltahe mula 3.3 hanggang 1.031 volts. Pagkatapos ang 25k ohm LDR at ang 1k ohm risistor ay bumubuo ng isa pang Voltage Devider na nagdadala ng boltahe pababa mula saanman sa pagitan ng 1.031 at 0 volts depende sa dami ng ilaw na nakukuha ng LDR.

Pagkatapos mayroon kaming Rain Sensor. Ang isang bahagi ay nagsabi ng FC-37, ang iba pang bahagi ay nagsasabing HW-103. Nabili ko lang ang una kong nahanap sa Ebay na nagsabing makakayanan nito ang 3.3 at 5 volts. (Sa palagay ko makakaya nilang lahat).

Ito ay medyo tuwid, maaari naming gamitin ang isang output ng Analog, ngunit maaari lamang naming i-on ang maliit na Trimpot upang gawing sensitibo ang sensor ayon sa gusto namin (at ginamit na namin ang aming isang Analog pin sa ESP). Tulad ng iba pang mga sensor kailangan nating magbigay ng Lakas mula sa Positive Rail at ikonekta ito sa Ground rail. Minsan magkakaiba-iba ang pagkakasunud-sunod ng mga pin. Sa minahan ito ay VCC, Ground, Digital, Analog, ngunit sa Fritzing na larawan naiiba ito. Ngunit kung bibigyan mo lamang ng pansin ito ay dapat na madaling makakuha ng tama.

At sa wakas, ang Midi Jack. Sa aking Breadboard hindi ito maaaring umupo sa gilid ng breadboard, dahil ang mga pin ay hindi lahat nakahanay. Kung maaabala ka nito susubukan kong kumuha ng isang breadboard sa isang pisikal na tindahan. O suriing mabuti ang mga larawan.

Tulad ng nakikita mo mula sa eskematiko, ang positibong boltahe at ang Serial signal ay parehong dumaan sa isang 47 ohm risistor.

Kung gagawin mo ang proyektong ito sa isang Arduino Uno halimbawa siguraduhing gumamit ng 220 ohm resistors !! Gumagawa ang mga ito ng ESP sa lohika ng 3.3 V, ngunit ang karamihan sa paggamit ng Arduino ng 5.0 V kaya kailangan mong limitahan ang kasalukuyang dumadaan sa Midi cable nang higit pa.

At sa wakas ay ikonekta ang gitnang pin sa Ground rail. Ang iba pang 2 mga pin mula sa 5 Pin Din ay hindi ginagamit.

Hakbang 3: Hakbang 3: Code

At sa wakas mayroon kaming code!

Sa Zip file na ito naglagay ako ng 2 mga sketch. Sinusubukan lamang ng 'LightRainTemp' ang lahat ng mga sensor at ibalik ang kanilang mga halaga. (Tiyaking buksan ang Window Window!)

At syempre mayroon kaming sketch ng LRTGenerativeMidi (ang ibig sabihin ng LRT para sa Banayad, Ulan, Temperatura).

Sa loob maaari kang makahanap ng isang bungkos ng paliwanag sa mga komento sa kung ano ang nangyayari. Hindi ako pupunta sa kung paano ko isinulat ang buong bagay, tatagal ng oras. Kung nais mong malaman kung saan magsisimula sa isang bagay tulad nito mayroon akong ilang mga proyekto na nasa isip. Ang isang maliit na Random Riff generator na may ilang mga pindutan at isang Sequencer na may isang pangkat ng mga tampok na hindi ko makita sa iba pang mga modelo.

Ngunit ang mga kakailanganin kong tapusin muna ang pagdidisenyo at pag-coding. Ipaalam sa akin kung nais mong panatilihing napapanahon tungkol sa iba pang mga proyekto. Hindi ko pa napagpasyahan kung gagawa pa ako ng maraming mga maaaring turuan o gumawa ng isang serye sa video.

Hakbang 4: Hakbang 4: I-hook Ito at Subukan Ito

At oras na upang subukan ito!

Ikonekta lamang ang isang Midi cable, tiyaking itakda ang iyong Synth / Keyboard upang tumugon sa channel 1 o baguhin ang channel sa Arduino code at tingnan kung gumagana ito!

Nagtataka talaga akong makita at marinig kung ano ang ginagawa mo rito. Kung gumawa ka ng mga pagbabago, pag-upgrade, pag-aayos (tulad ng mga ilaw ng sensor at mga halaga ng Temperatura. Sa labas maaari itong gumana nang mas mahusay o mas masahol pa sa loob) anumang bagay.

Nagtataka din ako upang makita kung gumagana ito ng maayos sa lahat ng mga Synthesizer. Sa aking Volca Bass gumagana ito ng perpekto, ngunit sa aking Neutron ang LFO ay makaalis sa lalong madaling magpadala ako ng isang Midi Note. Mabuti kung i-reboot ko ito, ngunit ito ay kakaiba. Hindi ako sigurado kung mayroong isang bagay sa Midi Library o sa aking code, maaari kong subukang gawin ito nang walang Library sa lalong madaling panahon at makita kung ito ay nakakabuti.

Salamat sa pagbabasa at panonood at good luck !!

Inirerekumendang: