Inhaltsverzeichnis:

Ultraschall-Pi-Klavier mit Gestensteuerung! - Gunook
Ultraschall-Pi-Klavier mit Gestensteuerung! - Gunook

Video: Ultraschall-Pi-Klavier mit Gestensteuerung! - Gunook

Video: Ultraschall-Pi-Klavier mit Gestensteuerung! - Gunook
Video: Защитите свой дом: как легко сделать ультразвуковой отпугиватель вредителей 2024, November
Anonim
Image
Image
Ultraschall-Pi-Piano mit Gestensteuerung!
Ultraschall-Pi-Piano mit Gestensteuerung!

Dieses Projekt verwendet kostengünstige HC-SR04-Ultraschallsensoren als Eingänge und generiert MIDI-Noten, die für einen hochwertigen Klang über einen Synthesizer auf dem Raspberry Pi gespielt werden können.

Das Projekt verwendet auch eine Grundform der Gestensteuerung, bei der das Musikinstrument gewechselt werden kann, indem man die Hände für einige Sekunden über die beiden äußersten Sensoren hält. Eine andere Geste kann verwendet werden, um den Raspberry Pi herunterzufahren, wenn Sie fertig sind.

Das obige Video zeigt das fertige Produkt in einem einfachen lasergeschnittenen Gehäuse. Es gibt ein ausführlicheres Video später in diesem instructable, das erklärt, wie das Projekt funktioniert.

Ich habe dieses Projekt in Zusammenarbeit mit The Gizmo Dojo (mein lokaler Makerspace in Broomfield, CO) erstellt, um einige interaktive Exponate zu erstellen, die wir zu lokalen STEM/STEAM-Events und Maker Faires mitnehmen können.

Bitte lesen Sie auch die neuesten Dokumentationen und Tutorials unter https://theotherandygrove.com/octasonic/, die jetzt Informationen zu einer Python-Version dieses Projekts enthalten (diese Anleitung wurde für die Rust-Version geschrieben).

Schritt 1: Zutaten

Für dieses anweisbare benötigen Sie die folgenden Zutaten:

  • Raspberry Pi (2 oder 3) mit SD-Karte
  • 8 Ultraschallsensoren HC-SR04
  • Octasonic Breakout-Board
  • Bidirektionaler Logikpegelwandler
  • 32 x 12" Female-Female Jumperkabel zum Anschluss der Ultraschallsensoren
  • 13 x 6" weiblich-weiblich Überbrückungsdrähte zum Anschluss von Raspberry Pi, Octasonic und Logic Level Converter
  • Passendes Netzteil für den Raspberry Pi
  • PC-Lautsprecher oder ähnliches

Ich würde empfehlen, wenn möglich einen Raspberry Pi 3 zu verwenden, da dieser mehr Rechenleistung hat, was zu einem reaktionsschnelleren und angenehmeren Klang führt. Es kann mit einem Raspberry Pi 2 mit ein wenig Optimierung gut funktionieren, aber ich würde nicht versuchen, den ursprünglichen Raspberry Pi für dieses Projekt zu verwenden.

HC-SR04 Ultraschallsensoren haben 4 Anschlüsse - 5V, GND, Trigger und Echo. Normalerweise sind Trigger und Echo mit separaten Pins auf einem Mikrocontroller oder Raspberry Pi verbunden, aber das bedeutet, dass Sie 16 Pins verwenden müssen, um 8 Sensoren anzuschließen, und dies ist nicht praktikabel. Hier kommt das Octasonic Breakout Board ins Spiel. Dieses Board verbindet sich mit allen Sensoren und verfügt über einen dedizierten Mikrocontroller, der die Sensoren überwacht und dann über SPI mit dem Raspberry Pi kommuniziert.

HC-SR04 benötigt 5V und der Raspberry Pi hat nur 3,3V, deshalb brauchen wir auch den Logikpegelwandler, der den Raspberry Pi mit dem Octasonic Breakout Board verbindet.

Schritt 2: Verbinden Sie die Ultraschallsensoren mit dem Octasonic Board

Verbinden Sie die Ultraschallsensoren mit dem Octasonic Board
Verbinden Sie die Ultraschallsensoren mit dem Octasonic Board
Verbinden Sie die Ultraschallsensoren mit dem Octasonic Board
Verbinden Sie die Ultraschallsensoren mit dem Octasonic Board

Verwenden Sie 4 weibliche-weibliche Überbrückungsdrähte, um jeden Ultraschallsensor mit der Platine zu verbinden, und achten Sie darauf, sie richtig herum anzuschließen. Die Platine ist so ausgelegt, dass die Pins in der gleichen Reihenfolge wie die Pins auf dem Ultraschallsensor sind. Von links nach rechts auf der Platine sind die Pins GND, Trigger, Echo, 5V.

Schritt 3: Verbinden Sie den Logic Level Converter mit dem Octasonic Board

Verbinden Sie den Logic Level Converter mit dem Octasonic Board
Verbinden Sie den Logic Level Converter mit dem Octasonic Board

Der Raspberry Pi und das Octasonic Board kommunizieren über SPI. SPI verwendet 4 Drähte:

  • Master-Eingang, Slave-Ausgang (MISO)
  • Master-Ausgang, Slave-Eingang (MOSI)
  • Serielle Uhr (SCK)
  • Slave-Auswahl (SS)

Außerdem müssen wir die Stromversorgung (5V und GND) anschließen.

Der Logikpegelwandler hat zwei Seiten – eine Niederspannung (LV) und eine Hochspannung (HV). Der Raspberry wird mit der LV-Seite verbunden, da er 3,3 V beträgt. Der Octasonic wird mit der HV-Seite verbunden, da er 5 V beträgt.

Dieser Schritt dient zum Anschließen des Octasonic an die HV-Seite des Logikpegelwandlers

Siehe das diesem Schritt beigefügte Foto, das zeigt, welche Pins mit dem Logikpegelwandler verbunden werden sollten.

Die Verbindungen vom Octasonic zum Logic Level Konverter sollten wie folgt sein:

  • 5V zu HV
  • SCK zu HV4
  • MISO zu HV3
  • MOSI zu HV2
  • SS bis HV1
  • GND zu GND

Schritt 4: Verbinden Sie den Logic Level Converter mit dem Raspberry Pi

Verbinden Sie den Logic Level Converter mit dem Raspberry Pi
Verbinden Sie den Logic Level Converter mit dem Raspberry Pi

Der Raspberry Pi und das Octasonic Board kommunizieren über SPI. SPI verwendet 4 Drähte:

  • Master-Eingang, Slave-Ausgang (MISO)
  • Master-Ausgang, Slave-Eingang (MOSI)
  • Serielle Uhr (SCK)
  • Slave-Auswahl (SS)

Außerdem müssen wir die Stromversorgung (3,3 V und GND) anschließen. Der Logikpegelwandler hat zwei Seiten – eine Niederspannung (LV) und eine Hochspannung (HV). Der Raspberry wird mit der LV-Seite verbunden, da er 3,3 V beträgt. Der Octasonic wird an die HV-Seite angeschlossen, da er 5 V beträgt.

Dieser Schritt dient zum Anschließen des Raspberry Pi an die LV-Seite des Logikpegelwandlers

Die Verbindungen vom Raspbery Pi zum Logic Level Konverter sollten wie folgt sein:

  • 3.3V zu LV
  • GPIO11 (SPI_SCLK) bis LV4
  • GPIO09 (SPI_MISO) zu LV3
  • GPIO10 (SPI_MOSI) zu LV2
  • GPIO08 (SPI_CE0_N) SS bis LV1
  • GND zu GND

Verwenden Sie das diesem Schritt beigefügte Diagramm, um die richtigen Pins auf dem Raspberry Pi zu finden!

Schritt 5: Verbinden Sie Raspberry Pi 5V mit Octasonic 5V

Verbinden Sie Raspberry Pi 5V mit Octasonic 5V
Verbinden Sie Raspberry Pi 5V mit Octasonic 5V
Verbinden Sie Raspberry Pi 5V mit Octasonic 5V
Verbinden Sie Raspberry Pi 5V mit Octasonic 5V

Es gibt einen letzten Draht, der hinzugefügt werden muss. Wir müssen das Octasonic-Board tatsächlich mit 5V versorgen, also tun wir dies, indem wir einen der Raspberry Pi 5V-Pins mit dem 5V-Pin am Octasonic AVR-Header verbinden. Dies ist der untere linke Pin im AVR-Header-Block (dies ist der 2 x 3-Block oben rechts auf der Platine). Siehe das angehängte Foto, das zeigt, wo sich der AVR-Block befindet.

Siehe das andere beigefügte Diagramm, um den 5V-Pin auf dem Raspberry Pi zu finden.

Schritt 6: Software installieren

Raspian installieren

Beginnen Sie mit einer Neuinstallation von Raspbian Jessie und aktualisieren Sie es dann auf die neueste Version:

sudo apt-get update

sudo apt-get upgrade

SPI aktivieren

Sie müssen SPI auf dem Raspberry Pi aktivieren, damit dieses Projekt funktioniert! Verwenden Sie dazu das Raspberry Pi-Konfigurationsdienstprogramm.

Es ist auch wichtig, das Pi nach der Aktivierung von SPI neu zu starten, damit es wirksam wird

FluidSynth installieren

Fluidsynth ist ein erstaunlicher kostenloser Software-MIDI-Synth. Sie können es mit diesem Befehl über die Befehlszeile installieren:

sudo apt-get install fluidsynth

Installieren Sie die Programmiersprache Rust

Das Ultrasonic Pi Piano ist in der Programmiersprache Rust von Mozilla implementiert (es ist wie C++, aber ohne die schlechten Bits). Es ist das, was all die coolen Kids heutzutage benutzen.

Folgen Sie den Anweisungen unter https://rustup.rs/, um Rust zu installieren. Um Zeit zu sparen, führen Sie diesen einen Befehl aus. Sie können die Standardantworten auf alle Fragen während der Installation akzeptieren.

HINWEIS: Seit der Veröffentlichung dieser Anleitung gibt es einige Probleme bei der Installation von Rust auf dem Raspberry Pi. Schlechtes Timing:-/ aber ich habe den folgenden Befehl geändert, um das Problem zu umgehen. Hoffentlich werden sie das bald beheben. Ich arbeite daran, ein Image zu erstellen, das die Leute herunterladen und auf eine SD-Karte brennen können. Wenn Sie das möchten, kontaktieren Sie mich bitte.

export RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | NS

Laden Sie den Ultrasonic Pi Piano-Quellcode herunter

Der Quellcode für den Ultrasonic Pi Piano-Quellcode wird auf github gehostet. Es gibt zwei Möglichkeiten, den Code zu erhalten. Wenn Sie mit git und github vertraut sind, können Sie das Repository klonen:

git clone [email protected]:TheGizmoDojo/UltrasonicPiPiano.git

Alternativ können Sie eine ZIP-Datei mit dem neuesten Code herunterladen.

Kompilieren Sie den Quellcode

cd UltraschallPiPiano

Fracht bauen --release

Testen Sie den Code

Bevor wir im nächsten Schritt zum Musikmachen übergehen, stellen wir sicher, dass die Software läuft und wir gültige Daten von den Sensoren auslesen können.

Verwenden Sie den folgenden Befehl, um die Anwendung auszuführen. Dadurch werden Daten von den Sensoren gelesen und in MIDI-Noten übersetzt, die dann auf der Konsole ausgedruckt werden. Wenn Sie Ihre Hand über die Sensoren bewegen, sollten Sie sehen, wie Daten generiert werden. Wenn nicht, fahren Sie mit dem Abschnitt zur Fehlerbehebung am Ende dieser Anleitung fort.

Frachtfahrt --release

Wenn Sie neugierig sind, weist das Flag "--release" Rust an, den Code so effizient wie möglich zu kompilieren, im Gegensatz zur Standardeinstellung "--debug".

Schritt 7: Machen Sie etwas Musik

Stellen Sie sicher, dass Sie sich noch in dem Verzeichnis befinden, in das Sie den Quellcode heruntergeladen haben, und führen Sie den folgenden Befehl aus.

Dieses "run.sh"-Skript stellt sicher, dass der Code kompiliert wurde und führt den Code dann aus, wobei die Ausgabe an fluidsynth geleitet wird.

./run.sh

Stellen Sie sicher, dass Sie verstärkte Lautsprecher an die 3,5-mm-Audiobuchse des Raspberry Pi angeschlossen haben und Sie sollten Musik hören, wenn Sie Ihre Hände über die Sensoren bewegen.

Wenn Sie keine Musik hören und einen HDMI-Monitor angeschlossen haben, wird die Audioausgabe wahrscheinlich stattdessen dorthin geleitet. Um dies zu beheben, führen Sie einfach diesen Befehl aus und starten Sie das Pi Piano neu:

sudo amixer cset numid=3 1

Lautstärke ändern

Das Volumen (oder "Gain") wird mit dem Parameter "-g" an fluidsynth vorgegeben. Sie können das Skript run.sh ändern und diesen Wert ändern. Bitte beachten Sie, dass kleine Änderungen dieses Parameters zu einer großen Änderung der Lautstärke führen. Versuchen Sie also, ihn um kleine Beträge zu erhöhen (z. B. 0,1 oder 0,2).

Schritt 8: Gestensteuerung

Sehen Sie sich das Video an, das diesem Schritt beigefügt ist, um eine vollständige Demonstration des Projekts zu erhalten, einschließlich der Funktionsweise der Gestensteuerung.

Das Konzept ist ganz einfach. Die Software verfolgt, welche Sensoren abgedeckt sind (innerhalb von 10cm) und welche nicht. Dies entspricht 8 Binärzahlen (1 oder 0). Dies ist sehr praktisch, da eine Folge von 8 Binärzahlen ein "Byte" ergibt, das Zahlen zwischen 0 und 255 darstellen kann. Wenn Sie sich mit Binärzahlen noch nicht auskennen, empfehle ich dringend, nach einem Tutorial zu suchen. Binärzahlen sind eine grundlegende Fähigkeit, die Sie lernen sollten, wenn Sie mehr über das Programmieren erfahren möchten.

Die Software bildet den aktuellen Zustand der Sensoren auf ein einzelnes Byte ab, das die aktuelle Geste repräsentiert. Wenn diese Zahl mehrere Zyklen lang gleich bleibt, reagiert die Software auf diese Geste.

Da Ultraschallsensoren nicht sehr zuverlässig sind und es zu Interferenzen zwischen den Sensoren kommen kann, müssen Sie bei der Verwendung der Gesten etwas Geduld aufbringen. Versuchen Sie, den Abstand, den Sie mit Ihren Händen von den Sensoren halten, sowie den Winkel, in dem Sie Ihre Hände halten, zu variieren. Versuchen Sie auch, etwas Flaches und Festes über die Sensoren zu halten, um den Ton besser zu reflektieren.

Schritt 9: Herstellen eines Gehäuses

Wenn Sie dies zu einer Dauerausstellung machen und es den Leuten zeigen möchten, möchten Sie wahrscheinlich eine Art Gehege bauen. Dies kann aus Holz, Pappe oder vielen anderen Materialien bestehen. Hier ist ein Video, das das Gehäuse zeigt, an dem wir für dieses Projekt arbeiten. Dies ist aus Holz, mit Löchern gebohrt, um die Ultraschallsensoren an Ort und Stelle zu halten.

Schritt 10: Fehlerbehebung und nächste Schritte

Fehlerbehebung

Wenn das Projekt nicht funktioniert, liegt es normalerweise an einem Verdrahtungsfehler. Nehmen Sie sich Zeit, um alle Verbindungen zu überprüfen.

Ein weiteres häufiges Problem besteht darin, dass SPI nicht aktiviert und der Pi neu gestartet wird.

Bitte besuchen Sie https://theotherandygrove.com/octasonic/ für eine vollständige Dokumentation, einschließlich Tipps zur Fehlerbehebung, mit Rust- und Python-spezifischen Artikeln sowie Informationen dazu, wie Sie Support erhalten.

Nächste Schritte

Sobald das Projekt funktioniert, empfehle ich, mit dem Code zu experimentieren und verschiedene Musikinstrumente auszuprobieren. MIDI-Instrumentencodes liegen zwischen 1 und 127 und werden hier dokumentiert.

Möchten Sie ein einzelnes Musikinstrument, bei dem jeder Sensor eine andere Oktave spielt? Vielleicht möchten Sie stattdessen, dass jeder Sensor ein separates Instrument ist? Die Möglichkeiten sind fast grenzenlos!

Ich hoffe, Sie haben dieses instructable genossen. Bitte liken Sie es, wenn Sie es getan haben, und abonnieren Sie mich hier und meinen YouTube-Kanal, um zukünftige Projekte zu sehen.

Empfohlen: