Sisällysluettelo:

Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): 4 vaihetta (kuvilla)
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): 4 vaihetta (kuvilla)

Video: Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): 4 vaihetta (kuvilla)

Video: Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): 4 vaihetta (kuvilla)
Video: CS50 2014 - Week 10 2024, Heinäkuu
Anonim
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori)
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori)
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori)
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori)

Hei, tänään selitän kuinka tehdä oma pieni sääpohjainen musiikkigeneraattori.

Se perustuu ESP8266: een, joka on eräänlainen kuin Arduino, ja se reagoi lämpötilaan, sateeseen ja valon voimakkuuteen.

Älä odota sen tekevän kokonaisia kappaleita tai sointuja. Se on enemmän kuin Generative Music, jota ihmiset tekevät joskus modulaarisilla syntetisaattoreilla. Mutta se on hieman vähemmän satunnaista, se tarttuu esimerkiksi tiettyihin asteikkoihin.

Tarvikkeet

ESP8266 (käytän Feather Huzzah ESP8266 -tuotetta Adafruitista)

BME280 Lämpötila-, kosteus- ja ilmanpaineanturi (I2C -versio)

Arduino -sadetunnistin

25K LDR (valosta riippuvainen vastus)

Jotkut vastukset (kaksi 47, yksi 100, yksi 220 ja yksi 1 k ohmia)

Naarasliitin (5 -nastainen Din), joka sopii PCB -asennukseen

Hyppyjohdot

Leipälauta tai jonkinlainen prototyyppitaulu

Tietokone, käytän yhtä Windows 8.1 -käyttöjärjestelmää, mutta sen pitäisi toimia missä tahansa käyttöjärjestelmässä.

Valinnainen: 1250 mAh LiPo -akku ja Adafruitin JST -liitin (yhteensopiva vain joidenkin ESP -laitteiden kanssa)

Vaihe 1: Vaihe 1: Ohjelmisto

Ensinnäkin tarvitset Arduino IDE: n.

Sitten tarvitset SiLabs CP2104 -ohjaimen ja ESP8266 -korttipaketin.

Tämän avulla tietokoneesi voi ohjelmoida ESP: n sisäänrakennetun UART: n kautta ja Arduino IDE ohjelmoida ESP: n.

Löydät kaikki tiedot IDE: stä, kuljettaja- ja lautapaketista tältä sivulta Adafruit -sivustolta.

Tarvitset myös Arduinon Midi -kirjaston voidaksesi lähettää Midi -tietoja. Sen voi tehdä ilmankin, mutta tämä vain helpottaa kaikkea.

Kommunikoidaksesi BME280: n kanssa käytin tätä BME280-I2C-ESP32-kirjastoa. (Tämä koskee BME280: n I2C -versiota)

Ja tämä kirjasto vaatii puolestaan Adafruit Unified Sensor Driverin. Tämä ei ole ensimmäinen kerta, kun tarvitsen tätä kirjastoa voidakseni käyttää toista kirjastoa ilman ongelmia, joten minulla on aina tämä kirjasto jossain kirjanmerkissä.

Vaihe 2: Vaihe 2: Laitteisto

Vaihe 2: Laitteisto
Vaihe 2: Laitteisto
Vaihe 2: Laitteisto
Vaihe 2: Laitteisto
Vaihe 2: Laitteisto
Vaihe 2: Laitteisto

Okei, joten pääsemme vihdoin hyviin asioihin, laitteistoon.

Kuten mainitsin, käytin tätä Adafruit ESP: tä, mutta sen pitäisi vain toimia hyvin NodeMCU: n kanssa. Suosittelen V2 -versiota, koska mielestäni se sopii paljon paremmin leipälaudalle ja voit saada ne erittäin halvalla eBaysta tai AliExpressistä. Pidän siitä, että Adafruit ESP: ssä on nopeampi suoritin, mukana naaras JST -liitin LiPo: lle ja latauspiiri. On myös hieman helpompi selvittää, mitä Pin -näppäintä käytät. Uskon, että NodeMCU: ssa D1 -merkintä on itse asiassa esimerkiksi GPIO5, joten tarvitset aina kätevän Pinout -kaavion. Ei suuri ongelma ollenkaan, mutta aloittelijoille vain kätevä, he merkitsivät Adafruit -tuotteen niin selvästi.

Kytketään ensin BME280, koska tässä mallissa on joitain muunnelmia. Kuten kuvista näkyy, kaivoksessani on yksi iso reikä, mutta on myös joitakin, joissa on 2 reikää. Näet, että siinä on 4 tuloa ja lähtöä, 1 teholle, yksi maalle ja SCL ja SDA. Tämä tarkoittaa, että se kommunikoi I2C: n kautta. Uskon, että muut mallit kommunikoivat SPI: n kautta. Ja joissakin voit valita joko SPI: n tai I2C: n. SPI saattaa vaatia eri kirjaston tai ainakin eri koodin ja eri johdotuksen. Uskon myös, että S in SPI tarkoittaa Serialia, enkä voi sanoa, häiritseekö tämä tämän projektin Midi -osaa, koska se toimii myös sarjayhteyden kautta.

Tämän BME: n liittäminen on melko suoraviivaista. ESP8266 -laitteessa nastat 4 ja 5 on merkitty SDA ja SCL. Liitä ne vain suoraan BME: n SDA- ja SCL -nastaan. Liitä tietysti myös VIN Breadboardin positiiviseen kiskoon ja GND negatiiviseen kiskoon. Ne on puolestaan kytketty ESP: n 3V3- ja GND -nastaan.

Seuraavaksi liitämme LDR: n. Fritzing -esimerkissä näet 3,3 volttia, joka kulkee vastuksen läpi, sitten se jaetaan LDR: ään ja toiseen vastukseen. Sitten LDR: n jälkeen se jaetaan jälleen vastukseen ja ADC: hen.

Tämä suojaa ESP: tä liian suurilta jännitteiltä ja varmistaa, että se saa luettavissa olevia arvoja. ADC voi käsitellä 0-1 volttia, mutta 3V3 tuottaa 3,3 volttia. Se ei todennäköisesti räjäytä mitään, jos ylität 1 voltin, mutta se ei toimi hyvin.

Joten ensin käytämme jännitteenjakajaa 220 ja 100 ohmin vastuksilla alentaaksesi jännitteen 3,3: sta 1,031 volttiin. Sitten 25 k ohmin LDR ja 1 k ohmin vastus muodostavat toisen jännitteenjakajan, joka alentaa jännitteen mistä tahansa 1,031 - 0 voltin välillä riippuen LDR: n saamasta valomäärästä.

Sitten meillä on sadetunnistin. Toisessa osassa lukee FC-37 ja toisessa HW-103. Ostin juuri ensimmäisen Ebaysta löytämäni, joka sanoi, että se kestää 3,3 ja 5 volttia. (Luulen, että he kaikki voivat).

Tämä on melko suoraviivaista, voimme käyttää analogista lähtöä, mutta voimme vain kääntää pienen Trimpotin, jotta anturi olisi niin herkkä kuin haluamme (ja käytimme jo yhtä analogista pinniä ESP: ssä). Kuten muidenkin antureiden kanssa, meidän on syötettävä virtaa positiivisesta kiskosta ja liitettävä se maadoituskiskoon. Joskus nastojen järjestys vaihtelee kuitenkin. Minulla se on VCC, Ground, Digital, Analog, mutta Fritzing -kuvassa se on erilainen. Mutta jos vain kiinnität huomiota, tämän pitäisi olla helppo saada oikea.

Ja lopuksi Midi Jack. Leipälaudallani se ei voi istua leipälaudan reunalla, koska kaikki nastat eivät ole kohdakkain. Jos tämä häiritsee sinua, yritän hankkia leipälaudan fyysisestä kaupasta. Tai katso kuvat hyvin.

Kuten kaaviosta näet, positiivinen jännite ja sarjasignaali kulkevat molemmat 47 ohmin vastuksen läpi.

Jos teet tämän projektin esimerkiksi Arduino Unolla, muista käyttää 220 ohmin vastuksia! Nämä ESP: t toimivat 3,3 V: n logiikalla, mutta suurin osa Arduinosta käyttää 5,0 V: ta, joten sinun on rajoitettava enemmän virtaa, joka kulkee Midi -kaapelin läpi.

Ja lopuksi yhdistä keskitappi maadoituskiskoon. Muita kahta 5 -nastaisen Din -nastaa ei käytetä.

Vaihe 3: Vaihe 3: Koodi

Ja lopulta meillä on koodi!

Tähän Zip -tiedostoon laitoin 2 luonnosta. LightRainTemp testaa vain kaikki anturit ja lähettää arvot takaisin. (Muista avata pääteikkuna!)

Ja tietysti meillä on LRTGenerativeMidi (LRT tarkoittaa valoa, sadetta, lämpötilaa) luonnos.

Sisältä löydät joukon selityksiä kommenteissa siitä, mitä tapahtuu. En aio mennä siihen, miten kirjoitin koko jutun, se kestäisi tunteja. Jos haluat tietää, mistä aloittaa tällainen, minulla on muita projekteja mielessä. Pieni Random Riff -generaattori, jossa on muutama painike, ja sekvensseri, jossa on joukko ominaisuuksia, joita en löydä muista malleista.

Mutta minun on ensin saatava suunnittelu ja koodaus valmiiksi. Kerro minulle, jos haluat pysyä ajan tasalla muista projekteista. En ole päättänyt, teenkö enemmän opastettavia vai videosarjan.

Vaihe 4: Vaihe 4: Liitä se ja testaa

Ja nyt on aika testata sitä!

Liitä vain Midi -kaapeli, muista asettaa Synth/Keyboard vastaamaan kanavalle 1 tai vaihtamaan kanava Arduino -koodissa ja katso toimiiko se!

Olen todella utelias näkemään ja kuulemaan, mitä teet sen kanssa. Jos teet muutoksia, päivityksiä, säätöjä (kuten valoanturi ja lämpötila -arvot. Ulkopuolella se voi toimia paremmin tai huonommin kuin sisällä) mitään.

Olen myös utelias näkemään, toimiiko se hyvin kaikkien syntetisaattoreiden kanssa. Volca Bassillani se toimii täydellisesti, mutta Neutronillani LFO juuttuu heti, kun lähetän Midi -muistiinpanon. Se on hyvä, kun käynnistän sen uudelleen, mutta se on outoa. En ole varma, onko Midi -kirjastossa tai koodissani jotain, mutta voisin yrittää tehdä sen pian ilman kirjastoa ja katsoa, paraneeko se.

Kiitos kun luit ja katsoit ja onnea !!

Suositeltava: