Indholdsfortegnelse:

Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator): 4 trin (med billeder)
Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator): 4 trin (med billeder)

Video: Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator): 4 trin (med billeder)

Video: Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator): 4 trin (med billeder)
Video: Dot Matrix display Mk2 2024, November
Anonim
Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator)
Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator)
Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator)
Vejrbaseret musikgenerator (ESP8266 -baseret midi -generator)

Hej, i dag forklarer jeg, hvordan du laver din egen lille vejrbaserede musikgenerator.

Det er baseret på en ESP8266, som er lidt ligesom en Arduino, og den reagerer på temperatur, regn og lysintensitet.

Forvent ikke, at det vil lave hele sange eller akkordprogressioner. Det ligner mere Generative Musik, som folk nogle gange laver med Modular Synthesizers. Men det er lidt mindre tilfældigt, så det holder sig f.eks. Til visse skalaer.

Forbrugsvarer

ESP8266 (jeg bruger Feather Huzzah ESP8266 fra Adafruit)

BME280 temperatur-, fugtigheds- og barometrisk trykføler (I2C -versionen)

Arduino regnsensor

25K LDR (lysafhængig modstand)

Nogle modstande (to 47, en 100, en 220 og en 1k Ohm)

Kvinde Midi -stik (5 Pin Din) egnet til PCB -montering

Jumper Wires

Brødbræt eller en slags prototypebord

Computer, jeg bruger en, der kører Windows 8.1, men den burde fungere på ethvert operativsystem, så vidt jeg ved.

Valgfrit: 1250 mAh LiPo -batteri med JST -stik fra Adafruit (kun kompatibel med nogle ESP'er)

Trin 1: Trin 1: Software

Først og fremmest har du brug for Arduino IDE.

Så har du brug for SiLabs CP2104 driveren og ESP8266 Board Package.

Dette giver din computer mulighed for at programmere ESP via den indbyggede UART og giver Arduino IDE mulighed for at programmere ESP.

Du kan finde alle oplysninger om IDE, Driver og Board -pakken på denne side på Adafruit -webstedet.

Du skal også bruge Arduino Midi -biblioteket for at kunne sende Midi -data. Det kan gøres uden, men det gør alting meget lettere.

For at kommunikere med BME280 brugte jeg dette BME280-I2C-ESP32 bibliotek. (Dette er til I2C -versionen af BME280)

Og det bibliotek kræver igen Adafruit Unified Sensor Driver. Dette er ikke første gang, jeg har haft brug for dette bibliotek for at kunne bruge et andet bibliotek uden problemer, så jeg har altid et bibliotek som et bogmærke et sted.

Trin 2: Trin 2: Hardware

Trin 2: Hardware
Trin 2: Hardware
Trin 2: Hardware
Trin 2: Hardware
Trin 2: Hardware
Trin 2: Hardware

Okay, så vi endelig kommer til de gode ting, hardwaren.

Som nævnt brugte jeg denne Adafruit ESP, men den skulle bare fungere fint med en NodeMCU. Jeg anbefaler V2 -versionen, da jeg mener, at den passer meget bedre på et brødbræt, og du kan få dem meget billige fra eBay eller AliExpress. Jeg kan godt lide, at Adafruit ESP har en hurtigere CPU, leveres med en kvindelig JST -stik til en LiPo og et opladningskredsløb. Det er også lidt lettere at finde ud af, hvilken Pin du bruger. Jeg tror på en NodeMCU, at stiften mærket D1 faktisk er GPIO5 for eksempel, så du har altid brug for et Pinout -diagram praktisk. Slet ikke et stort problem, men bare praktisk for nybegyndere, de stemplede Adafruit en så tydeligt.

Lad os først forbinde BME280, fordi der er nogle variationer i denne model. Som du kan se på billederne har min det ene store hul, men der er også nogle med 2 huller. Du kan se, at den har 4 ind- og udgange, 1 til strøm, en til jord og en SCL og SDA. Det betyder, at den kommunikerer via I2C. Jeg tror, at andre modeller kommunikerer via SPI. Og i nogle kan du vælge enten SPI eller I2C. SPI kræver muligvis et andet bibliotek eller i det mindste en anden kode og forskellige ledninger. Jeg tror også, at S i SPI står for Serial, og jeg kan ikke sige, om dette vil forstyrre Midi -delen af dette projekt, da det også fungerer via seriel forbindelse.

Tilslutning til denne BME er ret ligetil. På ESP8266 kan du se pin 4 og 5 mærket henholdsvis SDA og SCL. Tilslut bare disse ben direkte til SDA- og SCL -stiften på BME. Tilslut selvfølgelig også VIN til den positive skinne på brødbrættet og GND til den negative skinne. Disse er igen forbundet med 3V3- og GND -stiften i ESP.

Dernæst forbinder vi LDR. I Fritzing -eksemplet kan du se de 3,3 volt, der går gennem en modstand, derefter deles den til LDR og en anden modstand. Derefter splittes det igen efter LDR til en modstand og til ADC.

Dette er for at beskytte ESP mod at få for høje spændinger og for at sikre, at det får læsbare værdier. ADC kan klare 0-1 volt, men 3V3 leverer 3,3 volt. Det vil sandsynligvis ikke sprænge noget, hvis du går over 1 volt, men det kommer ikke til at fungere godt.

Så først bruger vi en spændingsdeler med 220 og 100 ohm modstande til at sænke spændingen fra 3,3 til 1,031 volt. Derefter danner 25k ohm LDR og 1k ohm modstanden en anden spændingsudveksler, der bringer spændingen ned hvor som helst mellem 1.031 og 0 volt afhængigt af mængden af lys, LDR får.

Så har vi regnsensoren. Den ene del siger FC-37, den anden del siger HW-103. Jeg har lige købt den første, jeg fandt på Ebay, der sagde, at den kan klare 3,3 og 5 volt. (Det tror jeg alle kan).

Dette er ret ligetil, vi kunne bruge en analog udgang, men vi kan bare dreje den lille Trimpot for at få sensoren til at være så følsom, som vi vil (og vi har allerede brugt vores ene analoge pin på ESP). Som med de andre sensorer skal vi levere strøm fra Positivskinnen og tilslutte den til Jordskinnen. Nogle gange varierer rækkefølgen af stifterne dog. På min er det VCC, Ground, Digital, Analog, men på Fritzing -billedet er det anderledes. Men hvis du bare er opmærksom, skal det være let at få det rigtigt.

Og endelig Midi Jack. På mit brødbræt kan det ikke sidde på kanten af brødbrættet, da stifterne ikke alle flugter. Hvis dette generer dig, ville jeg prøve at få et brødbræt i en fysisk butik. Eller inspicere billederne meget godt.

Som du kan se fra skematisk, går den positive spænding og det serielle signal begge gennem en 47 ohm modstand.

Hvis du f.eks. Laver dette projekt med en Arduino Uno, skal du sørge for at bruge 220 ohm modstande !! Disse ESP'er arbejder på 3,3 V logik, men de fleste Arduino'er bruger 5,0 V, så du er nødt til at begrænse den strøm, der går gennem Midi -kablet mere.

Og tilslut til sidst den midterste pin til jordskinnen. De andre 2 ben fra 5 Pin Din bruges ikke.

Trin 3: Trin 3: Kode

Og endelig har vi koden!

I denne Zip -fil lagde jeg 2 skitser. 'LightRainTemp' tester bare alle sensorerne og sender deres værdier tilbage. (Sørg for at åbne terminalvinduet!)

Og selvfølgelig har vi LRTGenerativeMidi (LRT står for Light, Rain, Temperature) skitse.

Inde kan du finde en masse forklaringer i kommentarer til, hvad der foregår. Jeg vil ikke gå ind på, hvordan jeg skrev det hele, det ville tage timer. Hvis du vil vide, hvor du skal starte med sådan noget, har jeg nogle andre projekter i tankerne. En lille Random Riff -generator med et par knapper og en Sequencer med en masse funktioner, jeg ikke kan finde på andre modeller.

Men dem bliver jeg nødt til at afslutte med at designe og kode først. Lad mig vide, hvis du vil blive holdt opdateret om andre projekter. Jeg har ikke besluttet mig for, om jeg vil lave flere instruktioner eller lave en videoserie.

Trin 4: Trin 4: Tilslut det og test det

Og nu er det tid til at teste det!

Tilslut ganske enkelt et Midi -kabel, sørg for at indstille dit Synth/Keyboard til at reagere på kanal 1 eller ændre kanalen i Arduino -koden og se om det virker!

Jeg er virkelig nysgerrig efter at se og høre, hvad du gør med det. Hvis du foretager ændringer, opgraderinger, tweaks (som f.eks. Lyssensoren og temperaturværdier. Udenfor fungerer det måske bedre eller værre end indeni) alt muligt.

Jeg er også nysgerrig efter at se, om det fungerer godt med alle Synthesizers. På min Volca Bass fungerer den perfekt, men på min Neutron sætter LFO sig fast, så snart jeg sender en Midi Note. Det er fint, når jeg genstarter det, men det er mærkeligt. Jeg er ikke sikker på, om der er noget i Midi -biblioteket eller i min kode, jeg kan prøve at gøre det uden et bibliotek snart og se, om det bliver bedre.

Tak fordi du læste og så med og held og lykke !!

Anbefalede: