Obsah:

Generátor hudby podľa počasia (midi generátor založený na ESP8266): 4 kroky (s obrázkami)
Generátor hudby podľa počasia (midi generátor založený na ESP8266): 4 kroky (s obrázkami)

Video: Generátor hudby podľa počasia (midi generátor založený na ESP8266): 4 kroky (s obrázkami)

Video: Generátor hudby podľa počasia (midi generátor založený na ESP8266): 4 kroky (s obrázkami)
Video: Часть 1 - Аудиокнига Уолдена Генри Дэвида Торо (гл. 01) 2024, December
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 vysvetlím, ako si vytvoriť vlastný malý generátor hudby založený na počasí.

Je založený na ESP8266, ktorý je niečo ako Arduino, a reaguje na teplotu, dážď a intenzitu svetla.

Nečakajte, že to urobí celé piesne alebo akordové pokroky. Je to skôr ako generatívna hudba, ktorú ľudia niekedy robia s modulárnymi syntetizátormi. Ale je to o niečo menej náhodné, napríklad, že sa to drží určitých mierok.

Zásoby

ESP8266 (používam Feather Huzzah ESP8266 od Adafruit)

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

Arduino dažďový senzor

25K LDR (svetlo závislý odpor)

Niektoré odpory (dva 47, jeden 100, jeden 220 a jeden 1 kOhm)

Samičí midi konektor (5 pinový Din) vhodný na montáž na dosku plošných spojov

Prepojovacie vodiče

Breadboard alebo nejaká prototypová doska

Počítač, budem používať operačný systém Windows 8.1, ale pokiaľ viem, mal by fungovať na akomkoľvek operačnom systéme.

Voliteľné: 1250 mAh batéria LiPo s konektorom JST od spoločnosti Adafruit (kompatibilné iba s niektorými ESP)

Krok 1: Krok 1: Softvér

V prvom rade potrebujete Arduino IDE.

Potom potrebujete ovládač SiLabs CP2104 a balík ESP8266 Board Package.

To umožňuje vášmu počítaču naprogramovať ESP prostredníctvom vstavaného UART a umožňuje Arduino IDE naprogramovať ESP.

Všetky informácie o balíku IDE, balíčku ovládačov a dosky nájdete na tejto stránke na webovej stránke Adafruit.

Na odosielanie údajov Midi budete potrebovať aj knižnicu Arduino Midi. Dá sa to urobiť aj bez, ale tým je všetko oveľa jednoduchšie.

Na komunikáciu s BME280 som použil túto knižnicu BME280-I2C-ESP32. (Toto je pre verziu BM280 I2C)

A táto knižnica zase vyžaduje Adafruit Unified Sensor Driver. Toto nie je prvýkrát, čo potrebujem túto knižnicu, aby som mohol bez problémov používať inú knižnicu, takže túto knižnicu mám vždy niekde uloženú ako záložku.

Krok 2: Krok 2: Hardvér

Krok 2: Hardvér
Krok 2: Hardvér
Krok 2: Hardvér
Krok 2: Hardvér
Krok 2: Hardvér
Krok 2: Hardvér

Správne, takže sa konečne dostávame k dobrým veciam, hardvéru.

Ako som už spomenul, použil som tento Adafruit ESP, ale s NodeMCU by mal fungovať dobre. Odporúčam verziu V2, pretože sa domnievam, že sa oveľa lepšie hodí na dosku a dostanete ich veľmi lacno z eBay alebo AliExpress. Páči sa mi, že Adafruit ESP má rýchlejší procesor, je dodávaný so zásuvkou JST pre LiPo a nabíjacím obvodom. O niečo jednoduchšie je tiež zistiť, ktorý pin používate. Verím, že na NodeMCU je pin Labeled D1 napríklad GPIO5, takže vždy potrebujete poruke Pinout. Vôbec to nebol veľký problém, ale pre nováčikovcov to bolo len pohodlné a tak jasne označili Adafruit.

Najprv pripojme BME280, pretože v tomto modeli existujú určité variácie. Ako môžete vidieť na obrázkoch, môj má jednu veľkú dieru, ale existujú aj niektoré s 2 dierami. Môžete vidieť, že má 4 vstupy a výstupy, 1 pre napájanie, jeden pre uzemnenie a SCL a SDA. To znamená, že komunikuje prostredníctvom I2C. Verím, že ostatné modely komunikujú prostredníctvom SPI. A v niektorých si môžete vybrať buď SPI alebo I2C. SPI môže vyžadovať inú knižnicu alebo iný kód a iné zapojenie. Tiež som presvedčený, že S v SPI znamená Serial a nemôžem povedať, či to bude zasahovať do Midi časti tohto projektu, pretože to funguje aj prostredníctvom sériového pripojenia.

Pripojenie tohto BME je celkom jednoduché. Na ESP8266 vidíte, že kolíky 4 a 5 sú označené SDA a SCL. Stačí tieto kolíky pripojiť priamo k kolíku SDA a SCL na BME. Samozrejme tiež pripojte VIN k pozitívnej lište Breadboardu a GND k negatívnej lište. Tie sú zase pripojené k pinu 3V3 a GND ESP.

Ďalej pripojíme LDR. V príklade Fritzing môžete vidieť, ako 3,3 voltov prechádza odporom, potom je rozdelený na LDR a ďalší odpor. Potom sa po LDR opäť rozdelí na odpor a na ADC.

Toto má chrániť ESP pred príliš vysokým napätím a zaistiť, aby získaval čitateľné hodnoty. ADC zvládne 0-1 voltov, ale 3V3 dodáva 3,3 voltov. Pravdepodobne nič nevybuchne, ak pôjdete nad 1 volt, ale nebude to fungovať dobre.

Najprv teda použijeme delič napätia pomocou rezistorov 220 a 100 ohmov na zníženie napätia z 3,3 na 1,031 voltov. Potom 25 kOhm LDR a 1k ohmový odpor vytvoria ďalší napäťový delič, ktorý zníži napätie kdekoľvek od 1,031 do 0 voltov v závislosti od množstva svetla, ktoré LDR dostane.

Potom tu máme dažďový senzor. Jedna časť uvádza FC-37, druhá časť hovorí o HW-103. Práve som si kúpil prvý, ktorý som našiel na Ebay a ktorý povedal, že zvládne 3,3 a 5 voltov. (Myslím, že môžu všetci).

Je to celkom jednoduché, mohli by sme použiť analógový výstup, ale stačí otočiť malý Trimpot, aby bol senzor taký citlivý, ako chceme (a už sme použili jeden analógový pin na ESP). Rovnako ako pre ostatné senzory musíme dodávať energiu z pozitívnej koľajnice a pripojiť ju k uzemňovacej lište. Niekedy sa však poradie kolíkov líši. Na mojom je to VCC, Ground, Digital, Analog, ale na Fritzingovom obrázku je to iné. Ale ak budete venovať pozornosť, malo by byť ľahké to napraviť.

A nakoniec, Midi Jack. Na mojom Breadboarde nemôže sedieť na okraji breadboardu, pretože kolíky nie sú všetky zarovnané. Ak vám to vadí, pokúsil by som sa dostať do potravinárskeho obchodu. Alebo si obrázky veľmi dobre prezrite.

Ako vidíte na schéme, kladné napätie a sériový signál prechádzajú cez odpor 47 ohmov.

Ak robíte tento projekt napríklad s Arduino Uno, použite 220 ohmové odpory !! Tieto ESP pracujú na logike 3,3 V, ale väčšina Arduino používa 5,0 V, takže musíte viac obmedziť prúd, ktorý prechádza káblom Midi.

A nakoniec pripojte stredný kolík k uzemňovacej lište. Ostatné 2 piny z 5 pinového Din nie sú použité.

Krok 3: Krok 3: Kód

A konečne tu máme kód!

Do tohto súboru Zip vkladám 2 skice. „LightRainTemp“jednoducho otestuje všetky senzory a odošle ich hodnoty. (Nezabudnite otvoriť okno terminálu!)

A samozrejme máme skicu LRTGenerativeMidi (LRT znamená svetlo, dážď, teplota).

Vnútri nájdete veľa vysvetlení v komentároch k tomu, čo sa deje. Nebudem sa zaoberať tým, ako som to celé napísal, to by trvalo hodiny. Ak chcete vedieť, kde s niečím takým začať, mám na mysli niekoľko ďalších projektov. Malý generátor náhodných riffov s niekoľkými tlačidlami a sekvencerom s hromadou funkcií, ktoré nemôžem nájsť u iných modelov.

Ale tie budem musieť najskôr dokončiť navrhovaním a kódovaním. Dajte mi vedieť, ak chcete byť informovaní o ďalších projektoch. Nerozhodol som sa, či urobím viac návodov alebo urobím sériu videí.

Krok 4: Krok 4: Pripojte ho a vyskúšajte

A teraz je čas to otestovať!

Jednoducho pripojte kábel Midi a uistite sa, že je vaša syntetizátor/klávesnica nastavená tak, aby reagovala na kanál 1, alebo zmeňte kanál v kóde Arduino a zistite, či funguje!

Som naozaj zvedavý, čo a čo s tým urobíte. Ak vykonáte zmeny, inovácie, vyladenia (ako napríklad svetelný senzor a hodnoty teploty. Vonku to môže fungovať lepšie alebo horšie ako vo vnútri) čokoľvek.

Tiež som zvedavý, či funguje dobre so všetkými syntetizátormi. Na mojom Volca Bass funguje perfektne, ale na mojom neutróne sa LFO zasekne hneď, ako pošlem Midi Note. Je dobré, keď ho reštartujem, ale je to zvláštne. Nie som si istý, či je niečo v knižnici Midi alebo v mojom kóde. Možno to čoskoro skúsim urobiť bez knižnice a uvidíme, či sa to zlepší.

Ďakujem za čítanie a sledovanie a prajem veľa šťastia !!

Odporúča: