Tartalomjegyzék:

Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): 4 lépés (képekkel)
Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): 4 lépés (képekkel)

Videó: Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): 4 lépés (képekkel)

Videó: Időjárás alapú zenegenerátor (ESP8266 alapú Midi generátor): 4 lépés (képekkel)
Videó: Internet rádió építése. ESP8266 a lelke, de a tudásod is kell, hogy a kedvenc rádiód szóljon. 2024, Június
Anonim
Időjárás alapú zenegenerátor (ESP8266 alapú midi generátor)
Időjárás alapú zenegenerátor (ESP8266 alapú midi generátor)
Időjárás alapú zenegenerátor (ESP8266 alapú midi generátor)
Időjárás alapú zenegenerátor (ESP8266 alapú midi generátor)

Szia, ma elmagyarázom, hogyan készíthetsz saját kis időjárás alapú zenegenerátort.

Az ESP8266 -on alapul, ami olyan, mint egy Arduino, és reagál a hőmérsékletre, az esőre és a fényintenzitásra.

Ne várd el, hogy teljes dalokat vagy akkordprogressziókat produkáljon. Inkább olyan, mint a Generative Music, amit az emberek néha moduláris szintetizátorokkal készítenek. De ez egy kicsit kevésbé véletlenszerű, például ragaszkodik bizonyos skálákhoz.

Kellékek

ESP8266 (az Adafruit Feather Huzzah ESP8266 -ját használom)

BME280 hőmérséklet-, páratartalom- és légnyomás -érzékelő (az I2C verzió)

Arduino esőérzékelő

25K LDR (fényfüggő ellenállás)

Néhány ellenállás (kettő 47, egy 100, egy 220 és egy 1 k ohm)

Női Midi csatlakozó (5 tűs Din), alkalmas NYÁK -szerelésre

Jumper vezetékek

Kenyeretábla vagy valamilyen prototípus -tábla

Számítógép, Windows 8.1 -et fogok használni, de ha jól tudom, minden operációs rendszeren működnie kell.

Opcionális: 1250 mAh LiPo akkumulátor JST csatlakozóval az Adafruit -tól (csak néhány ESP -vel kompatibilis)

1. lépés: 1. lépés: Szoftver

Először is szüksége van az Arduino IDE -re.

Ezután szüksége lesz a SiLabs CP2104 illesztőprogramra és az ESP8266 Board csomagra.

Ez lehetővé teszi, hogy számítógépe programozza az ESP -t a beépített UART -on keresztül, és lehetővé teszi, hogy az Arduino IDE programozza az ESP -t.

Az IDA -val, a sofőrrel és a fedélzeti csomaggal kapcsolatos minden információt megtalál az Adafruit weboldalának ezen az oldalán.

Szüksége lesz az Arduino Midi könyvtárra is, hogy Midi adatokat küldhessen. Meg lehet csinálni anélkül is, de ez csak nagyon megkönnyít mindent.

A BME280-val való kommunikációhoz ezt a BME280-I2C-ESP32 könyvtárat használtam. (Ez a BME280 I2C verziójára vonatkozik)

Ehhez a könyvtárhoz viszont Adafruit Unified Sensor Driver szükséges. Nem ez az első alkalom, hogy szükségem van erre a könyvtárra, hogy problémamentesen használhassak egy másik könyvtárat, ezért ezt a könyvtárat mindig valahol könyvjelzővel látom el.

2. lépés: 2. lépés: Hardver

2. lépés: Hardver
2. lépés: Hardver
2. lépés: Hardver
2. lépés: Hardver
2. lépés: Hardver
2. lépés: Hardver

Rendben, így végre eljutunk a jó dolgokhoz, a hardverhez.

Mint említettem, ezt az Adafruit ESP -t használtam, de csak NodeMCU -val kell jól működnie. Ajánlom a V2 -es verziót, mivel úgy gondolom, hogy sokkal jobban illeszkedik a kenyérlapra, és nagyon olcsón beszerezheti őket az eBay -ről vagy az AliExpressről. Tetszik, hogy az Adafruit ESP gyorsabb CPU -val rendelkezik, egy női JST csatlakozóval rendelkezik LiPo -hoz és töltőáramkörhöz. Egy kicsit könnyebb kitalálni, hogy milyen Pin -t használ. Úgy gondolom, hogy a NodeMCU -n a D1 címke valójában például GPIO5, így mindig kéznél kell lennie egy Pinout -diagramnak. Egyáltalán nem nagy probléma, de az újoncok számára kényelmes, hogy ilyen egyértelműen felcímkézték az Adafruitot.

Először is csatlakoztassuk a BME280 -at, mert ebben a modellben vannak eltérések. Amint a képeken látható, az enyémben van egy nagy lyuk, de vannak olyanok is, ahol 2 lyuk van. Látható, hogy 4 bemenete és kimenete van, 1 a tápellátáshoz, egy a földeléshez, valamint egy SCL és SDA. Ez azt jelenti, hogy az I2C -n keresztül kommunikál. Úgy gondolom, hogy más modellek SPI -n keresztül kommunikálnak. Néhány esetben SPI vagy I2C is választható. Az SPI más könyvtárat vagy legalább más kódot és különböző kábelezést igényelhet. Azt is hiszem, hogy az S in SPI jelentése a Serial, és nem tudom megmondani, hogy ez zavarja -e a projekt Midi részét, mivel ez is soros kapcsolaton keresztül működik.

Ennek a BME -nek a csatlakoztatása elég egyszerű. Az ESP8266 készüléken látható, hogy a 4. és az 5. tüske SDA, illetve SCL felirattal van ellátva. Csak csatlakoztassa ezeket a csapokat közvetlenül a BME SDA és SCL csapjaihoz. Természetesen csatlakoztassa a VIN -t a kenyértábla pozitív sínjéhez és a GND -t a negatív sínhez. Ezek viszont az ESP 3V3 és GND csapjához vannak csatlakoztatva.

Legközelebb az LDR -t csatlakoztatjuk. A Fritzing példában láthatja, hogy a 3,3 volt átmegy egy ellenálláson, majd fel van osztva az LDR -re és egy másik ellenállásra. Aztán az LDR után újra fel van osztva egy ellenállásra és az ADC -re.

Ennek célja, hogy megvédje az ESP -t a túl magas feszültségektől, és biztosítsa, hogy olvasható értékeket kapjon. Az ADC képes kezelni a 0-1 voltot, de a 3V3 3,3 voltot biztosít. Valószínűleg nem fog felrobbantani semmit, ha 1 volt fölé megy, de nem fog jól működni.

Tehát először egy 220 és 100 ohmos ellenállást használó feszültségosztót használunk, hogy a feszültséget 3,3 -ról 1,031 voltra csökkentsük. Ezután a 25 k ohmos LDR és az 1 k ohmos ellenállás egy másik feszültségosztót képez, amelyek az LDR által kapott fény mennyiségétől függően 1,031 és 0 volt között csökkentik a feszültséget.

Akkor megvan az esőérzékelő. Az egyik rész FC-37, a másik HW-103 feliratú. Most vettem az elsőt, amit az Ebay -en találtam, és azt mondta, hogy 3,3 és 5 voltot képes kezelni. (Szerintem mindegyikük képes rá).

Ez elég egyszerű, használhatunk analóg kimenetet, de csak elforgathatjuk az apró Trimpotot, hogy az érzékelő olyan érzékeny legyen, amennyit csak akarunk (és már használtuk az egyik analóg érintkezőt az ESP -n). A többi érzékelőhöz hasonlóan a pozitív sínről kell áramot szolgáltatni, és a földi sínhez kell csatlakoztatni. Néha a csapok sorrendje változó. Az enyémen VCC, Ground, Digital, Analog, de a Fritzing képen más. De ha csak odafigyel, akkor könnyen lehet, hogy helyes lesz.

És végül a Midi Jack. Az én kenyértáblámon nem ülhet a kenyértábla szélén, mivel a csapok nem egybeesnek. Ha ez zavar, megpróbálok kenyérsütőt szerezni egy fizikai boltban. Vagy nagyon jól nézd meg a képeket.

Amint a vázlatból látható, a pozitív feszültség és a soros jel egyaránt 47 ohmos ellenálláson megy keresztül.

Ha például ezt a projektet egy Arduino Uno -val végzi, győződjön meg róla, hogy 220 ohmos ellenállásokat használ !! Ezek az ESP -k 3,3 V -os logikán dolgoznak, de az Arduino legtöbbje 5,0 V -ot használ, így inkább korlátozni kell a Midi -kábelen áthaladó áramot.

Végül csatlakoztassa a középső csapot a földi sínhez. Az 5 tűs Din másik 2 csapja nincs használatban.

3. lépés: 3. lépés: Kód

És végre megvan a kód!

Ebben a Zip fájlban 2 vázlatot tettem fel. A „LightRainTemp” egyszerűen teszteli az összes érzékelőt, és visszaküldi az értékeiket. (Győződjön meg róla, hogy megnyitja a terminál ablakát!)

És természetesen megvan az LRTGenerativeMidi (LRT jelentése Light, Rain, Temperature) vázlata.

Belül kommentben talál egy csomó magyarázatot arra, hogy mi történik. Nem fogok belemenni abba, hogyan írtam le az egészet, ez órákig tartana. Ha szeretné tudni, hogy hol kezdje el az ilyesmit, akkor más projektekre is gondolok. Egy kis Random Riff generátor néhány gombbal és egy szekvenszer olyan funkciókkal, amelyeket más modelleken nem találok.

De azoknak előbb be kell fejeznem a tervezést és a kódolást. Tudassa velem, ha naprakész szeretne lenni más projektekről. Nem döntöttem el, hogy több oktatható anyagot készítek vagy videósorozatot készítek.

4. lépés: 4. lépés: Csatlakoztassa és tesztelje

És most itt az ideje, hogy tesztelje!

Egyszerűen csatlakoztasson egy Midi kábelt, győződjön meg arról, hogy a Synth/billentyűzetet úgy állította be, hogy válaszoljon az 1. csatornára, vagy változtassa meg a csatornát az Arduino kódban, és nézze meg, működik -e!

Nagyon kíváncsi vagyok, hogy látom és hallom, mit csinálsz vele. Ha változtatásokat, frissítéseket, változtatásokat hajt végre (például a Fényérzékelő és a Hőmérséklet értékeknél. Kívül jobban vagy rosszabbul működik, mint belül) bármit.

Arra is kíváncsi vagyok, hogy minden szintetizátorral jól működik -e. A Volca basszusomon tökéletesen működik, de a Neutronomon az LFO elakad, amint elküldöm a Midi Note -ot. Rendben van, ha újraindítom, de furcsa. Nem vagyok biztos abban, hogy van -e valami a Midi könyvtárban vagy a kódomban, lehet, hogy hamarosan megpróbálom megcsinálni könyvtár nélkül, és meglátom, javul -e.

Köszönöm, hogy olvastál és figyeltél, és sok sikert !!

Ajánlott: