Sisukord:

Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator): 4 sammu (piltidega)
Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator): 4 sammu (piltidega)

Video: Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator): 4 sammu (piltidega)

Video: Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator): 4 sammu (piltidega)
Video: ESP8266 NodeMCU: Kick drum triggered LED strip with piezoelectric sensor 2024, Juuli
Anonim
Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator)
Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator)
Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator)
Ilmal põhinev muusikageneraator (ESP8266 põhine Midi -generaator)

Tere, täna selgitan teile, kuidas teha oma väike ilmapõhise muusika generaator.

See põhineb ESP8266 -l, mis on nagu Arduino, ja reageerib temperatuurile, vihmale ja valguse intensiivsusele.

Ärge oodake, et see teeks terveid laule või akordi. See sarnaneb pigem generatiivse muusikaga, mida inimesed mõnikord modulaarsete süntesaatoritega teevad. Kuid see on veidi vähem juhuslik, näiteks jääb see kinni teatud skaaladele.

Tarvikud

ESP8266 (ma kasutan Adafruit'i Feather Huzzah ESP8266)

BME280 temperatuuri, niiskuse ja õhurõhu andur (I2C versioon)

Arduino vihmasensor

25K LDR (valgust sõltuv takisti)

Mõned takistid (kaks 47, üks 100, üks 220 ja üks 1 kΩ)

Naissoost midi -pistik (5 -pin Din), mis sobib PCB -le kinnitamiseks

Jumper juhtmed

Leivalaud või mingi prototüüpimislaud

Arvuti, ma kasutan operatsioonisüsteemi Windows 8.1, kuid see peaks minu teada töötama mis tahes operatsioonisüsteemiga.

Valikuline: Adafruit'i JST -pistikuga 1250 mAh LiPo aku (ühildub ainult mõne ESP -ga)

1. samm: 1. samm: tarkvara

Kõigepealt vajate Arduino IDE -d.

Siis vajate SiLabs CP2104 draiverit ja ESP8266 pardapaketti.

See võimaldab teie arvutil programmeerida ESP -d sisseehitatud UART -i kaudu ja Arduino IDE -l ESP -d.

Kogu teabe IDE, juhi ja pardapaketi kohta leiate sellelt Adafruit'i veebisaidi lehelt.

Midi andmete saatmiseks vajate ka Arduino Midi raamatukogu. Seda saab teha ka ilma, kuid see muudab kõik palju lihtsamaks.

BME280-ga suhtlemiseks kasutasin seda raamatukogu BME280-I2C-ESP32. (See on BME280 I2C versiooni jaoks)

Ja see raamatukogu nõuab omakorda Adafruit Unified Sensor Driverit. See ei ole esimene kord, kui mul on vaja seda raamatukogu, et saaksin kasutada teeki ilma probleemideta, nii et mul on see raamatukogu alati kusagil järjehoidjas.

2. samm: 2. samm: riistvara

Samm: riistvara
Samm: riistvara
Samm: riistvara
Samm: riistvara
Samm: riistvara
Samm: riistvara

Nii et lõpuks jõuame heade asjade, riistvara juurde.

Nagu mainitud, kasutasin seda Adafruit ESP -d, kuid see peaks NodeMCU -ga lihtsalt hästi töötama. Soovitan V2 versiooni, kuna usun, et see sobib palju paremini leivalauale ja neid saab eBayst või AliExpressist väga odavalt. Mulle meeldib asjaolu, et Adafruit ESP -l on kiirem protsessor, kaasas naissoost JST -pistik LiPo jaoks ja laadimisahel. Samuti on natuke lihtsam aru saada, millist PIN -koodi kasutate. Usun, et NodeMCU puhul on näiteks D1 märgistusega tihvt tegelikult GPIO5, nii et teil on alati käepärast Pinout -diagramm. See pole üldse suur probleem, kuid algajatele on see lihtsalt mugav, et nad sildistasid Adafruit'i nii selgelt.

Kõigepealt ühendame BME280, kuna sellel mudelil on mõned variatsioonid. Nagu piltidelt näha, on kaevandusel üks suur auk, kuid on ka 2 auguga auke. Näete, et sellel on 4 sisendit ja väljundit, 1 toide, üks maa jaoks ja SCL ja SDA. See tähendab, et see suhtleb I2C kaudu. Usun, et teised mudelid suhtlevad SPI kaudu. Mõnel juhul saate valida kas SPI või I2C. SPI võib vajada teeki või vähemalt erinevat koodi ja erinevat juhtmestikku. Samuti usun, et S in SPI tähistab Serialit ja ma ei oska öelda, kas see häirib selle projekti Midi osa, kuna see töötab ka jadaühenduse kaudu.

Selle BME ühendamine on üsna lihtne. ESP8266 -l näete, et tihvtid 4 ja 5 on märgistatud vastavalt SDA ja SCL. Lihtsalt ühendage need tihvtid otse BME SDA ja SCL tihvtiga. Loomulikult ühendage VIN ka leivalaua positiivse rööpaga ja GND negatiivse rööpaga. Need on omakorda ühendatud ESP 3V3 ja GND tihvtiga.

Järgmisena ühendame LDR -i. Fritzingu näites näete, kuidas takisti läbib 3,3 volti, seejärel jagatakse see LDR -i ja teise takisti külge. Seejärel jagatakse see pärast LDR -i uuesti takistiks ja ADC -ks.

Selle eesmärk on kaitsta ESP -d liiga kõrgete pingete eest ja veenduda, et see saab loetavaid väärtusi. ADC saab hakkama 0-1 voltiga, kuid 3V3 pakub 3,3 volti. Tõenäoliselt ei puhka see midagi õhku, kui lähete üle 1 voldi, kuid see ei tööta hästi.

Nii et kõigepealt kasutame pingejaoturit, kasutades 220 ja 100 oomi takistit, et vähendada pinget 3,3 -lt 1,031 -le. Seejärel moodustavad 25k oomine LDR ja 1k oom takisti veel ühe pingejaoturi, mis vähendavad pinget kõikjalt vahemikus 1,031 kuni 0 volti sõltuvalt valguse hulgast, mida LDR saab.

Siis on meil vihmasensor. Üks osa ütleb FC-37, teine HW-103. Ostsin just esimese, mille ma Ebays leidsin ja mis ütles, et see saab hakkama 3,3 ja 5 voltiga. (Ma arvan, et nad kõik saavad).

See on üsna otsekohene, me võiksime kasutada analoogväljundit, kuid me võime lihtsalt pisikest Trimpot pöörata, et muuta andur nii tundlikuks kui tahame (ja me kasutasime juba oma ühte analoogpulti ESP -l). Nagu teiste andurite puhul, peame ka toiteplokiga varustama toite ja ühendama selle maapealse rööpaga. Mõnikord on tihvtide järjekord siiski erinev. Minu jaoks on see VCC, Ground, Digital, Analog, kuid Fritzingi pildil on see teisiti. Aga kui te lihtsalt tähelepanu pöörate, peaks see olema lihtne õigeks saada.

Ja lõpuks Midi Jack. Minu leivaplaadil ei saa see leivalaua servale istuda, kuna tihvtid pole kõik joondatud. Kui see teid häirib, prooviksin leivalaua füüsilisest poest hankida. Või vaadake pilte väga hästi.

Nagu skemaatiliselt näha, läbivad positiivne pinge ja jadasignaal mõlemad 47 oomi takisti.

Kui teete seda projekti näiteks Arduino Unoga, kasutage kindlasti 220 oomi takistit! Need ESP -d töötavad 3,3 V loogikaga, kuid enamik Arduino kasutab 5,0 V, nii et peate Midi -kaablit läbivat voolu rohkem piirama.

Ja lõpuks ühendage keskmine tihvt maapinnaga. Ülejäänud 2 tihvti 5 -pin Dinist ei kasutata.

3. samm: 3. samm: kood

Ja lõpuks on meil kood!

Sellesse ZIP -faili panin 2 visandit. "LightRainTemp" lihtsalt testib kõiki andureid ja saadab nende väärtused tagasi. (Avage kindlasti terminali aken!)

Ja loomulikult on meil visand LRTGenerativeMidi (LRT tähistab valgust, vihma, temperatuuri).

Seest leiate kommentaaridest hunniku selgitusi toimuva kohta. Ma ei hakka rääkima sellest, kuidas ma kogu asja kirjutasin, see võtaks tunde. Kui soovite teada, kust sellise asjaga alustada, pean silmas mõnda muud projekti. Väike Random Riff generaator mõne nupuga ja Sequencer koos hunniku funktsioonidega, mida ma teistel mudelitel ei leia.

Kuid need, mille projekteerimine ja kodeerimine tuleb mul kõigepealt lõpetada. Andke mulle teada, kui soovite end teiste projektidega kursis hoida. Ma pole otsustanud, kas teen rohkem juhendatavaid asju või teen videosarja.

4. samm: 4. samm: ühendage see ja proovige

Ja nüüd on aeg seda testida!

Lihtsalt ühendage Midi -kaabel, seadistage oma Synth/klaviatuur kindlasti kanalile 1 vastama või muutke Arduino koodi kanalit ja vaadake, kas see töötab!

Mul on tõesti huvitav näha ja kuulda, mida te sellega teete. Kui teete muudatusi, täiendusi, muudatusi (näiteks valgusanduri ja temperatuuri väärtusi. Väljaspool see võib paremini või halvemini toimida).

Samuti olen huvitatud, kas see töötab hästi kõigi süntesaatoritega. Minu Volca Bassil töötab see ideaalselt, kuid minu Neutronil jääb LFO kinni kohe, kui saadan Midi Note'i. See on hea, kui ma selle taaskäivitan, kuid see on imelik. Ma pole kindel, kas Midi raamatukogus või minu koodis on midagi, võin proovida seda varsti ilma raamatukoguta teha ja vaadata, kas see paraneb.

Aitäh lugemise ja vaatamise eest ja edu !!

Soovitan: