Inhaltsverzeichnis:

Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator) - Gunook
Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator) - Gunook

Video: Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator) - Gunook

Video: Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator) - Gunook
Video: Weather Generated Music On A Budget (Volca Bass + ESP8266) 2024, November
Anonim
Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator)
Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator)
Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator)
Wetterbasierter Musikgenerator (ESP8266 basierter Midi-Generator)

Hallo, heute erkläre ich dir, wie du deinen eigenen kleinen wetterbasierten Musikgenerator erstellen kannst.

Es basiert auf einem ESP8266, das einem Arduino ähnelt und auf Temperatur, Regen und Lichtintensität reagiert.

Erwarte nicht, dass es ganze Songs oder Akkordfolgen macht. Es ist eher wie generative Musik, die Leute manchmal mit Modularsynthesizern machen. Aber es ist dann etwas weniger zufällig, es bleibt zum Beispiel bei bestimmten Skalen.

Lieferungen

ESP8266 (ich verwende die Feather Huzzah ESP8266 von Adafruit)

BME280 Temperatur-, Feuchtigkeits- und Luftdrucksensor (die I2C-Version)

Arduino Regensensor

25K LDR (lichtabhängiger Widerstand)

Einige Widerstände (zwei 47, ein 100, ein 220 und ein 1k Ohm)

Midi-Buchse (5 Pin Din) geeignet für Leiterplattenmontage

Überbrückungsdrähte

Steckbrett oder eine Art Prototyping-Board

Computer, ich werde einen mit Windows 8.1 verwenden, aber soweit ich weiß, sollte es auf jedem Betriebssystem funktionieren.

Optional: 1250 mAh LiPo Akku mit JST Anschluss von Adafruit (nur kompatibel mit einigen ESP’s)

Schritt 1: Schritt 1: Software

Zunächst benötigen Sie die Arduino-IDE.

Dann benötigen Sie den SiLabs CP2104 Treiber und das ESP8266 Board Package.

Dadurch kann Ihr Computer den ESP über den eingebauten UART programmieren und die Arduino IDE den ESP programmieren.

Alle Informationen zu IDE, Treiber und Board-Paket finden Sie auf dieser Seite auf der Adafruit-Website.

Sie benötigen auch die Arduino Midi Library, um Midi-Daten senden zu können. Es geht auch ohne, aber das macht alles viel einfacher.

Zur Kommunikation mit dem BME280 habe ich diese BME280-I2C-ESP32 Bibliothek verwendet. (Dies ist für die I2C-Version des BME280)

Und diese Bibliothek erfordert wiederum den Adafruit Unified Sensor Driver. Dies ist nicht das erste Mal, dass ich diese Bibliothek benötige, um problemlos eine andere Bibliothek zu verwenden, daher habe ich diese Bibliothek immer irgendwo als Lesezeichen gespeichert.

Schritt 2: Schritt 2: Hardware

Schritt 2: Hardware
Schritt 2: Hardware
Schritt 2: Hardware
Schritt 2: Hardware
Schritt 2: Hardware
Schritt 2: Hardware

Okay, also kommen wir endlich zu den guten Sachen, der Hardware.

Wie bereits erwähnt, habe ich dieses Adafruit ESP verwendet, aber es sollte mit einer NodeMCU gut funktionieren. Ich empfehle die V2-Version, da sie meiner Meinung nach viel besser auf ein Steckbrett passt und Sie sie sehr günstig bei eBay oder AliExpress bekommen können. Ich mag die Tatsache, dass der Adafruit ESP eine schnellere CPU hat, mit einer JST-Buchse für einen LiPo und einer Ladeschaltung ausgestattet ist. Es ist auch etwas einfacher herauszufinden, welchen Pin Sie verwenden. Ich glaube, auf einer NodeMCU ist der Pin mit der Bezeichnung D1 zum Beispiel tatsächlich GPIO5, sodass Sie immer ein Pinout-Diagramm zur Hand haben müssen. Überhaupt kein großes Problem, aber nur praktisch für Neulinge, dass sie die Adafruit so klar beschriftet haben.

Als erstes schließen wir das BME280 an, da es bei diesem Modell einige Variationen gibt. Wie Sie auf den Bildern sehen können, hat meine ein großes Loch, aber es gibt auch einige mit 2 Löchern. Sie können sehen, dass es 4 Ein- und Ausgänge hat, 1 für Strom, einen für Masse und einen SCL und SDA. Das heißt, es kommuniziert über I2C. Ich glaube, andere Modelle kommunizieren über SPI. Und in einigen können Sie entweder SPI oder I2C wählen. SPI erfordert möglicherweise eine andere Bibliothek oder zumindest einen anderen Code und eine andere Verdrahtung. Ich glaube auch, dass das S in SPI für Serial steht und ich kann nicht sagen, ob dies den Midi-Teil dieses Projekts stört, da dies auch über eine serielle Verbindung funktioniert.

Das Anschließen dieses BME ist ziemlich einfach. Auf dem ESP8266 sehen Sie, dass Pin 4 und 5 mit SDA bzw. SCL bezeichnet sind. Verbinden Sie diese Pins einfach direkt mit dem SDA- und SCL-Pin des BME. Verbinden Sie natürlich auch VIN mit der positiven Schiene des Breadboards und GND mit der negativen Schiene. Diese sind wiederum mit dem 3V3- und GND-Pin des ESP verbunden.

Als nächstes werden wir den LDR anschließen. Im Fritzing-Beispiel sehen Sie, wie die 3,3 Volt durch einen Widerstand gehen, dann werden sie auf den LDR und einen anderen Widerstand aufgeteilt. Dann wird es nach dem LDR wieder auf einen Widerstand und auf den ADC aufgeteilt.

Dies dient dazu, das ESP vor zu hohen Spannungen zu schützen und sicherzustellen, dass es lesbare Werte erhält. Der ADC kann 0-1 Volt verarbeiten, aber der 3V3 liefert 3,3 Volt. Es wird wahrscheinlich nichts in die Luft jagen, wenn Sie über 1 Volt gehen, aber es wird nicht gut funktionieren.

Also verwenden wir zuerst einen Spannungsteiler mit 220- und 100-Ohm-Widerständen, um die Spannung von 3,3 auf 1,031 Volt zu senken. Dann bilden der 25k-Ohm-LDR und der 1k-Ohm-Widerstand einen weiteren Spannungsteiler, der die Spannung je nach Lichtmenge, die der LDR erhält, zwischen 1,031 und 0 Volt senkt.

Dann haben wir den Regensensor. Ein Teil sagt FC-37, der andere Teil sagt HW-103. Ich habe gerade den ersten gekauft, den ich bei Ebay gefunden habe, der besagt, dass er 3,3 und 5 Volt verarbeiten kann. (Ich denke, das können sie alle).

Das ist ziemlich einfach, wir könnten einen analogen Ausgang verwenden, aber wir können einfach den winzigen Trimpot drehen, um den Sensor so empfindlich zu machen, wie wir wollen (und wir haben bereits unseren einen analogen Pin am ESP verwendet). Wie bei den anderen Sensoren müssen wir Strom von der positiven Schiene liefern und mit der Masseschiene verbinden. Manchmal variiert jedoch die Reihenfolge der Pins. Bei mir ist es VCC, Ground, Digital, Analog, aber auf dem Fritzing-Bild ist es anders. Aber wenn Sie nur aufpassen, sollte dies leicht zu bewerkstelligen sein.

Und schließlich der Midi-Jack. Auf meinem Steckbrett kann es nicht auf der Kante des Steckbretts sitzen, da die Stifte nicht alle ausgerichtet sind. Wenn dich das stört, würde ich versuchen, ein Steckbrett in einem physischen Geschäft zu bekommen. Oder sieh dir die Bilder sehr gut an.

Wie Sie dem Schaltplan entnehmen können, gehen sowohl die positive Spannung als auch das serielle Signal durch einen 47-Ohm-Widerstand.

Wenn Sie dieses Projekt beispielsweise mit einem Arduino Uno durchführen, stellen Sie sicher, dass Sie 220-Ohm-Widerstände verwenden !! Diese ESPs arbeiten mit einer 3,3-V-Logik, aber die meisten Arduinos verwenden 5,0 V, sodass Sie den Strom, der durch das Midi-Kabel fließt, stärker begrenzen müssen.

Verbinden Sie schließlich den mittleren Stift mit der Erdungsschiene. Die anderen 2 Pins vom 5 Pin Din werden nicht verwendet.

Schritt 3: Schritt 3: Code

Und endlich haben wir den Code!

In dieser Zip-Datei habe ich 2 Skizzen eingefügt. 'LightRainTemp' testet einfach alle Sensoren und sendet ihre Werte zurück. (Achten Sie darauf, das Terminalfenster zu öffnen!)

Und natürlich haben wir den LRTGenerativeMidi (LRT steht für Light, Rain, Temperature) Sketch.

Im Inneren finden Sie eine Reihe von Erklärungen in Kommentaren zu dem, was vor sich geht. Ich werde nicht darauf eingehen, wie ich das Ganze geschrieben habe, das würde Stunden dauern. Wenn Sie wissen möchten, wo Sie mit so etwas anfangen können, habe ich einige andere Projekte im Sinn. Ein kleiner Random-Riff-Generator mit ein paar Knöpfen und ein Sequencer mit einer Menge Features, die ich bei anderen Modellen nicht finden kann.

Aber diese muss ich erst fertig entwerfen und codieren. Lassen Sie es mich wissen, wenn Sie über andere Projekte auf dem Laufenden gehalten werden möchten. Ich habe mich nicht entschieden, ob ich mehr instructables machen oder eine Videoserie machen werde.

Schritt 4: Schritt 4: Schließen Sie es an und testen Sie es

Und jetzt ist es Zeit, es zu testen!

Schließen Sie einfach ein Midi-Kabel an, stellen Sie sicher, dass Ihr Synth/Keyboard auf Kanal 1 reagiert oder ändern Sie den Kanal im Arduino-Code und sehen Sie, ob es funktioniert!

Ich bin wirklich neugierig zu sehen und zu hören, was Sie damit machen. Wenn Sie Änderungen, Upgrades, Optimierungen vornehmen (wie zum Beispiel an den Lichtsensor- und Temperaturwerten. Draußen kann es besser oder schlechter funktionieren als drinnen) alles.

Ich bin auch gespannt, ob es mit allen Synthesizern gut funktioniert. Auf meinem Volca Bass funktioniert es einwandfrei, aber auf meinem Neutron bleibt der LFO hängen, sobald ich eine Midi Note sende. Es ist in Ordnung, wenn ich es neu starte, aber es ist seltsam. Ich bin mir nicht sicher, ob etwas in der Midi-Bibliothek oder in meinem Code ist, ich werde es vielleicht bald ohne eine Bibliothek versuchen und sehen, ob es besser wird.

Danke fürs Lesen und Anschauen und viel Glück!!

Empfohlen: