Inhaltsverzeichnis:

MIDI-Sonar "Theremin": 10 Schritte (mit Bildern)
MIDI-Sonar "Theremin": 10 Schritte (mit Bildern)

Video: MIDI-Sonar "Theremin": 10 Schritte (mit Bildern)

Video: MIDI-Sonar
Video: Open Theremin with MIDI Musical Instrument Digital Interface 2024, Juli
Anonim
MIDI-Sonar
MIDI-Sonar

Dies ist ein Musikinstrument, das zwei Sonar-Abstandssensoren verwendet, um die Tonhöhe und die Qualität der Noten zu kontrollieren. Es ist natürlich nicht wirklich ein Theremin, aber "Theremin" ist der Oberbegriff für Instrumente geworden, die mit Handbewegungen gespielt werden.

Es hat einen eingebauten MIDI-Synthesizer, Verstärker und Lautsprecher. Die Musiknoten werden von einem MIDI-Chip - dem VS1053 - erzeugt, der 127 Stimmen (also angeblich unterschiedliche Instrumente) hat. Es hat einen hohen Grad an Polyphonie (bis zu 64), so dass es einzelne Noten oder Akkorde spielen kann.

Ihre rechte Hand steuert die gespielte Note. Im Modus "diskret" wird der rechte Platz in "Bins" unterteilt. Wenn Ihre Hand einen Behälter betritt, beginnt die Notiz für diesen Behälter. Wenn Sie den Mülleimer verlassen, kann die Note aufhören (z. B. eine Orgel) oder auf natürliche Weise verklingen (z. B. ein Klavier).

Im "continuous" Modus bestimmt der Leerraum rechts eine stufenlos variable Tonhöhe - wie beim original Theremin. Die Note beginnt, wenn Ihre Hand den Raum betritt und stoppt, wenn Sie den Raum verlassen.

Ihre linke Hand steuert die Qualität der gespielten Note. Es kann Lautstärke, Tremolo, Vibrato, Pitch-Bend, Reverb usw.

Ein kleiner LCD-Bildschirm hat ein Menü, mit dem Sie das aktuelle Instrument, die Funktion der linken Hand, die Skala (oder "Taste") der rechten Hand, Vibrato, Tremolo usw. auswählen können. Sie können verschiedene "Setups" speichern und laden “und während einer Aufführung schnell zwischen ihnen wechseln.

Das gesamte MIDI-Instrument "Theremin" arbeitet autark mit eigenem Lautsprecher und Akku.

Wenn Sie meinen Build kopieren möchten, benötigen Sie einen Arduino Nano (1,50 £), ein VS1053-Modul (4,50 £), ein 1,44 ST7735 LCD-Display (3,50 £), zwei HC-SR04-Module (je 1 £) und ein paar Widerstände. Du brauchst auch ein paar Aktivlautsprecher und vielleicht eine Lithiumzelle und ein Netzteil, aber die Details hängen davon ab, wie du es bauen willst. Ich habe all diese Extras von Autoverkäufern und Wohltätigkeitsläden 'benötige die üblichen elektronischen Werkstattutensilien.

Schritt 1: Steuerung des VS1053

Steuerung des VS1053
Steuerung des VS1053
Steuerung des VS1053
Steuerung des VS1053

Ich habe das im Bild gezeigte VS1053-Modul gewählt. (Beachten Sie die beiden SOT223-Regler, die beiden Klinkenbuchsen und die Position des Steckers.) Suchen Sie bei eBay, Alibaba oder Ihrem Lieblingslieferanten nach einem VS1053-Modul, das so aussieht. Sie sind bei Aliexpress hier und hier erhältlich.

Ich habe es vor ein paar Jahren gekauft und es scheint nicht mehr bei eBay erhältlich zu sein, nur bei Alibaba. Eine rote PCB-Version ist jetzt bei eBay verfügbar. Es scheint funktional identisch zu sein, aber die Pinbelegung ist unterschiedlich, sodass Sie meine Schaltpläne und Layouts anpassen müssen. Ich habe es nicht getestet. In der Diskussion (unten) finden Sie Anweisungen, wie Sie der roten Platine einen Widerstand hinzufügen, um "Live" MIDI zu aktivieren. Oder Sie können während des Setups zusätzliche Befehle senden, um es zu aktivieren.

Der VS1053 ist ein feiner Chip, aber ziemlich kompliziert. Ich verwende nur den MIDI-Teil davon. Es ist möglich, den VS1053 über eine serielle Schnittstelle zu steuern, aber ich verwende den SPI-Bus, da es mit einem Arduino Nano bequemer ist. Jedes Byte, das Sie über den SPI-Bus senden, wird als MIDI-Befehl behandelt.

Im Internet finden Sie Listen mit MIDI-Befehlen. Der VS1053 reagiert auf einige, aber nicht auf alle. Das Programm Miditheremin0.exe zeigt diejenigen an, von denen ich weiß, dass sie funktionieren.

Sie können das VS1053-Datenblatt aus dem Internet herunterladen. Es ist ein riesiges Dokument und es ist schwer. Abschnitt "8.9 Unterstützte MIDI-Formate" ist fast alles, was über MIDI gesagt wird. Abschnitt "10.10 Real-Time MIDI" spricht über die Verwendung von GPIO0 und GPIO1 zum Aktivieren von MIDI, aber das Board, das ich habe, erforderte keine spezielle Aktivierung. Sie können auch eine Liste von MIDI-Meldungen herunterladen (die nicht alle vom VS1053) unterstützt werden.

Verdrahten Sie das VS1053-Modul wie gezeigt mit einem Arduino Nano und laden Sie die INO-Datei auf den Arduino hoch. Ich habe ein lötfreies Steckbrett verwendet. Ich habe zu diesem Zeitpunkt kein Foto davon, aber Sie können das Steckbrett mit anderen Komponenten in einem Schritt unten sehen.

Der INO-Sketch empfängt ein Byte vom PC über die serielle Leitung und sendet das Byte an den VS1053. Es ist ein sehr einfaches Programm, mit dem Sie den VS1053 testen können. Verbinden Sie die Ausgangsbuchsenbuchse mit einem Kopfhörer oder einem Computerlautsprecher.

Das Programm Windows Miditheremin0.exe (Download Step1.zip von github) sendet Befehle an den VS1053. Klicken Sie auf die Schaltfläche "90 note vel", um eine Note zu spielen. Oder Sie könnten Ihr eigenes Windows-Programm schreiben. Oder verwenden Sie eines der vielen im Internet verfügbaren Terminalprogramme.

Das VS1053-Modul hat die folgenden Pins:

  • der SPI-Bus hat die üblichen MISO, MOSI und SCLK
  • wenn XRST niedrig ist, wird der Chip zurückgesetzt
  • XDCS macht im SPI-Modus nichts, also verbinde es mit XCS
  • XCS ist Chip-Select
  • DREQ teilt Ihnen mit, wann der Chip für einen neuen Befehl bereit ist.

XCS sollte niedrig eingestellt werden, während Sie ein Byte senden; dann hoch. Auf diese Weise können Sie sicher sein, dass Sie das erste Bit jedes Bytes synchronisiert haben. Das Lesen von DREQ sagt Ihnen, dass der Chip bereit ist, einen neuen Befehl zu empfangen.

Nachdem das Arduino ein Byte gesendet hat, muss es ein Dummy-Byte senden, um die Uhr umzuschalten und dem VS1053 zu ermöglichen, als Antwort ein Byte zurück zu senden. Die Funktion SPItransfer() zeigt Ihnen wie.

Das bei eBay erhältliche rote Modul enthält einen SD-Kartensteckplatz, sodass es ein paar zusätzliche Pins hat. Ignoriere sie.

Wenn Sie jetzt sicher sind, dass Sie das VS1053 zum Laufen bringen können, werden wir es zu einem Musikinstrument machen.

Schritt 2: Verwenden der Sonare

Verwenden der Sonare
Verwenden der Sonare
Verwenden der Sonare
Verwenden der Sonare

Verdrahten Sie die HC-SR04-Module wie gezeigt mit dem Arduino Nano und laden Sie die INO-Datei auf den Arduino hoch.

Beachten Sie im Schaltplan, dass DC3 - der Entkopplungskondensator für die HC-SR04-Module - in der Nähe der HC-SR04-Module angeschlossen werden sollte. Sie nehmen beim Senden ziemlich viel Strom auf, den DC3 liefert.

In dieser Phase des Projekts sendet der Windows-PC noch Befehle an den VS1053, aber der VS1053 wird auch von den HC-SR04-Sonarsensoren gesteuert (Download Step2.zip von github).

Die neuen Befehle beginnen alle mit 0xFF und werden von der Arduino-Skizze interpretiert (und nicht direkt an den VS1053) gesendet. Nicht "FF-Befehl" Bytes werden an den VS1053 gesendet.

Es gibt Befehle zum Wechseln des Instruments, Ändern der Skala, Hinzufügen von Vibrato und Tremolo usw. Das Programm kann im "diskreten" Modus ausgeführt werden, wo separate Noten vorhanden sind (wie ein Klavier) oder im "kontinuierlichen" Modus, wo eine einzelne Note ist auf und ab gebeugt (wie ein Theremin).

Es macht ziemlich gut alles, was das endgültige Instrument tun wird, aber es wird von einem PC gesteuert.

Der rechte Sonarsensor des HC-SR04 wählt die Tonhöhe der gespielten Note aus. Im Modus "diskret" wird der rechte Platz in "Bins" unterteilt. Wenn Ihre Hand einen Behälter betritt, beginnt die Notiz für diesen Behälter. Wenn Sie den Mülleimer verlassen, kann die Note aufhören (z. B. eine Orgel) oder auf natürliche Weise verklingen (z. B. ein Klavier). Wenn Ihre Hand in einen Behälter eindringt, dehnt sich der Behälter leicht aus, damit Sie am Rand nicht verwackeln.

Die Funktion GetSonar() gibt die Zeit bis zum ersten Echo zurück. Es ignoriert sehr schnelle Echos (Dauer < 10), die der HC-SR04 manchmal meldet. Wenn von maxDuration kein Echo empfangen wurde, gibt es maxDuration zurück. Die Dauer wird nicht in bestimmten Einheiten gemessen, sondern ist nur eine Zahl.

Im diskreten Modus wird die Dauer zuerst gefiltert, um gelegentliche Aussetzer zu entfernen (wenn kein Echo empfangen wird). Es wird angenommen, dass die Hand erst vorhanden ist, nachdem 10 Samples von maxDuration empfangen wurden. Anschließend wird die Dauer mit einem Medianfilter gefiltert. Medianfilter sind gut geeignet, um "impulsives" Rauschen (d. h. gelegentliche Spitzen) zu entfernen. Die gefilterte Dauer wird verwendet, um einen Bin auszuwählen.

Im kontinuierlichen Modus wird die Dauer erneut gefiltert, um gelegentliche Aussetzer zu entfernen. Anschließend wird es mit einem Exponentialfilter geglättet. Die gefilterte Dauer wird verwendet, um die Frequenz der Note mit "Pitch Bend" einzustellen.

Schritt 3: Hinzufügen eines Displays

Hinzufügen eines Displays
Hinzufügen eines Displays
Hinzufügen eines Displays
Hinzufügen eines Displays
Hinzufügen eines Displays
Hinzufügen eines Displays

Das Display ist ein 1,44 -Farb-TFT-LCD-Bildschirm mit einem ST7735-Controller, 128x128 Pixel. Es gibt viele Bildschirme bei eBay, zum Beispiel möchten Sie Ihr Instrument vielleicht lieber mit einem größeren Touchscreen entwickeln. Ich habe das ST7735 nicht verwendet Controller und wollte es ausprobieren.

Ich habe meine von diesem Lieferanten. Das gleiche Modul wird bei eBay weithin verkauft - besorgen Sie sich einfach eines, das genauso aussieht wie das Foto.

Das LCD hat folgende Pins:

  • GND Masse
  • VCC 3.3V
  • SCL SPI-Bus SCLK
  • SDA SPI-Bus MOSI von Arduino
  • RES zurücksetzen
  • DC-Daten/Befehl
  • CS-Chipauswahl
  • BL-Hintergrundbeleuchtung

Das Modul läuft mit 3,3 V, daher sollten Sie es nicht direkt an Ihr 5 V-Arduino anschließen. Ich habe 1k-Widerstände verwendet, um die Spannung zu senken. Das ist keine gute Praxis (im Allgemeinen sollte man einen Potenzialteiler oder einen Spannungsabfaller-Chip verwenden), funktioniert aber in dieser Schaltung perfekt. Ich war faul.

Das Display wird mit den 3,3 V des Arduino versorgt. Der Arduino-Regler scheint glücklich genug zu sein.

Adafruit veröffentlicht sehr freundlich eine ST7735-Bibliothek und mehrere andere Bibliotheken sind in Github und anderswo verfügbar. Ich habe ein paar ausprobiert und keine hat mir gefallen. Einige funktionierten einfach nicht und alle waren riesig. Sie schreiben eine Arduino-Skizze, die eine Linie und etwas Text zeichnet, und Sie finden Ihr Gedächtnis, wenn es zu 75% voll ist. Also habe ich meine eigene Bibliothek geschrieben.

Die SimpleST7735-Bibliothek kann heruntergeladen werden (Download Step3.zip von github).

Es verfügt über einen Standardsatz von Zeichenbefehlen, der all diesen Bibliotheken sehr ähnlich ist.

Einige der "schnellen" Bibliotheken, die Sie herunterladen können, verwenden spezielle Zeitschleifen und sind verärgert, wenn andere, vielleicht langsamere Geräte am selben Bus verwendet werden. SimpleST7735 ist in C und nicht in Assembler geschrieben, also nicht ganz so schnell, wie es sein könnte, aber viel portabler und teilt sich den SPI-Bus höflich mit anderen Geräten. Ein Windows-Programm kann heruntergeladen werden, mit dem Sie Ihre eigenen Schriftarten und Symbole erstellen können.

Sie können das ST7735-Datenblatt aus dem Internet herunterladen. Du redest mit ihm durch

  • CS niedrig einstellen
  • DC niedrig einstellen
  • ein Befehlsbyte senden
  • DC hoch einstellen
  • Null oder mehr Datenbytes senden
  • CS hoch einstellen

Sie können sehen, wie ich es in der Funktion spiSend_TFT_CW() in der Bibliothek mache. Die Datenbytes können eine ganze Pixelzeile oder eine Einstellung für ein Steuerregister sein.

Die Funktion ST7735Begin() in der Bibliothek zeigt Ihnen den von mir gewählten Initialisierungsbefehlssatz. Möglicherweise möchten Sie die Befehle ändern, wenn Sie ein anderes ST7735-Display auswählen (z. B. mit mehr Pixeln) oder eine andere Ausrichtung wünschen. Ich hoffe, mein Code ist für Sie leicht zu erkennen, wie Sie ihn bei Bedarf ändern können.

Das Schema zeigt einen Steuerknopf "SW1" und ein Fußpedal SW2". Der Steuerknopf wählt verschiedene "Setups" (siehe nächster Schritt) oder wählt den Menümodus. Das Fußpedal ist optional und wählt nur verschiedene Setups - habe ich nicht ein Fußpedal selbst. Setups sind während einer Aufführung nützlich, wenn Sie schnell die Tonart oder das Instrument wechseln möchten.

Schritt 4: Das Menüsystem

Das Menüsystem
Das Menüsystem
Das Menüsystem
Das Menüsystem

Diese Miditheremin3.ino Arduino-Skizze fügt dem MIDI-Theremin ein Menüsystem hinzu und steuert das endgültige komplette Instrument.

Das MIDI Theremin läuft normalerweise im "Play" Modus. Ihre rechte Hand wählt die Note aus und Ihre linke Hand steuert die Qualität der Note. Das LCD zeigt eine Klaviertastatur mit hervorgehobener aktueller Note an.

Wenn Sie die Steuertaste eine Sekunde lang gedrückt halten, geht das Programm in den „Menü“-Modus. Wenn Sie im Menümodus die Steuertaste eine Sekunde lang gedrückt halten, kehrt das Programm in den "Play"-Modus zurück.

Das Menü hat eine Baumstruktur mit Hauptpunkten und Unterpunkten. Der aktuelle Menüpunkt ist markiert. Über das linke Sonar bewegen Sie die Auswahl nach oben/unten. Die Untermenüs zu einem Hauptpunkt werden nur erweitert, wenn der Hauptpunkt ausgewählt ist.

Nachdem Sie ein Untermenü ausgewählt haben, wird beim Klicken auf die Schaltfläche der Wert dieses Elements hervorgehoben. Die linke Hand erhöht oder verringert nun den Wert. Klicken Sie erneut auf die Schaltfläche, um zur Auswahl der Untermenüs zurückzukehren.

Im diskreten Modus ist der Menübaum

  • Instrument

    • 0: Flügel
    • Hände tauschen: normal
  • Rechte Hand

    Modus: diskret

  • Linke Hand

    • Modus: Vibrato
    • Maximale Tiefe: 10
  • Skala
    • Tonleiter: Dur Heptatonic
    • Oktaven: 2
    • Tiefste Note: 60 C
  • Akkord

    • Akkord: Dur-Dreiklang
    • Umkehrung: 0
    • Polyphonie: 1
  • Tremolo

    • Größe: 20
    • Zeitraum: 10
  • Vibrato

    • Größe: 20
    • Zeitraum: 10

Das Instrument kann "Grand Piano", "Church Organ", "Violin" usw. sein. Es gibt 127 Instrumente im VS1053, von denen viele identisch klingen und viele albern wie "Gunshot" sind. Das Untermenü Swap Hands ermöglicht es Ihnen, die Funktionen der linken und rechten Hand zu vertauschen – vielleicht bevorzugen Sie es so oder vielleicht möchten Sie, dass die Lautsprecher dem Publikum zugewandt sind.

Die rechte Hand kann "diskret" oder "kontinuierlich" sein. Siehe unten für das "kontinuierliche" Menü.

Die linke Hand kann "Volume", "Tremolo", "Vibrato", "PitchBendUp", "PitchBendDown", "Reverb", "Polyphony" oder "ChordSize" steuern.

"Volumen" ist offensichtlich. "Tremolo" ist eine schnelle Lautstärkeänderung; die linke Hand steuert die Größe der Variation; der Zeitraum wird durch einen anderen Menüpunkt eingestellt. "Vibrato" ist eine schnelle Variation der Tonhöhe; die linke Hand steuert die Größe der Variation; der Zeitraum wird durch einen anderen Menüpunkt eingestellt. "PitchBendUp" und "PitchBendDown" ändern die Tonhöhe der gespielten Note; Die linke Hand steuert die Größe der Biegung. "Reverb" ist beim VS1053 eher unscheinbar; Die linke Hand steuert die Größe des Halls. "Polyphonie" steuert, wie viele Noten gleichzeitig gespielt werden, bis zur maximalen Einstellung im Polyphonie-Menü (siehe unten). "ChordSize" bedeutet, dass die linke Hand steuert, wie viele Noten eines Akkords (siehe unten) gespielt werden.

In der Musik ist eine "Tonleiter" oder "Tonart" die Untermenge der Noten, die Sie verwenden. Wenn Sie sich beispielsweise auf die heptatonic C-Dur-Tonleiter beschränken, würden Sie nur die weißen Noten des Klaviers spielen. Wenn Sie C#-Dur-Pentatonik wählen, verwenden Sie nur die schwarzen Töne (z. B. für schottische Volksweisen).

Das Scale-Menü wählt aus, welchen Noten die rechte Hand entspricht und wie viele Oktaven die rechte Hand umfasst. Wenn Sie also 1 Oktave E-Dur wählen, wird der Raum der rechten Hand in 8 Bins unterteilt, wobei E in der tiefsten Tonhöhe und E eine Oktave darüber in der höchsten Tonhöhe liegt.

Im Scale-Menü können Sie viele ungewöhnliche Skalen "nicht-westlicher Musik" auswählen, aber es wird davon ausgegangen, dass alle Noten von der ausgeglichenen Tastatur stammen - so funktioniert MIDI, Sie können die Frequenz einer Note nicht einfach angeben. Wenn Sie also beispielsweise die arabische Vierteltonskala wollten, wären Sie in Schwierigkeiten.

Im Untermenü Oktaven können Sie auswählen, wie viele Oktaven der Tonleiter Sie möchten. Und die tiefste Note sagt, wo die Tonleiter beginnt.

Normalerweise erklingt beim Spielen einer Note nur diese Note. Im Chord-Menü können Sie mehrere Noten gleichzeitig spielen. Ein Dur-Dreiklang-Akkord bedeutet „spielen Sie die gewählte Note plus die Note vier Halbtöne höher plus die Note sieben Halbtöne höher“.

Das Inversion-Untermenü bietet Ihnen Akkord-Inversionen. Das bedeutet, dass einige der Noten des Akkords eine Oktave tiefer verschoben werden. Die erste Umkehrung verschiebt alle "zusätzlichen" Noten um eine Oktave nach unten, die zweite Umkehrung bewegt eine der zusätzlichen Noten weniger nach unten und so weiter.

Das Untermenü Polyphonie gibt an, wie viele Noten gleichzeitig gespielt werden; wenn die Polyphonie 1 ist, wird beim Beginn einer Note die vorherige gestoppt; Wenn die Polyphonie größer ist, können sich mehrere Töne überlappen - versuchen Sie es mit der Kirchenorgel.

Das Tremolo-Menü legt die Tiefe jedes Tremolos und die Dauer des Tremolo-Zyklus fest. Eine Periode von "100" bedeutet einen Zyklus pro Sekunde. Wenn die linke Hand das Tremolo steuert, ist das Untermenü Größe ausgeblendet.

Das Vibrato-Menü legt die Größe jedes Vibratos und die Dauer des Vibrato-Zyklus fest. Wenn die linke Hand das Vibrato steuert, ist das Untermenü Größe ausgeblendet.

Das Programm ermöglicht das Speichern und Laden von bis zu 5 verschiedenen "Setups". Ein Setup speichert alle Werte, die Sie im Menü einstellen können. Wenn Sie den Menümodus verlassen, wird das aktuelle Setup gespeichert. Setups werden im EEPROM gespeichert.

Im Wiedergabemodus wechselt das Klicken auf die Schaltfläche zum nächsten Setup. Wenn Sie die Taste eine Sekunde lang gedrückt halten, erscheint das Menü. Durch Drücken des Fußpedals wird ebenfalls zum nächsten Setup gewechselt; das Fußpedal wählt nie das Menü aus.

Im kontinuierlichen Modus ist der Menübaum

  • Instrument

    • 0: Flügel
    • Hände tauschen: normal
  • Rechte Hand

    Modus: kontinuierlich

  • Bereich

    • Anzahl Halbtöne: 12
    • Herznote: 60 C
  • Linke Hand

    • Modus: Tremolo
    • Maximale Tiefe: 10
  • Tremolo

    • Größe: 20
    • Zeitraum: 10
  • Vibrato

    • Größe: 20
    • Zeitraum 10

Das Range-Menü wählt aus, welchen Frequenzbereich die rechte Hand angibt: die Anzahl der abgedeckten Halbtöne und die mittlere Note.

Die linke Hand kann nur "Volume", "Tremolo" und "Vibrato" steuern.

Schritt 5: Zusammenlöten

Zusammenlöten
Zusammenlöten
Zusammenlöten
Zusammenlöten
Zusammenlöten
Zusammenlöten

Ich baute die Schaltung auf Stripboard. Ich kann den Sinn nicht sehen, eine Platine mit nur 4 Widerständen für ein Einzelstück anfertigen zu lassen, aber mir ist klar, dass einige Leute kein Stripboard mögen.

Mein Stripboard-Layout ist oben gezeigt. Die vier Boards – Arduino, VS1053, Display und Stripboard – bilden ein Sandwich. Im Layout ist der Umriss des Arduino gelb, der VS1053 blau, das Display grün und das Stripboard orange.

Die cyanfarbenen Linien sind die Kupferstreifen des Stripboards - stellen Sie sicher, dass Sie bei Bedarf Unterbrechungen einfügen. Die roten Linien sind Verbindungen auf der Komponentenseite des Stripboards oder Drähte, die an anderer Stelle führen.

Ich habe extra lange Pins für das VS1053 Board verwendet, weil es über dem Arduino steht. Pins an den äußersten Ecken des Displays und VS1053-Boards helfen, sie zu stabilisieren. Die Befestigungslöcher der Module sind plattiert, damit Sie sie verlöten können. Stellen Sie sicher, dass Ihre nicht mit Masse verbunden sind - die Befestigungslöcher meiner Module sind es nicht.

Wenn Sie ein anderes VS1053-Modul oder ein anderes Display haben, können Sie die Arduino-Pins ändern:

  • D2 bis D10 und A0 bis A5 können in beliebiger Reihenfolge verwendet werden; Aktualisieren Sie die Pin-Nummern am Anfang der INO-Skizze
  • D11, D12, D13 sind SPI zugeordnet und können nicht neu zugewiesen werden
  • D0, D1 sind für serielle E/A bestimmt
  • A6, A7 können nicht als digitale Pins verwendet werden

Die HC-SR04 Module sind im 90° Winkel zueinander durch ein Stück Stripboard verbunden. Dazwischen befindet sich der Taster. Zweifellos haben Sie Ihr eigenes bevorzugtes Design.

Wenn Sie sich für ein Fußpedal entscheiden, schließen Sie es über eine Klinkenbuchse an.

Schritt 6: Hinzufügen eines Netzteils

Hinzufügen eines Netzteils
Hinzufügen eines Netzteils
Hinzufügen eines Netzteils
Hinzufügen eines Netzteils
Hinzufügen eines Netzteils
Hinzufügen eines Netzteils

Ich habe den Gesamtstrom des Arduino, VS1053 gemessen und als 79mA angezeigt. Laut Datenblättern ist der Arduino 20mA, das Display 25mA, der VS1053 11mA und der HC-SR04 jeweils 15mA im "Betrieb" - 80mA scheinen also ungefähr richtig zu sein.

Das Display benötigt 25mA und wird vom 3V3-Ausgang des Arduino gespeist, der für 50mA ausgelegt ist. Die Schaltung sollte also den 3V3-Regler des Arduino nicht belasten.

Können wir die Schaltung über den Vin-Pin des Arduino mit Strom versorgen? Ich finde die Antwort darauf nirgendwo im Web. Es steht nicht in der Arduino-Dokumentation. Der integrierte 5V-Regler verbraucht (Vin-5)*80 mW. Wie hoch ist seine maximale Verlustleistung? Es scheint, dass niemand wirklich weiß. Laut Datenblatt kann der NCP1117-Regler in einem SOT-223-Gehäuse mit einem minimalen Kupferpad 650 mW abführen. Also für einen 80mA Strom,

  • Vin Power
  • 8V 240mW
  • 9 320
  • 10 400
  • 11 480
  • 12 560
  • 13 640
  • 14 720

Um sicher zu gehen, sollten wir 9V auf Vin nicht überschreiten.

Ein externes 5V-Netzteil wäre viel sicherer, aber ich habe den Regler des Arduino verwendet und es ist in Ordnung.

Um die Schaltung mit Strom zu versorgen, habe ich ein Modul gewählt, das ein LI-Ionen-Ladegerät und ein Boost-Netzteil kombiniert. Sie sind bei eBay weit verbreitet oder suchen nach "Li Charger Boost".

Das Ladegerät verwendet einen TC4056-Chip mit einem komplizierten Algorithmus für konstanten Strom und konstante Spannung. Wenn Sie den USB-Stromeingang entfernen, wechselt er in den Standby-Modus mit einer Batterieentladung von weniger als 2uA. Der TC4056 verfügt über einen Eingang zur Temperaturerfassung, der jedoch nicht auf der Modulplatine verfügbar ist (der Pin ist geerdet).

Die Boost-Schaltung soll über den normalen Batteriespannungsbereich mit einem Ausgangsstrom von 50-300mA einen Wirkungsgrad von 87-91% haben. (Ich habe es nicht selbst gemessen.) Das ist ziemlich gut.

Der "Standby" -Strom beim Entfernen der Last beträgt jedoch 0,3 mA, was schlecht ist. Eine 300-mAH-Zelle würde in 6 Wochen entleert sein. Vielleicht würde es so weit entleert, dass seine Spannung auf ein schädliches Niveau absinkt.

Es gibt eine einzelne Spur, die die Batterie mit dem Boost-Netzteil verbindet. Sie können die Spur leicht schneiden (siehe Foto). Löten Sie oben einen Draht auf den großen Widerstand, damit Sie den Schnitt über einen Schalter überbrücken können.

Die Stromaufnahme beträgt jetzt 0,7uA mit der von mir getesteten Platine. Die Zelle hält also 50 Jahre – naja, natürlich nicht, die Selbstentladung einer Li-Ionen-Zelle beträgt etwa 3% pro Monat. 3% pro Monat für eine 300mAH-Zelle ist ein Strom von 13uA. Vergleichen Sie das mit den 300uA, die die Boost-Schaltung benötigt. Ich denke, es lohnt sich, die Boost-Schaltung auszuschalten.

Sie sollten die Last nicht einschalten, während die Zelle geladen wird. Der von der Last aufgenommene Strom wird den Ladealgorithmus verwirren.

Sie benötigen also einen 2-poligen Umschalter (z. B. einen Schiebeschalter), der sich entweder in der Stellung "Ein" oder "Laden" befindet.

Sie könnten die eingebaute USB-Buchse ignorieren und separate Drähte an den Schalter und Ihre eigene USB-Buchse anlöten.

Oder Sie können den eingebauten Sockel behalten und die Verbindung zwischen Sockel und Chip trennen. Das obige Diagramm zeigt, wo geschnitten werden muss.

Verbinden Sie den 5V-Ausgang des Boost-Netzteils mit dem 5V-Pin des Arduino. Die Leute sagen "Tu das nicht - du übergehst die Schutzdiode des Arduino". Aber der Nano hat keinen Pin, der mit der USB-Seite der Diode verbunden ist. Einfach an den 5V-Pin anschließen. Was kann schlimmstenfalls passieren? Sie verlieren einen Nano, der weniger als 3 € kostet.

Der Stromkreis des Netzteils muss auch den Verstärker für die Lautsprecher mit Strom versorgen.

Schritt 7: Lautsprecher hinzufügen

Lautsprecher hinzufügen
Lautsprecher hinzufügen

Ich wollte, dass das MIDI Theremin tragbar ist. Es sollte eigene Lautsprecher und Verstärker enthalten.

Sie könnten Ihren eigenen Verstärker bauen oder ein Verstärkermodul kaufen, dann Lautsprecher kaufen und sie in ein Gehäuse stecken. Aber worum geht es? In meinem Techno-Midden habe ich ein halbes Dutzend Aktivlautsprecher, die ich in Wohltätigkeitsläden und im Kofferraumverkauf für jeweils unter 1 Pfund gekauft habe.

Die hellblauen Lautsprecher verbrauchten nur 30 mA bei 5 V, haben aber eine schlechte Basswiedergabe. Das schwarze Radio hat eine schöne Form - ich kann mir vorstellen, die HC-SR04-Module an den Ecken und das Display an der Oberseite anzubringen. Die grauen "Flachbildschirme" werden über eine USB-Buchse mit Strom versorgt, was ideal ist.

Mit ein wenig Suche sollten Sie Aktivlautsprecher finden, die bereits ein schönes Gehäuse haben. Stellen Sie sicher, dass sie mit der Spannung Ihres Netzteils betrieben werden. Wenn es mit vier AA-Zellen betrieben wird, wird es wahrscheinlich bei 5 V funktionieren.

Aber ich grub weiter in den Techno-Midden und fand eine sehr schöne Dockingstation, die ich an einem "Alles für 0,50 Pfund"-Stand bekam. Es hatte sein Ladegerät und seine IR-Fernbedienung verloren, funktioniert aber gut.

Wenn Sie entschlossen sind, Ihre eigenen Aktivlautsprecher zu bauen, ist hier eine gute Anleitung. Oder suchen Sie Instructables nach PAM8403 oder Verstärker.

Schritt 8: Dockingstation

Dockingstation
Dockingstation
Dockingstation
Dockingstation
Dockingstation
Dockingstation
Dockingstation
Dockingstation

Dies ist eine sehr schöne tragbare Dockingstation von Logitech. Es ist unwahrscheinlich, dass Sie dasselbe bekommen, aber die Konstruktionsprinzipien werden ähnlich sein.

Die Dockingstation enthält eine eigene wiederaufladbare Lithium-Ionen-Zelle und ein Boost-Netzteil. (Falls Ihres nicht das oben beschriebene Netzteil baut und die nächsten Absätze überspringt.)

Wenn Ihr Verstärker eine Lithium-Ionen-Zelle hat, hat er wahrscheinlich ein Boost-Netzteil. (Die Spannung einer einzelnen Li-Ionen-Zelle ist unangenehm niedrig und muss daher verstärkt werden.)

Suchen Sie zuerst die Anschlüsse für die Stromversorgung des Verstärkers. Das Netzteil hat große Glättungskondensatoren - siehe Foto der Junk-Platine. Messen Sie die Spannung an deren Lötpads auf der Unterseite. Das negative Pad sollte das "Masse" -Pad der Schaltung sein. Wenn die Leiterplatte überflutet wurde, wird diese geschliffen. Oder der Boden kann eine dicke Spur sein, die zu vielen Stellen auf dem Brett führt.

An der Endstufe des Verstärkers können große Kondensatoren sein - das ist die altmodische Vorgehensweise. Messen Sie die Spannung an ihnen, während es funktioniert. Sie variiert wahrscheinlich je nach Musik und kann die Hälfte der Spannung der Netzteilkondensatoren durchschnittlich sein. Das sind die falschen Kondensatoren - Sie wollen die im Netzteil.

Es ist sehr unwahrscheinlich, dass das Board sowohl positive als auch negative Leistung hat (große Stereo-Endstufen tun dies, aber ich habe noch nie so eine leichte gesehen). Stellen Sie sicher, dass Sie wirklich Erde und positive Kraft gewählt haben.

Die von mir verwendete Logitech-Dockingstation hat eine komplizierte digitale Schaltung sowie den analogen Verstärker. Wenn Ihres so ist, hat es Glättungskondensatoren für 5 V oder 3,3 V plus vielleicht 9 V für den Verstärker. Messen Sie die Spannungen an allen großen Kondensatoren und wählen Sie die größte Spannung.

Stellen Sie sicher, dass die Spannung des von Ihnen gewählten Stromanschlusses vom Ein-/Ausschalter abhängt. (Wenn Sie den Schalter ausschalten, kann es eine Weile dauern, bis die Spannung abfällt, während sich der Kondensator entleert.)

Lötdrähte an das, was Sie als Stromquelle gewählt haben. Die Logitech-Dockingstation erzeugt etwa 9 V, die sich gut mit dem Vin-Pin des Arduino verbinden lassen.

Ihre Aktivlautsprecher oder Dockingstation sollten über eine 3,5-mm-Buchse für den Audioeingang verfügen. Eine der Lötstellen wird geschliffen - wahrscheinlich diejenige, die dem Rand der Platine am nächsten ist. Verwenden Sie ein Ohm-Meter, um zu überprüfen, ob es mit dem, was Sie für die Masse halten, verbunden ist. Bei einigen Audioeingängen ist der "Schirm" der Buchse nicht direkt mit Masse verbunden. Es schwimmt. Wenn also keiner der Buchsenstifte geerdet ist, machen Sie sich im Moment keine Sorgen. (Die "Abschirmung" der Buchse am VS1053-Modul ist ebenfalls potenzialfrei.)

Verwenden Sie ein Messgerät, um zu überprüfen, ob der "Masse"-Pin der Buchse die gleiche Spannung wie die Stromversorgungsmasse hat.

Die Dockingstation von Logitech war seltsam. Wenn ich die "Masse" der Logitech-Klinkenbuchse mit der "Masse" des VS1053-Boards verbunden habe (mit einem Audiokabel funktionierte es gut, aber der Strom zu meinem Theremin-System stieg von 80 mA auf über 200 mA. Also habe ich sichergestellt, dass Ich habe diese beiden "Gründe" nicht verbunden, es funktioniert gut, aber ich habe keine Ahnung, was los war.

Schritt 9: Einen Fall erstellen

Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen
Einen Fall erstellen

Welchen Fall Sie machen, hängt von den Materialien ab, die Sie zur Hand haben, mit was Sie gerne arbeiten und welche Aktivlautsprecher Sie gewählt haben. Was auch immer Sie machen, sollten Sie sicherstellen, dass die Sonare voneinander weg und in einem Winkel von 45° nach oben zeigen. Dann gibt es den Bildschirm und die Drucktaste.

Wenn Sie sich meine anderen Instuctables angeschaut haben, wissen Sie, dass ich ein großer Fan von Weißblech bin. Es kann in Form gebogen, weichgelötet und lackiert werden. Die Fotos zeigen, wie ich die Dinge arrangiert habe.

Das obere Dreieck ist aus Weißblech gebogen, gelötet, gefüllt, geglättet und lackiert. Die Platinen sind im Dreieck heiß verklebt und haben kleine Holzsplitter als Abstandshalter.

Die "Frontplatte" besteht aus 1 mm Polystyrolplatte. Abstandshalter bestehen aus mehr Polystyrolplatten und selbstschneidende Schrauben halten das Stripboard an Ort und Stelle. In den Hohlraum an der Vorderseite der Dockingstation werden Holzstützen heißgeklebt und die Platinen mit langen Blechschrauben darauf geschraubt.

Ich denke, ich könnte etwas in 3D drucken lassen, aber ich bevorzuge die Methoden der alten Schule, bei denen ich die Dinge im Laufe der Zeit anpassen kann. Dinge zu machen ist eher eine Entdeckungsreise als "Engineering".

Schritt 10: Zukünftige Entwicklung

Zukünftige Entwicklung
Zukünftige Entwicklung

Wie könnten Sie das Instrument weiterentwickeln? Sie könnten die Benutzeroberfläche ändern. Sie können die Taste durch einen IR-Entfernungssensor ersetzen, sodass Sie das Instrument überhaupt nicht berühren müssen. Oder verwenden Sie einen Touchscreen anstelle einer Taste und der linken Hand, um das Menü zu steuern.

Im Scale-Menü können Sie Tonleitern für "nicht-westliche Musik" auswählen, es wird jedoch davon ausgegangen, dass alle Noten von der ausgeglichenen Tastatur stammen - so funktioniert MIDI Die arabische Vierteltonskala hat Noten, die nicht auf der ausgeglichenen Tonleiter liegen. Andere Skalen haben in keiner Weise mit einer ausgeglichenen Tastatur zu tun. Es kann möglich sein, Pitch-Bend zu verwenden, um solche Noten zu erzeugen. Sie benötigen eine Möglichkeit, damit das Menü die Frequenz jeder Note angeben kann. Ich denke, Pitchbend kann auf alle Noten im Kanal angewendet werden. Ich verwende derzeit nur einen Kanal - Kanal 0. Wenn es also polyphon ist oder Akkorde hat, müssen Sie jede Note in einem anderen Kanal spielen.

Das Instrument könnte ein Drum-Synthesizer werden. Die linke Hand könnte die Tonhöhe eines Melodic Tom bestimmen, während das rechte Sonar durch einen Piezosensor ersetzt wird, den Sie anschlagen, um die Trommel zu ertönen.

Die beiden Hände konnten zwei verschiedene Instrumente steuern.

Die linke Hand konnte sich ein Instrument aussuchen.

Ungefähr nach der Hälfte dieses Projekts entdeckte ich den Altura MkII Theremin MIDI Controller von Zeppelin Design Labs. Es sieht aus wie ein feines Instrument.

Sie haben ein paar Videos, die sehr sehenswert sind:

(Ich habe Altura das Wort "Behälter" gestohlen und die Idee, dass sich ein Behälter beim Betreten ausdehnt, um Ihnen zu helfen, darin zu bleiben.)

Mein MIDI Theremin unterscheidet sich in einigen Punkten vom Altura. Mine produziert seinen eigenen Sound mit seinem eingebauten MIDI-Synth, Amp, etc.; der Altura sendet Nachrichten an einen externen Synthesizer. Vielleicht bevorzugen Sie ihre Vorgehensweise. Meins hat eher einen TFT-Bildschirm als eine 7-Segment-Anzeige - das ist definitiv besser, aber man könnte meinen, ein größerer Bildschirm wäre eine Verbesserung. Meiner verwendet Menüs, um die Parameter einzurichten, während ihrer Knöpfe verwendet. Menüs werden benötigt, weil meins viele Steuerelemente für das Eingabegerät (die Sonare) und den Synthesizer benötigt; der Altura benötigt weniger Kontrollen. Vielleicht sind Regler während einer Live-Performance besser. Vielleicht sollte meiner Knöpfe haben. Ein Drehregler zum Auswählen von Setups könnte gut sein.

Der Altura verfügt über einen "Articulation"-Regler, der festlegt, wie schnell Noten gespielt werden können. Ich habe das nicht in meine Software aufgenommen - vielleicht sollte es da sein. Der Altura hat einen Arpeggiator (Step Sequencer). Das ist eine gute Idee; Meiner hat Akkorde, die nicht ganz dasselbe sind.

Das war's. Ich wünsche Ihnen viel Spaß beim Bauen und Verwenden eines MIDI-Theremins. Lassen Sie es mich wissen, wenn Sie Fehler in meiner Beschreibung finden oder Ihnen Verbesserungen einfallen.

Empfohlen: