Satura rādītājs:

Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators): 4 soļi (ar attēliem)
Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators): 4 soļi (ar attēliem)

Video: Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators): 4 soļi (ar attēliem)

Video: Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators): 4 soļi (ar attēliem)
Video: Tutas lietas | Dziesmiņa par laikapstākļiem 2024, Jūnijs
Anonim
Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators)
Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators)
Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators)
Mūzikas ģenerators uz laika apstākļiem (ESP8266 balstīts Midi ģenerators)

Sveiki, šodien es paskaidrošu, kā izveidot savu mazo laika apstākļu mūzikas ģeneratoru.

Tā pamatā ir ESP8266, kas ir līdzīgs Arduino, un tas reaģē uz temperatūru, lietu un gaismas intensitāti.

Negaidiet, ka tas radīs veselas dziesmas vai akordus. Tas vairāk atgādina ģeneratīvo mūziku, ko cilvēki dažreiz veido ar moduļu sintezatoriem. Bet tas ir nedaudz mazāk nejaušs, piemēram, tas pielīp, piemēram, noteiktiem svariem.

Piegādes

ESP8266 (es izmantoju Feather Huzzah ESP8266 no Adafruit)

BME280 temperatūras, mitruma un barometriskā spiediena sensors (I2C versija)

Arduino lietus sensors

25K LDR (no gaismas atkarīgs rezistors)

Daži rezistori (divi 47, viens 100, viens 220 un viens 1k omi)

Sieviešu midi savienotājs (5 kontaktu Din), piemērots PCB montāžai

Jumper vadi

Maizes dēlis vai kaut kāds prototipēšanas dēlis

Dators, es izmantošu vienu, kurā darbojas sistēma Windows 8.1, taču, cik es zinu, tam vajadzētu darboties jebkurā OS.

Pēc izvēles: 1250 mAh LiPo akumulators ar JST savienotāju no Adafruit (saderīgs tikai ar dažiem ESP)

1. darbība: 1. darbība: programmatūra

Vispirms jums ir nepieciešams Arduino IDE.

Tad jums ir nepieciešams SiLabs CP2104 draiveris un ESP8266 plates pakotne.

Tas ļauj jūsu datoram programmēt ESP, izmantojot iebūvēto UART, un ļauj Arduino IDE programmēt ESP.

Visu informāciju par IDE, vadītāja un tāfeles pakotni varat atrast šajā Adafruit tīmekļa vietnes lapā.

Jums būs nepieciešama arī Arduino Midi bibliotēka, lai varētu nosūtīt Midi datus. To var izdarīt bez tā, taču tas visu padara daudz vieglāku.

Lai sazinātos ar BME280, es izmantoju šo BME280-I2C-ESP32 bibliotēku. (Tas attiecas uz BME280 I2C versiju)

Un šai bibliotēkai savukārt ir nepieciešams Adafruit Unified Sensor Driver. Šī nav pirmā reize, kad man šī bibliotēka ir nepieciešama, lai bez problēmām varētu izmantot citu bibliotēku, tāpēc man šī bibliotēka vienmēr ir kaut kur atzīmēta.

2. darbība: 2. darbība: aparatūra

2. darbība. Aparatūra
2. darbība. Aparatūra
2. darbība. Aparatūra
2. darbība. Aparatūra
2. darbība. Aparatūra
2. darbība. Aparatūra

Labi, lai mēs beidzot nonāktu pie labām lietām, aparatūras.

Kā minēts, es izmantoju šo Adafruit ESP, taču tam vajadzētu labi darboties ar NodeMCU. Es iesaku V2 versiju, jo uzskatu, ka tā daudz labāk iederas uz maizes dēļa, un jūs varat tos iegūt ļoti lēti no eBay vai AliExpress. Man patīk fakts, ka Adafruit ESP ir ātrāks CPU, tam ir sieviešu JST savienotājs LiPo un uzlādes ķēde. Ir arī mazliet vieglāk saprast, kādu pin jūs izmantojat. Es uzskatu, ka, izmantojot NodeMCU, adata, kas apzīmēta ar D1, patiesībā ir GPIO5, tāpēc jums vienmēr ir nepieciešama Pinout diagramma. Tā nav liela problēma, bet iesācējiem vienkārši ērta, ka viņi tik skaidri apzīmēja Adafruit.

Vispirms pievienosim BME280, jo šim modelim ir dažas variācijas. Kā redzams no attēliem, manējā ir viens liels caurums, bet ir arī daži ar 2 caurumiem. Jūs varat redzēt, ka tam ir 4 ieejas un izejas, 1 jaudai, viens zemei un SCL un SDA. Tas nozīmē, ka tas sazinās, izmantojot I2C. Es uzskatu, ka citi modeļi sazinās, izmantojot SPI. Dažos gadījumos jūs varat izvēlēties SPI vai I2C. SPI var būt nepieciešama cita bibliotēka vai vismaz cits kods un dažādi vadi. Es arī uzskatu, ka S SPI apzīmē seriālu, un es nevaru pateikt, vai tas traucēs šī projekta Midi daļai, jo tas darbojas arī, izmantojot seriālo savienojumu.

Šī BME savienošana ir diezgan vienkārša. ESP8266 var redzēt, ka 4. un 5. tapa ir attiecīgi apzīmēti kā SDA un SCL. Vienkārši pievienojiet šīs tapas tieši BME SDA un SCL tapai. Protams, arī savienojiet VIN ar maizes dēļa pozitīvo sliedi un GND ar negatīvo sliedi. Tie savukārt ir savienoti ar ESP 3V3 un GND tapu.

Tālāk mēs savienosim LDR. Fritzinga piemērā var redzēt, kā 3,3 volti iet caur rezistoru, pēc tam tas tiek sadalīts uz LDR un citu rezistoru. Tad pēc LDR tas atkal tiek sadalīts rezistorā un ADC.

Tas ir paredzēts, lai pasargātu ESP no pārāk augsta sprieguma un pārliecinātos, ka tas iegūst nolasāmas vērtības. ADC var apstrādāt 0-1 voltus, bet 3V3 nodrošina 3,3 voltus. Tas, iespējams, neko nesprāgs, ja pārsniegsit 1 voltu, bet tas nedarbosies labi.

Tātad vispirms mēs izmantojam sprieguma dalītāju, izmantojot 220 un 100 omu rezistorus, lai samazinātu spriegumu no 3,3 līdz 1,031 voltiem. Tad 25k omu LDR un 1k omu rezistors veido citu sprieguma devēju, kas samazina spriegumu no jebkuras vietas no 1,031 līdz 0 voltiem atkarībā no gaismas daudzuma, ko iegūst LDR.

Tad mums ir lietus sensors. Vienā daļā rakstīts FC-37, otrā-HW-103. Es tikko nopirku pirmo, ko atradu Ebay un kurā teikts, ka tas spēj izturēt 3,3 un 5 voltus. (Es domāju, ka viņi visi var).

Tas ir diezgan vienkārši, mēs varētu izmantot analogo izvadi, bet mēs varam vienkārši pagriezt mazo Trimpot, lai padarītu sensoru tik jutīgu, cik vēlamies (un mēs jau izmantojām savu vienu analogo tapu ESP). Tāpat kā citiem sensoriem, mums ir jāpiegādā strāva no pozitīvās sliedes un jāpievieno tā pie zemes sliedes. Dažreiz tapu secība tomēr atšķiras. Manējā tas ir VCC, Ground, Digital, Analog, bet Fritzing attēlā ir savādāk. Bet, ja jūs vienkārši pievēršat uzmanību, tam vajadzētu būt viegli izlabot.

Un visbeidzot, Midi Jack. Uz manas maizes dēļa tas nevar sēdēt uz maizes malas malas, jo tapas nav visas izlīdzinātas. Ja tas jūs traucē, es mēģinātu dabūt maizes dēli fiziskā veikalā. Vai arī ļoti labi pārbaudiet attēlus.

Kā redzams no shēmas, pozitīvais spriegums un seriālais signāls iet caur 47 omu rezistoru.

Ja jūs, piemēram, veicat šo projektu ar Arduino Uno, noteikti izmantojiet 220 omu rezistorus! Šie ESP darbojas ar 3,3 V loģiku, bet lielākā daļa Arduino izmanto 5,0 V, tāpēc jums ir vairāk jāierobežo strāva, kas iet caur Midi kabeli.

Un visbeidzot savienojiet vidējo tapu ar zemes sliedi. Pārējās 2 tapas no 5 Pin Din netiek izmantotas.

3. darbība: 3. darbība: kods

Un beidzot mums ir kods!

Šajā ZIP failā es ievietoju 2 skices. "LightRainTemp" vienkārši pārbauda visus sensorus un nosūta atpakaļ to vērtības. (Noteikti atveriet termināļa logu!)

Un, protams, mums ir skice LRTGenerativeMidi (LRT apzīmē gaismu, lietu, temperatūru).

Iekšpusē komentāros varat atrast virkni paskaidrojumu par notiekošo. Es neiedziļināšos tajā, kā es visu uzrakstīju, tas prasītu stundas. Ja vēlaties uzzināt, kur sākt kaut ko līdzīgu, es domāju dažus citus projektus. Neliels Random Riff ģenerators ar dažām pogām un sekvenceris ar virkni funkciju, ko nevaru atrast citos modeļos.

Bet tiem, kuriem man vispirms būs jāpabeidz projektēšana un kodēšana. Ļaujiet man zināt, vai vēlaties būt informēts par citiem projektiem. Es neesmu izlēmis, vai izveidošu vairāk pamācību vai izveidošu video sēriju.

4. solis: 4. solis: pievienojiet to un pārbaudiet

Un tagad ir pienācis laiks to pārbaudīt!

Vienkārši pievienojiet Midi kabeli, noteikti iestatiet Synth/Keyboard, lai tas reaģētu uz 1. kanālu, vai mainiet kanālu Arduino kodā un pārbaudiet, vai tas darbojas!

Man tiešām ir interesanti redzēt un dzirdēt, ko jūs ar to darāt. Ja veicat izmaiņas, uzlabojumus, pielāgojumus (piemēram, gaismas sensora un temperatūras vērtības. Ārpus tas var darboties labāk vai sliktāk nekā iekšpusē) jebko.

Man arī interesē, vai tas labi darbojas ar visiem sintezatoriem. Manā Volca Bass tas darbojas perfekti, bet manā Neutronā LFO iestrēgst, tiklīdz es nosūtu Midi piezīmi. Tas ir labi, kad es to pārstartēju, bet tas ir dīvaini. Es neesmu pārliecināts, vai Midi bibliotēkā vai manā kodā ir kaut kas, es varētu drīz mēģināt to izdarīt bez bibliotēkas un redzēt, vai tas kļūs labāks.

Paldies, ka lasījāt un skatījāties, un lai veicas !!

Ieteicams: