Inhoudsopgave:

Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator): 4 stappen (met afbeeldingen)
Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator): 4 stappen (met afbeeldingen)

Video: Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator): 4 stappen (met afbeeldingen)

Video: Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator): 4 stappen (met afbeeldingen)
Video: Weather Generated Music On A Budget (Volca Bass + ESP8266) 2024, November
Anonim
Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator)
Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator)
Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator)
Weergebaseerde muziekgenerator (ESP8266 gebaseerde midi-generator)

Hallo, vandaag zal ik uitleggen hoe je je eigen kleine op het weer gebaseerde muziekgenerator kunt maken.

Het is gebaseerd op een ESP8266, een soort Arduino, en reageert op temperatuur, regen en lichtintensiteit.

Verwacht niet dat het hele nummers of akkoordprogressies maakt. Het lijkt meer op generatieve muziek die mensen soms maken met Modular Synthesizers. Maar het is iets minder willekeurig dan dat, het houdt zich bijvoorbeeld aan bepaalde schalen.

Benodigdheden

ESP8266 (ik gebruik de Feather Huzzah ESP8266 van Adafruit)

BME280 Temperatuur-, vochtigheids- en luchtdruksensor (de I2C-versie)

Arduino Regensensor

25K LDR (lichtafhankelijke weerstand)

Enkele weerstanden (twee 47, één 100, één 220 en één 1k Ohm)

Female Midi Connector (5 Pin Din) geschikt voor PCB montage

Doorverbindingsdraden

Breadboard of een soort Prototyping board

Computer, ik gebruik er een met Windows 8.1, maar het zou moeten werken op elk besturingssysteem voor zover ik weet.

Optioneel: 1250 mAh LiPo-batterij met JST-connector van Adafruit (alleen compatibel met sommige ESP's)

Stap 1: Stap 1: Software

Allereerst heb je de Arduino IDE nodig.

Dan heb je de SiLabs CP2104 driver en het ESP8266 Board Package nodig.

Hierdoor kan uw computer de ESP programmeren via de ingebouwde UART en kan de Arduino IDE de ESP programmeren.

Alle informatie over het IDE, Driver en Board Package vind je op deze pagina op de website van Adafruit.

Je hebt ook de Arduino Midi-bibliotheek nodig om Midi-gegevens te kunnen verzenden. Het kan ook zonder, maar dit maakt alles een stuk makkelijker.

Om met de BME280 te communiceren heb ik deze BME280-I2C-ESP32 bibliotheek gebruikt. (Dit is voor de I2C-versie van de BME280)

En die bibliotheek vereist op zijn beurt Adafruit Unified Sensor Driver. Dit is niet de eerste keer dat ik deze bibliotheek nodig heb om zonder problemen een andere bibliotheek te gebruiken, dus ik heb deze bibliotheek altijd ergens als bladwijzer opgeslagen.

Stap 2: Stap 2: Hardware

Stap 2: Hardware
Stap 2: Hardware
Stap 2: Hardware
Stap 2: Hardware
Stap 2: Hardware
Stap 2: Hardware

Oké, dus we komen eindelijk bij de goede dingen, de hardware.

Zoals gezegd heb ik deze Adafruit ESP gebruikt, maar het zou prima moeten werken met een NodeMCU. Ik raad de V2-versie aan omdat ik denk dat deze veel beter op een breadboard past en je ze heel goedkoop kunt krijgen van eBay of AliExpress. Ik vind het leuk dat de Adafruit ESP een snellere CPU heeft, wordt geleverd met een vrouwelijke JST-connector voor een LiPo en een laadcircuit. Het is ook een beetje makkelijker om erachter te komen welke pin je gebruikt. Ik geloof dat op een NodeMCU de pin Labeled D1 bijvoorbeeld GPIO5 is, dus je hebt altijd een pinout-kaart bij de hand. Helemaal geen groot probleem, maar gewoon handig voor nieuwelingen die ze de Adafruit-variant zo duidelijk noemden.

Laten we eerst de BME280 aansluiten, want er zijn enkele variaties in dit model. Zoals je op de foto's kunt zien, heeft de mijne één groot gat, maar er zijn er ook met 2 gaten. Je kunt zien dat het 4 in- en uitgangen heeft, 1 voor voeding, één voor aarde en een SCL en SDA. Dit betekent dat hij communiceert via I2C. Ik geloof dat andere modellen via SPI communiceren. En in sommige kun je SPI of I2C kiezen. SPI vereist mogelijk een andere bibliotheek of op zijn minst een andere code en andere bedrading. Ik geloof ook dat de S in SPI staat voor Serieel en ik kan niet zeggen of dit interfereert met het Midi-gedeelte van dit project, aangezien dat ook werkt via een seriële verbinding.

Het aansluiten van deze BME is vrij eenvoudig. Op de ESP8266 zie je pin 4 en 5 respectievelijk SDA en SCL. Sluit die pinnen gewoon rechtstreeks aan op de SDA- en SCL-pin op de BME. Sluit natuurlijk ook VIN aan op de positieve rail van het breadboard en GND op de negatieve rail. Die zijn op hun beurt weer verbonden met de 3V3- en GND-pin van de ESP.

Vervolgens zullen we de LDR aansluiten. In het Fritzing-voorbeeld zie je de 3,3 volt door een weerstand gaan, dan wordt deze gesplitst naar de LDR en een andere weerstand. Daarna wordt het na de LDR weer gesplitst naar een weerstand en naar de ADC.

Dit is om de ESP te beschermen tegen te hoge spanningen en om ervoor te zorgen dat deze leesbare waarden krijgt. De ADC kan 0-1 Volt aan, maar de 3V3 levert 3,3 volt. Het zal waarschijnlijk niets opblazen als je boven de 1 volt komt, maar het zal niet goed werken.

Dus eerst gebruiken we een spanningsdeler met 220 en 100 ohm weerstanden om de spanning te verlagen van 3,3 naar 1,031 volt. Dan vormen de 25k ohm LDR en de 1k ohm weerstand een andere spanningsdeler die de spanning ergens tussen 1,031 en 0 volt verlaagt, afhankelijk van de hoeveelheid licht die de LDR krijgt.

Dan hebben we de Regensensor. Het ene deel zegt FC-37, het andere deel zegt HW-103. Ik heb zojuist de eerste gekocht die ik op Ebay vond en die zei dat hij 3,3 én 5 volt aankan. (Ik denk dat ze dat allemaal kunnen).

Dit is vrij eenvoudig, we zouden een analoge uitgang kunnen gebruiken, maar we kunnen gewoon de kleine Trimpot draaien om de sensor zo gevoelig te maken als we willen (en we hebben al onze ene analoge pin op de ESP gebruikt). Net als bij de andere sensoren moeten we stroom leveren vanaf de positieve rail en deze verbinden met de grondrail. Soms varieert de volgorde van de pinnen wel. Op de mijne is het VCC, Ground, Digital, Analog, maar op de Fritzing-foto is het anders. Maar als je goed oplet, moet dit gemakkelijk te verhelpen zijn.

En tot slot de Midi-Jack. Op mijn Breadboard kan het niet op de rand van het breadboard zitten, omdat de pinnen niet allemaal op één lijn liggen. Als je hier last van hebt, zou ik proberen een breadboard in een fysieke winkel te krijgen. Of bekijk de foto's heel goed.

Zoals je in het schema kunt zien, gaan de positieve spanning en het seriële signaal beide door een weerstand van 47 ohm.

Als je dit project bijvoorbeeld met een Arduino Uno doet, zorg er dan voor dat je 220 ohm weerstanden gebruikt!! Deze ESP's werken op 3,3 V-logica, maar de meeste Arduino's gebruiken 5,0 V, dus je moet de stroom die door de Midi-kabel gaat meer beperken.

En sluit tenslotte de middelste pin aan op de grondrail. De andere 2 pinnen van de 5 Pin Din worden niet gebruikt.

Stap 3: Stap 3: Coderen

En eindelijk hebben we de code!

In dit Zip-bestand heb ik 2 schetsen geplaatst. 'LightRainTemp' test gewoon alle sensoren en stuurt hun waarden terug. (Zorg ervoor dat u het Terminal-venster opent!)

En natuurlijk hebben we de LRTGenerativeMidi (LRT staat voor Light, Rain, Temperature) sketch.

Binnenin vind je een heleboel uitleg in opmerkingen over wat er aan de hand is. Ik ga niet in op hoe ik het allemaal heb geschreven, dat zou uren duren. Als je wilt weten waar je aan de slag kunt met zoiets als dit, heb ik een aantal andere projecten in gedachten. Een kleine Random Riff-generator met een paar knoppen en een Sequencer met een heleboel functies die ik op andere modellen niet kan vinden.

Maar die zal ik eerst moeten afmaken en coderen. Laat het me weten als je op de hoogte wilt worden gehouden van andere projecten. Ik heb nog niet besloten of ik meer instructables ga maken of een videoserie ga maken.

Stap 4: Stap 4: Sluit het aan en test het

En nu is het tijd om het te testen!

Sluit gewoon een Midi-kabel aan, zorg ervoor dat je je Synth/Keyboard instelt om te reageren op kanaal 1 of verander het kanaal in de Arduino-code en kijk of het werkt!

Ik ben heel benieuwd om te zien en te horen wat je ermee doet. Als je veranderingen, upgrades, tweaks aanbrengt (zoals aan de lichtsensor en temperatuurwaarden. Buiten werkt het misschien beter of slechter dan binnen) alles.

Ik ben ook benieuwd of het goed werkt met alle Synthesizers. Op mijn Volca Bass werkt het perfect, maar op mijn Neutron loopt de LFO vast zodra ik een Midi Note stuur. Het is prima als ik het opnieuw opstart, maar het is vreemd. Ik weet niet zeker of er iets in de Midi-bibliotheek of in mijn code staat, ik zou het binnenkort kunnen proberen zonder een bibliotheek en kijken of het beter wordt.

Bedankt voor het lezen en kijken en veel succes!!

Aanbevolen: