Innholdsfortegnelse:

Værbasert musikkgenerator (ESP8266 -basert midi -generator): 4 trinn (med bilder)
Værbasert musikkgenerator (ESP8266 -basert midi -generator): 4 trinn (med bilder)

Video: Værbasert musikkgenerator (ESP8266 -basert midi -generator): 4 trinn (med bilder)

Video: Værbasert musikkgenerator (ESP8266 -basert midi -generator): 4 trinn (med bilder)
Video: Салус МультиМикс. Регулятор центрального отопления и горячего водоснабжения Настройки и функции меню 2024, November
Anonim
Værbasert musikkgenerator (ESP8266 -basert midi -generator)
Værbasert musikkgenerator (ESP8266 -basert midi -generator)
Værbasert musikkgenerator (ESP8266 -basert midi -generator)
Værbasert musikkgenerator (ESP8266 -basert midi -generator)

Hei, i dag skal jeg forklare hvordan du lager din egen lille værbaserte musikkgenerator.

Den er basert på en ESP8266, som er omtrent som en Arduino, og den reagerer på temperatur, regn og lysintensitet.

Ikke forvent at det skal lage hele sanger eller akkordprogresjoner. Det er mer som Generative Music folk noen ganger lager med Modular Synthesizers. Men det er litt mindre tilfeldig da, det holder seg for eksempel til visse skalaer.

Rekvisita

ESP8266 (jeg bruker Feather Huzzah ESP8266 fra Adafruit)

BME280 temperatur-, fuktighets- og barometrisk trykksensor (I2C -versjonen)

Arduino regnsensor

25K LDR (lysavhengig motstand)

Noen motstander (to 47, en 100, en 220 og en 1k Ohm)

Kvinne Midi -kontakt (5 Pin Din) egnet for PCB -montering

Jumper Wires

Brødbrett eller en slags prototypebrett

Datamaskin, jeg bruker en som kjører Windows 8.1, men den skal fungere på alle operativsystemer så vidt jeg vet.

Valgfritt: 1250 mAh LiPo -batteri med JST -kontakt fra Adafruit (bare kompatibel med noen ESP -er)

Trinn 1: Trinn 1: Programvare

Først av alt trenger du Arduino IDE.

Da trenger du SiLabs CP2104 -driveren og ESP8266 Board Package.

Dette gjør at datamaskinen din kan programmere ESP via den innebygde UART og lar Arduino IDE programmere ESP.

Du finner all informasjon om IDE, driver og brettpakke på denne siden på Adafruit -nettstedet.

Du trenger også Arduino Midi Library for å kunne sende Midi -data. Det kan gjøres uten, men dette gjør alt mye enklere.

For å kommunisere med BME280 brukte jeg dette BME280-I2C-ESP32-biblioteket. (Dette er for I2C -versjonen av BME280)

Og det biblioteket krever igjen Adafruit Unified Sensor Driver. Dette er ikke første gang jeg trenger dette biblioteket for å bruke et annet bibliotek uten problemer, så jeg har alltid et bibliotek som et bokmerke et sted.

Trinn 2: Trinn 2: Maskinvare

Trinn 2: Maskinvare
Trinn 2: Maskinvare
Trinn 2: Maskinvare
Trinn 2: Maskinvare
Trinn 2: Maskinvare
Trinn 2: Maskinvare

OK, så vi endelig kommer til de gode tingene, maskinvaren.

Som nevnt brukte jeg denne Adafruit ESP, men den skulle bare fungere fint med en NodeMCU. Jeg anbefaler V2 -versjonen, da jeg tror den passer mye bedre på et brødbrett, og du kan få dem veldig billig fra eBay eller AliExpress. Jeg liker det faktum at Adafruit ESP har en raskere CPU, kommer med en kvinnelig JST -kontakt for en LiPo og en ladekrets. Det er også litt lettere å finne ut hvilken pin du bruker. Jeg tror på en NodeMCU at pinnen merket D1 faktisk er GPIO5 for eksempel, så du trenger alltid et Pinout -diagram hendig. Ikke et stort problem i det hele tatt, men bare praktisk for nybegynnere, merket de Adafruit så tydelig.

La oss først koble til BME280, fordi det er noen variasjoner i denne modellen. Som du kan se på bildene har min det ene store hullet, men det er også noen med 2 hull. Du kan se at den har 4 inn og utganger, 1 for strøm, en for bakken og en SCL og SDA. Dette betyr at den kommuniserer via I2C. Jeg tror andre modeller kommuniserer via SPI. Og i noen kan du velge enten SPI eller I2C. SPI kan kreve et annet bibliotek eller i det minste annen kode og forskjellige ledninger. Jeg tror også S i SPI står for Serial, og jeg kan ikke si om dette vil forstyrre Midi -delen av dette prosjektet, da det også fungerer via seriell forbindelse.

Å koble til denne BME er ganske rett frem. På ESP8266 kan du se at pinne 4 og 5 er merket henholdsvis SDA og SCL. Bare koble disse pinnene direkte til SDA- og SCL -pinnen på BME. Koble selvfølgelig også VIN til den positive skinnen på brødbrettet og GND til den negative skinnen. Disse er igjen koblet til 3V3 og GND -pinnen til ESP.

Deretter kobler vi LDR. I Fritzing -eksemplet kan du se 3,3 volt som går gjennom en motstand, så deles den til LDR og en annen motstand. Etter LDR deles den igjen til en motstand og til ADC.

Dette er for å beskytte ESP mot å få for høye spenninger og for å sikre at den får lesbare verdier. ADC kan håndtere 0-1 volt, men 3V3 leverer 3,3 volt. Det vil sannsynligvis ikke sprenge noe hvis du går over 1 volt, men det kommer ikke til å fungere bra.

Så først bruker vi en spenningsdeler som bruker 220 og 100 ohm motstander for å redusere spenningen fra 3,3 til 1,031 volt. Deretter danner 25k ohm LDR og 1k ohm motstanden en annen spenningsutveksler som bringer spenningen ned hvor som helst mellom 1.031 og 0 volt avhengig av mengden lys LDR får.

Så har vi regnsensoren. Den ene delen sier FC-37, den andre delen sier HW-103. Jeg har nettopp kjøpt den første jeg fant på Ebay som sa at den kan håndtere 3,3 og 5 volt. (Jeg tror de alle kan).

Dette er ganske rett frem, vi kan bruke en analog utgang, men vi kan bare snu den lille Trimpot for å få sensoren til å være så sensitiv som vi vil (og vi brukte allerede den ene analoge pinnen på ESP). Som med de andre sensorene må vi levere strøm fra Positivskinnen og koble den til Jordskinnen. Noen ganger varierer rekkefølgen på pinnene. På min er det VCC, Ground, Digital, Analog, men på Fritzing -bildet er det annerledes. Men hvis du bare tar hensyn, bør dette være lett å få rett.

Og til slutt Midi Jack. På min brødbrett kan den ikke sitte på kanten av brødbrettet, ettersom pinnene ikke alle er på linje. Hvis dette plager deg, ville jeg prøve å få et brødbrett i en fysisk butikk. Eller inspiser bildene veldig godt.

Som du kan se fra skjematikken, går både den positive spenningen og det serielle signalet gjennom en 47 ohm motstand.

Hvis du for eksempel gjør dette prosjektet med en Arduino Uno, må du bruke 220 ohm motstander !! Disse ESP -ene jobber med 3,3 V -logikk, men de fleste Arduino -er bruker 5,0 V, så du må begrense strømmen som går gjennom Midi -kabelen mer.

Og til slutt kobler du den midtre pinnen til bakkeskinnen. De andre 2 pinnene fra 5 Pin Din brukes ikke.

Trinn 3: Trinn 3: Kode

Og endelig har vi koden!

I denne Zip -filen legger jeg 2 skisser. 'LightRainTemp' tester bare alle sensorene og sender tilbake verdiene. (Sørg for å åpne terminalvinduet!)

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

Innvendig kan du finne en haug med forklaring i kommentarer til hva som skjer. Jeg kommer ikke til å gå inn på hvordan jeg skrev det hele, det ville ta timer. Hvis du vil vite hvor du skal begynne med noe slikt, har jeg noen andre prosjekter i tankene. En liten Random Riff -generator med noen få knapper og en Sequencer med en haug med funksjoner jeg ikke finner på andre modeller.

Men de jeg må fullføre med å designe og kode først. Gi meg beskjed hvis du vil bli holdt oppdatert om andre prosjekter. Jeg har ikke bestemt meg for om jeg skal lage flere instrukser eller lage en videoserie.

Trinn 4: Trinn 4: Koble til og test den

Og nå er det på tide å teste det!

Bare koble til en Midi -kabel, sørg for å sette Synth/Keyboard til å svare på kanal 1 eller endre kanal i Arduino -koden og se om det fungerer!

Jeg er veldig nysgjerrig på å se og høre hva du gjør med det. Hvis du gjør endringer, oppgraderinger, justeringer (som lyssensoren og temperaturverdier. Utenfor kan det fungere bedre eller verre enn inne).

Jeg er også nysgjerrig på å se om det fungerer bra med alle Synthesizers. På min Volca Bass fungerer den perfekt, men på min Neutron setter LFO seg fast så snart jeg sender en Midi Note. Det er greit når jeg starter det på nytt, men det er rart. Jeg er ikke sikker på om det er noe i Midi -biblioteket eller i koden min. Jeg kan prøve å gjøre det uten et bibliotek snart og se om det blir bedre.

Takk for at du leste og så på og lykke til !!

Anbefalt: