Obsah:

Weather Based Music Generator (ESP8266 Based Midi Generator): 4 kroky (s obrázky)
Weather Based Music Generator (ESP8266 Based Midi Generator): 4 kroky (s obrázky)

Video: Weather Based Music Generator (ESP8266 Based Midi Generator): 4 kroky (s obrázky)

Video: Weather Based Music Generator (ESP8266 Based Midi Generator): 4 kroky (s obrázky)
Video: Weather Generated Music On A Budget (Volca Bass + ESP8266) 2024, Červenec
Anonim
Weather Based Music Generator (Midi generátor založený na ESP8266)
Weather Based Music Generator (Midi generátor založený na ESP8266)
Weather Based Music Generator (Midi generátor založený na ESP8266)
Weather Based Music Generator (Midi generátor založený na ESP8266)

Ahoj, dnes vám vysvětlím, jak si vytvořit vlastní malý generátor hudby založený na počasí.

Je založen na ESP8266, což je něco jako Arduino, a reaguje na teplotu, déšť a intenzitu světla.

Nečekejte, že to udělá celé písně nebo akordové pokroky. Je to spíše jako generativní hudba, kterou lidé někdy dělají s modulárními syntetizéry. Ale pak je to trochu méně náhodné, například se to drží určitých Scales.

Zásoby

ESP8266 (používám Feather Huzzah ESP8266 od Adafruit)

BME280 Snímač teploty, vlhkosti a barometrického tlaku (verze I2C)

Snímač deště Arduino

25K LDR (rezistor závislý na světle)

Některé odpory (dva 47, jeden 100, jeden 220 a jeden 1 kOhm)

Female Midi Connector (5 Pin Din) vhodný pro montáž na DPS

Propojovací dráty

Breadboard nebo nějaká prototypová deska

Počítači, budu používat jeden se systémem Windows 8.1, ale pokud vím, měl by fungovat na jakémkoli operačním systému.

Volitelně: baterie LiPo 1250 mAh s konektorem JST od společnosti Adafruit (kompatibilní pouze s některými ESP)

Krok 1: Krok 1: Software

Nejprve potřebujete Arduino IDE.

Pak potřebujete ovladač SiLabs CP2104 a balíček ESP8266 Board Package.

To umožňuje vašemu počítači programovat ESP pomocí integrovaného UART a umožňuje Arduino IDE programovat ESP.

Všechny informace o balíčku IDE, Driver and Board Package najdete na této stránce na webu Adafruit.

K odesílání dat Midi budete také potřebovat knihovnu Arduino Midi. Dá se to zvládnout i bez, ale tím je vše mnohem jednodušší.

Pro komunikaci s BME280 jsem použil tuto knihovnu BME280-I2C-ESP32. (Toto je pro I2C verzi BME280)

A tato knihovna zase vyžaduje Adafruit Unified Sensor Driver. Není to poprvé, co potřebuji tuto knihovnu, abych mohl bez problémů používat jinou knihovnu, takže tuto knihovnu mám vždy někde uloženou jako záložku.

Krok 2: Krok 2: Hardware

Krok 2: Hardware
Krok 2: Hardware
Krok 2: Hardware
Krok 2: Hardware
Krok 2: Hardware
Krok 2: Hardware

Dobře, takže se konečně dostáváme k dobrým věcem, hardwaru.

Jak již bylo zmíněno, použil jsem tento Adafruit ESP, ale měl by fungovat dobře s NodeMCU. Doporučuji verzi V2, protože věřím, že se hodí mnohem lépe na prkénko a můžete je získat velmi levně z eBay nebo AliExpress. Líbí se mi, že Adafruit ESP má rychlejší CPU, je dodáván s konektorem JST pro LiPo a nabíjecím obvodem. Je také o něco snazší zjistit, jaký pin používáte. Věřím, že na NodeMCU je pin Labeled D1 ve skutečnosti například GPIO5, takže vždy potřebujete graf Pinout. Vůbec to nebyl velký problém, ale pro nováčky to bylo výhodné, protože tak jasně označili Adafruit.

Nejprve připojme BME280, protože v tomto modelu existují určité variace. Jak můžete vidět z obrázků, můj má jednu velkou díru, ale existují i některé se 2 otvory. Vidíte, že má 4 vstupy a výstupy, 1 pro napájení, jeden pro uzemnění a SCL a SDA. To znamená, že komunikuje přes I2C. Věřím, že jiné modely komunikují prostřednictvím SPI. A v některých si můžete vybrat buď SPI nebo I2C. SPI může vyžadovat jinou knihovnu nebo alespoň jiný kód a jiné zapojení. Věřím také, že S v SPI znamená Serial a nemohu říci, zda to bude zasahovat do Midi části tohoto projektu, protože to funguje také přes sériové připojení.

Připojení tohoto BME je docela jednoduché. Na ESP8266 můžete vidět pin 4 a 5 označené SDA respektive SCL. Stačí tyto piny připojit přímo ke kolíku SDA a SCL na BME. Samozřejmě také připojte VIN k pozitivní liště Breadboardu a GND k negativní liště. Ty jsou zase připojeny ke kolíku 3V3 a GND ESP.

Dále připojíme LDR. V příkladu Fritzing můžete vidět, že 3,3 voltů prochází odporem, pak je rozdělen na LDR a další odpor. Poté se po LDR opět rozdělí na odpor a na ADC.

To má chránit ESP před příliš vysokým napětím a zajistit, aby získal čitelné hodnoty. ADC zvládne 0-1 voltů, ale 3V3 dodává 3,3 voltů. Pokud přejdete nad 1 volt, pravděpodobně to nic nevybuchne, ale nebude to fungovat dobře.

Nejprve tedy použijeme dělič napětí pomocí 220 a 100 ohmových odporů, abychom snížili napětí z 3,3 na 1,031 voltů. Poté 25k ohm LDR a 1k ohmový odpor vytvoří další napěťový dělič, který sníží napětí z libovolného místa mezi 1,031 a 0 volty v závislosti na množství světla, které LDR dostane.

Pak tu máme dešťový senzor. Jedna část říká FC-37, druhá část říká HW-103. Právě jsem koupil první, který jsem našel na Ebay, který říkal, že zvládne 3,3 a 5 voltů. (Myslím, že mohou všichni).

To je docela přímočaré, mohli bychom použít analogový výstup, ale můžeme jen otočit malý Trimpot, aby byl senzor tak citlivý, jak chceme (a již jsme použili náš jeden analogový pin na ESP). Stejně jako u ostatních senzorů musíme dodávat energii z kladné kolejnice a připojit ji k zemnící liště. Někdy se však pořadí kolíků liší. Na mém je to VCC, Ground, Digital, Analog, ale na Fritzingově obrázku je to jiné. Pokud však věnujete pozornost, mělo by být snadné to napravit.

A nakonec Midi Jack. Na mém Breadboardu nemůže sedět na okraji prkénka, protože kolíky nejsou všechny zarovnané. Pokud ti to vadí, zkusil bych sehnat prkénko v kamenném obchodě. Nebo si obrázky velmi dobře prohlédněte.

Jak vidíte ze schématu, kladné napětí a sériový signál procházejí odporem 47 ohmů.

Pokud tento projekt provádíte například pomocí Arduino Uno, použijte 220 ohmové odpory !! Tyto ESP pracují na logice 3,3 V, ale většina Arduina používá 5,0 V, takže musíte více omezit proud, který prochází kabelem Midi.

A nakonec připojte prostřední kolík k Ground rail. Další 2 piny z 5 Pin Din nejsou použity.

Krok 3: Krok 3: Kód

A konečně máme kód!

Do tohoto souboru Zip jsem vložil 2 skici. „LightRainTemp“jednoduše otestuje všechna čidla a odešle zpět jejich hodnoty. (Ujistěte se, že otevřete okno terminálu!)

A samozřejmě tu máme skicu LRTGenerativeMidi (LRT znamená Light, Rain, Temperature).

Uvnitř najdete spoustu vysvětlení v komentářích k tomu, co se děje. Nebudu se zabývat tím, jak jsem to celé napsal, to by trvalo hodiny. Pokud chcete vědět, kde s něčím takovým začít, mám na mysli několik dalších projektů. Malý generátor náhodných riffů s několika tlačítky a sekvencerem se spoustou funkcí, které jsem u jiných modelů nenašel.

Ale ty budu muset nejdřív dokončit navrhováním a kódováním. Dejte mi vědět, pokud chcete být informováni o dalších projektech. Nerozhodl jsem se, jestli udělám více instruktážních videí nebo natočím videosérii.

Krok 4: Krok 4: Zapojte a vyzkoušejte

A teď je čas to vyzkoušet!

Jednoduše připojte kabel Midi, ujistěte se, že je vaše synth/klávesnice nastavena tak, aby reagovala na kanál 1, nebo změňte kanál v kódu Arduino a zjistěte, zda funguje!

Jsem opravdu zvědavý, co uvidím a uslyším, co s tím děláš. Pokud provádíte změny, upgrady, vylepšení (jako světelný senzor a hodnoty teploty. Venku to může fungovat lépe nebo hůře než uvnitř) cokoli.

Jsem také zvědavý, jestli to funguje dobře se všemi syntetizéry. Na mém Volca Bass funguje perfektně, ale na mém Neutronu se LFO zasekne, jakmile pošlu Midi Note. Je dobré, když to restartuji, ale je to zvláštní. Nejsem si jistý, jestli je něco v knihovně Midi nebo v mém kódu, možná to brzy zkusím udělat bez knihovny a uvidíme, jestli se to zlepší.

Děkujeme za čtení a sledování a přejeme hodně štěstí !!

Doporučuje: