Inhaltsverzeichnis:

Verwenden des Complex Arts Sensor Board zur Steuerung reiner Daten über WLAN - Gunook
Verwenden des Complex Arts Sensor Board zur Steuerung reiner Daten über WLAN - Gunook

Video: Verwenden des Complex Arts Sensor Board zur Steuerung reiner Daten über WLAN - Gunook

Video: Verwenden des Complex Arts Sensor Board zur Steuerung reiner Daten über WLAN - Gunook
Video: LoRaWAN Grundlagen / Basics für Unternehmen 2024, November
Anonim
Verwenden des Complex Arts Sensor Board zur Kontrolle reiner Daten über WLAN
Verwenden des Complex Arts Sensor Board zur Kontrolle reiner Daten über WLAN
Verwenden des Complex Arts Sensor Board zur Kontrolle reiner Daten über WLAN
Verwenden des Complex Arts Sensor Board zur Kontrolle reiner Daten über WLAN

Wollten Sie schon immer mal mit Gestensteuerung experimentieren? Mit einer Handbewegung etwas bewegen? Steuern Sie die Musik mit einer Drehung Ihres Handgelenks? Dieses Instructable zeigt Ihnen, wie!

Das Complex Arts Sensor Board (complexarts.net) ist ein vielseitiger Mikrocontroller basierend auf dem ESP32 WROOM. Es verfügt über alle Funktionen der ESP32-Plattform, einschließlich integriertem WLAN und Bluetooth sowie 23 konfigurierbaren GPIO-Pins. Die Sensorplatine verfügt auch über die BNO_085 IMU – einen 9 DOF-Bewegungsprozessor, der integrierte Sensorfusions- und Quaternionengleichungen durchführt und superpräzise Orientierungs-, Schwerkraftvektor- und Linearbeschleunigungsdaten liefert. Das Sensor Board kann mit Arduino, MicroPython oder ESP-IDF programmiert werden, aber in dieser Lektion werden wir das Board mit der Arduino IDE programmieren. Es ist wichtig zu beachten, dass die ESP32-Module nicht nativ über die Arduino-IDE programmierbar sind, dies jedoch sehr einfach möglich ist. Hier gibt es ein großartiges Tutorial: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, das etwa 2 Minuten dauern sollte. Das letzte Setup, das wir brauchen, ist der Treiber für den USB-to-UART-Chip auf dem Sensor Board, den Sie hier finden: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. Wählen Sie einfach Ihr Betriebssystem aus und installieren Sie es, was etwa 2 weitere Minuten dauern sollte. Wenn das erledigt ist, können wir loslegen!

[Diese Lektion setzt keine Vertrautheit mit Arduino oder Pure Data voraus, behandelt jedoch nicht deren Installation. Arduino finden Sie unter aduino.cc. Pure Data finden Sie unter puredata.info. Auf beiden Seiten finden Sie leicht verständliche Anweisungen zur Installation und Einrichtung.]

Außerdem… die in diesem Tutorial behandelten Konzepte, wie das Einrichten von UDP-Verbindungen, das Programmieren des ESP32 mit Arduino und das grundlegende Pure Data-Patch-Building – sind Bausteine, die für unzählige Projekte verwendet werden können habe diese Konzepte runter!

Lieferungen

1. Sensorplatine für komplexe Künste

2. Arduino-IDE

3. Reine Daten

Schritt 1: Untersuchen des Codes:

Prüfung des Kodex
Prüfung des Kodex
Prüfung des Kodex
Prüfung des Kodex

Zuerst schauen wir uns den Arduino-Code an. (Die Quelle ist unter https://github.com/ComplexArts/SensorBoardArduino verfügbar. Es wird empfohlen, dass Sie dem Code folgen.) Wir benötigen einige Bibliotheken, von denen eine keine Arduino-Kernbibliothek ist muss es eventuell installieren. Dieses Projekt basiert auf der Datei SparkFun_BNO080_Arduino_Library.h. Wenn Sie diese nicht haben, müssen Sie zu Sketch -> Bibliothek einschließen -> Bibliotheken verwalten gehen. Geben Sie „bno080“ein und die oben erwähnte Bibliothek wird angezeigt. Drücken Sie auf Installieren.

Die anderen drei verwendeten Bibliotheken sollten standardmäßig mit Arduino geliefert werden. Zuerst werden wir die SPI-Bibliothek verwenden, um mit der BNO zu kommunizieren. Es ist auch möglich, UART zwischen ESP32 und BNO zu verwenden, aber da SparkFun bereits über eine Bibliothek verfügt, die SPI verwendet, bleiben wir dabei. (Danke, SparkFun!) Das Einschließen der SPI.h-Datei ermöglicht es uns auszuwählen, welche Pins und Ports wir für die SPI-Kommunikation verwenden möchten.

Die WiFi-Bibliothek enthält die Funktionen, die es uns ermöglichen, auf ein drahtloses Netzwerk zuzugreifen. WiFiUDP enthält die Funktionen, die es uns ermöglichen, Daten über dieses Netzwerk zu senden und zu empfangen. Die nächsten beiden Zeilen bringen uns ins Netzwerk – geben Sie Ihren Netzwerknamen und Ihr Passwort ein. Die zwei Zeilen danach geben die Netzwerkadresse und den Port an, an den wir unsere Daten senden. In diesem Fall senden wir es einfach, d. h., wir senden es an jeden in unserem Netzwerk, der zuhört. Die Portnummer bestimmt, wer zuhört, wie wir gleich sehen werden.

Diese nächsten beiden Zeilen erstellen Member für ihre jeweiligen Klassen, damit wir später leicht auf ihre Funktionen zugreifen können.

Als nächstes weisen wir die richtigen Pins des ESP den entsprechenden Pins auf dem BNO zu.

Jetzt richten wir das SPI-Klassenmitglied ein und legen auch die SPI-Port-Geschwindigkeit fest.

Schließlich kommen wir zur Setup-Funktion. Hier starten wir einen seriellen Port, damit wir unsere Ausgabe auf diese Weise überwachen können, wenn wir möchten. Dann beginnen wir WLAN. Beachten Sie, dass das Programm auf eine WiFi-Verbindung wartet, bevor es fortfährt. Sobald WiFi verbunden ist, beginnen wir die UDP-Verbindung und drucken dann unseren Netzwerknamen und unsere IP-Adresse auf den seriellen Monitor. Danach starten wir den SPI-Port und prüfen die Kommunikation zwischen ESP und BNO. Zuletzt rufen wir die Funktion „enableRotationVector(50);“auf. da wir in dieser Lektion nur den Rotationsvektor verwenden werden.

Schritt 2: Der Rest des Codes…

Der Rest des Kodex…
Der Rest des Kodex…

Bevor wir zur Hauptschleife() gehen, haben wir eine Funktion namens „mapFloat“.

Dies ist eine benutzerdefinierte Funktion, die wir hinzugefügt haben, um Werte anderen Werten zuzuordnen oder zu skalieren. Die eingebaute Map-Funktion in Arduino erlaubt nur Integer-Mapping, aber alle unsere Anfangswerte vom BNO liegen zwischen -1 und 1, also müssen wir sie manuell auf die Werte skalieren, die wir wirklich wollen. Aber keine Sorge – hier ist die einfache Funktion, um genau das zu tun:

Jetzt kommen wir zur Hauptschleife(). Das erste, was Sie bemerken werden, ist eine weitere Blockierungsfunktion, wie diejenige, die das Programm auf eine Netzwerkverbindung warten lässt. Dieser hält an, bis Daten von der BNO vorliegen. Wenn wir mit dem Empfang dieser Daten beginnen, weisen wir die eingehenden Quaternion-Werte Gleitkommavariablen zu und geben diese Daten auf dem seriellen Monitor aus.

Jetzt müssen wir diese Werte zuordnen.

[Ein Wort zur UDP-Kommunikation: Daten werden über UDP in 8-Bit-Paketen oder Werten von 0-255 übertragen. Alles über 255 wird an das nächste Paket gepusht und erhöht seinen Wert. Daher müssen wir sicherstellen, dass keine Werte über 255 vorhanden sind.]

Wie bereits erwähnt, haben wir eingehende Werte im Bereich von -1 – 1. Dies gibt uns nicht viel zu tun, da alles unter 0 abgeschnitten wird (oder als 0 angezeigt wird) und wir dies nicht tun können eine Tonne mit Werten zwischen 0 – 1 Nx.

Nachdem wir nun unsere zugeordneten Daten haben, können wir unser Paket zusammenstellen. Dazu müssen wir einen Puffer für die Paketdaten deklarieren und ihm eine Größe von [50] geben, um sicherzustellen, dass alle Daten passen. Dann beginnen wir das Paket mit der Adresse und dem Port, die wir oben angegeben haben, schreiben unseren Puffer und 3 Werte in das Paket to und beenden das Paket.

Zuletzt drucken wir unsere zugeordneten Koordinaten auf den seriellen Monitor. Jetzt ist der Arduino-Code fertig! Flashen Sie den Code auf die Sensorplatine und überprüfen Sie den seriellen Monitor, um sicherzustellen, dass alles wie erwartet funktioniert. Sie sollten die Quaternion-Werte sowie die zugeordneten Werte sehen.

Schritt 3: Verbindung mit reinen Daten herstellen…

Verbindung mit reinen Daten…
Verbindung mit reinen Daten…

Jetzt für reine Daten! Öffnen Sie Pure Data und starten Sie einen neuen Patch (Strg n). Der Patch, den wir erstellen werden, ist sehr einfach und hat nur sieben Objekte. Das erste, das wir erstellen werden, ist das Objekt [netreceive]. Dies ist das Brot und Butter unseres Patches, der die gesamte UDP-Kommunikation abwickelt. Beachten Sie, dass es drei Argumente für das [netreceive]-Objekt gibt; -u gibt UDP an, -b gibt Binär an und 7401 ist natürlich der Port, auf dem wir lauschen. Sie können auch die Nachricht „listen 7401“an [netreceive] senden, um Ihren Port anzugeben.

Sobald Daten eintreffen, müssen wir sie entpacken. Wenn wir ein [print]-Objekt mit [netrecieve] verbinden, können wir sehen, dass die Daten zunächst als Zahlenstrom zu uns kommen, aber wir möchten diese Zahlen analysieren und jede für etwas anderes verwenden. Sie können beispielsweise die X-Achsen-Rotation verwenden, um die Tonhöhe eines Oszillators zu steuern, und die Y-Achse für die Lautstärke oder eine beliebige Anzahl anderer Möglichkeiten. Dazu durchläuft der Datenstrom ein [unpack]-Objekt, das drei Floats (f f f) als Argumente hat.

Jetzt, wo Sie so weit sind, liegt Ihnen die Welt zu Füßen! Sie haben einen drahtlosen Controller, mit dem Sie alles im Pure Data-Universum manipulieren können. Aber hör auf damit! Probieren Sie neben dem Rotationsvektor den Beschleunigungsmesser oder den Magnetometer aus. Versuchen Sie es mit speziellen Funktionen der BNO wie „Doppeltippen“oder „Schütteln“. Alles, was es braucht, ist ein wenig in den Benutzerhandbüchern (oder dem nächsten Instructable …) zu graben.

Schritt 4:

Was wir oben gemacht haben, ist die Kommunikation zwischen dem Sensor Board und Pure Data. Wenn Sie mehr Spaß haben möchten, schließen Sie Ihre Datenausgänge an einige Oszillatoren an! Spielen Sie mit Lautstärkeregler! Kontrollieren Sie vielleicht einige Delay-Zeiten oder Reverb! die welt ist deine auster!

Empfohlen: