Kazalo:

Glasbeni generator, ki temelji na vremenskih pogojih (Midi generator na osnovi ESP8266): 4 koraki (s slikami)
Glasbeni generator, ki temelji na vremenskih pogojih (Midi generator na osnovi ESP8266): 4 koraki (s slikami)

Video: Glasbeni generator, ki temelji na vremenskih pogojih (Midi generator na osnovi ESP8266): 4 koraki (s slikami)

Video: Glasbeni generator, ki temelji na vremenskih pogojih (Midi generator na osnovi ESP8266): 4 koraki (s slikami)
Video: Высокая плотность 2022 2024, Julij
Anonim
Glasbeni generator na podlagi vremena (Midi generator na osnovi ESP8266)
Glasbeni generator na podlagi vremena (Midi generator na osnovi ESP8266)
Glasbeni generator na podlagi vremena (Midi generator na osnovi ESP8266)
Glasbeni generator na podlagi vremena (Midi generator na osnovi ESP8266)

Pozdravljeni, danes vam bom razložil, kako narediti lasten mali glasbeni generator na podlagi vremena.

Temelji na ESP8266, ki je podoben Arduinu in se odziva na temperaturo, dež in jakost svetlobe.

Ne pričakujte, da bo naredil celotne pesmi ali akorde. To je bolj podobno generativni glasbi, ki jo ljudje včasih naredijo z modularnimi sintetizatorji. Ampak to je malo manj naključno, da se na primer drži določenih lestvic.

Zaloge

ESP8266 (uporabljam Feather Huzzah ESP8266 iz Adafruit)

BME280 Senzor temperature, vlažnosti in barometričnega tlaka (različica I2C)

Arduino senzor za dež

25K LDR (od svetlobe odvisen upor)

Nekateri upori (dva 47, ena 100, ena 220 in ena 1k Ohm)

Ženski midi priključek (5 -polni Din), primeren za montažo na tiskano vezje

Mostične žice

Ogledna plošča ali nekakšna deska za izdelavo prototipov

Računalnik, uporabljal bom enega z operacijskim sistemom Windows 8.1, vendar bi moral delovati na katerem koli operacijskem sistemu, kolikor vem.

Izbirno: LiPo baterija 1250 mAh s priključkom JST iz Adafruit (združljivo samo z nekaterimi ESP -ji)

1. korak: 1. korak: programska oprema

Najprej potrebujete Arduino IDE.

Nato potrebujete gonilnik SiLabs CP2104 in paket plošč ESP8266.

To omogoča, da računalnik programira ESP prek vgrajenega UART -a, Arduino IDE pa lahko programira ESP.

Vse informacije o paketu IDE, gonilniku in plošči najdete na tej strani na spletnem mestu Adafruit.

Za pošiljanje podatkov Midi boste potrebovali tudi knjižnico Arduino Midi. Brez tega je mogoče, vendar je vse skupaj veliko lažje.

Za komunikacijo z BME280 sem uporabil to knjižnico BME280-I2C-ESP32. (To velja za različico I2C BME280)

Ta knjižnica pa zahteva Adafruit Unified Sensor Driver. To knjižnico ne potrebujem prvič, če želim brez težav uporabljati drugo knjižnico, zato imam to knjižnico vedno nekje med zaznamke.

2. korak: 2. korak: Strojna oprema

2. korak: Strojna oprema
2. korak: Strojna oprema
2. korak: Strojna oprema
2. korak: Strojna oprema
2. korak: Strojna oprema
2. korak: Strojna oprema

Prav, da končno pridemo do dobrih stvari, strojne opreme.

Kot sem že omenil, sem uporabil ta Adafruit ESP, vendar bi moral dobro delovati z NodeMCU. Priporočam različico V2, saj verjamem, da se veliko bolje prilega na mizo, zato jo lahko zelo poceni dobite na eBayu ali AliExpressu. Všeč mi je dejstvo, da ima Adafruit ESP hitrejši procesor, prihaja z ženskim priključkom JST za LiPo in vezjem za polnjenje. Prav tako je nekoliko lažje ugotoviti, kateri Pin uporabljate. Verjamem, da je na NodeMCU pin z oznako D1 pravzaprav na primer GPIO5, zato vedno potrebujete priročen grafikon Pinout. To sploh ni velika težava, vendar je bilo za začetnike primerno, da so Adafruit tako jasno označili.

Najprej povezimo BME280, ker pri tem modelu obstaja nekaj različic. Kot vidite iz slik, ima moja eno veliko luknjo, nekaj pa je tudi z dvema. Vidite lahko, da ima 4 vhode in izhode, 1 za napajanje, enega za zemljo ter SCL in SDA. To pomeni, da komunicira prek I2C. Verjamem, da drugi modeli komunicirajo prek SPI. V nekaterih lahko izberete SPI ali I2C. SPI lahko zahteva drugačno knjižnico ali vsaj drugačno kodo in drugačno ožičenje. Prav tako verjamem, da S v SPI pomeni Serial in ne morem reči, ali bo to vplivalo na Midi del tega projekta, saj deluje tudi prek serijske povezave.

Priključitev tega BME je precej preprosta. Na ESP8266 lahko vidite, da sta pin 4 in 5 označena kot SDA oziroma SCL. Samo priključite te nožice neposredno na pin SDA in SCL na BME. Seveda povežite tudi VIN s pozitivno tirnico plošče in GND z negativno tirnico. Ti so nato priključeni na 3V3 in GND pin ESP.

Naslednjič bomo povezali LDR. V primeru Fritzinga lahko vidite 3,3 volta, ki gre skozi upor, nato pa je razdeljen na LDR in drug upor. Nato se po LDR ponovno razdeli na upor in na ADC.

To je zato, da zaščiti ESP pred previsokimi napetostmi in poskrbi, da dobi berljive vrednosti. ADC lahko prenese 0-1 voltov, 3V3 pa 3,3 volta. Verjetno ne bo nič razstrelil, če greste nad 1 volt, vendar ne bo dobro delovalo.

Zato najprej uporabimo napetostni delilec z 220 in 100 ohmskimi upori, da znižamo napetost s 3,3 na 1,031 voltov. Nato 25 k ohmski LDR in 1 k ohmski upor tvorita še en razdelilnik napetosti, ki napetost zniža od kjer koli med 1,031 in 0 voltov, odvisno od količine svetlobe, ki jo LDR dobi.

Potem imamo senzor dežja. En del pravi FC-37, drugi del HW-103. Pravkar sem kupil prvega, ki sem ga našel na Ebayu in je rekel, da zmore 3,3 in 5 voltov. (Mislim, da lahko vsi).

To je precej naravnost, lahko bi uporabili analogni izhod, lahko pa obrnemo drobni Trimpot, da bo senzor tako občutljiv, kot želimo (in že smo uporabili en sam analogni zatič na ESP). Tako kot pri drugih senzorjih moramo napajati iz pozitivne tirnice in jo priključiti na zemeljsko tirnico. Včasih je vrstni red nožic drugačen. Na mojem je VCC, Ground, Digital, Analog, na sliki Fritzing pa je drugače. Če pa samo pazite, bi to moralo biti enostavno popraviti.

In končno, Midi Jack. Na moji ploščici ne more sedeti na robu plošče, saj se zatiči ne poravnajo vsi. Če vas to moti, bi poskusil dobiti mizo v fizični trgovini. Ali pa zelo dobro pregledajte slike.

Kot je razvidno iz sheme, pozitivna napetost in serijski signal gresta skozi 47 ohmski upor.

Če ta projekt izvajate na primer z Arduino Uno, uporabite 220 umske upore !! Ti ESP delujejo na logiki 3,3 V, vendar večina Arduina uporablja 5,0 V, zato morate bolj omejiti tok, ki gre skozi kabel Midi.

In končno priključite srednji zatič na ozemljitveno tirnico. Druga 2 zatiča iz 5 -pin Din se ne uporabljata.

3. korak: 3. korak: Koda

In končno imamo kodo!

V to datoteko Zip sem dal 2 skici. 'LightRainTemp' preprosto preskusi vse senzorje in pošlje nazaj njihove vrednosti. (Odprite terminalsko okno!)

In seveda imamo skico LRTGenerativeMidi (LRT pomeni svetloba, dež, temperatura).

V notranjosti lahko najdete veliko razlag v komentarjih o tem, kaj se dogaja. Ne bom se spuščal v to, kako sem vse napisal, to bi trajalo ure. Če želite vedeti, kje začeti s kaj takega, imam v mislih nekaj drugih projektov. Majhen generator naključnih rifov z nekaj gumbi in zaporedjem s kopico funkcij, ki jih pri drugih modelih ne najdem.

Toda tiste, ki jih bom moral najprej dokončati z oblikovanjem in kodiranjem. Sporočite mi, če želite biti obveščeni o drugih projektih. Nisem se odločil, ali bom naredil več navodil ali naredil video serijo.

4. korak: 4. korak: Priključite in preizkusite

In zdaj je čas, da ga preizkusite!

Preprosto priključite kabel Midi, nastavite Synth/Keyboard, da se odziva na kanal 1, ali spremenite kanal v kodi Arduino in preverite, ali deluje!

Res sem radoveden, da vidim in slišim, kaj počnete z njim. Če naredite spremembe, nadgradnje, prilagoditve (na primer vrednosti svetlobnega senzorja in temperature. Zunaj bi lahko delovalo bolje ali slabše kot znotraj) karkoli.

Zanima me tudi, ali deluje dobro z vsemi sintetizatorji. Na mojem Volca Bass deluje odlično, na mojem nevtronu pa se LFO zatakne takoj, ko pošljem Midi Note. V redu je, ko ga znova zaženem, vendar je čudno. Nisem prepričan, če je kaj v knjižnici Midi ali v moji kodi. Morda bom kmalu poskusil brez knjižnice in preveril, ali bo kaj bolje.

Hvala za branje in ogled in veliko sreče !!

Priporočena: