Inhaltsverzeichnis:

Art-Net gesteuerte Winde - Gunook
Art-Net gesteuerte Winde - Gunook

Video: Art-Net gesteuerte Winde - Gunook

Video: Art-Net gesteuerte Winde - Gunook
Video: GPT-4 - How does it work, and how do I build apps with it? - CS50 Tech Talk 2024, Juni
Anonim
Art-Net gesteuerte Winde
Art-Net gesteuerte Winde

Hallo an alle, in diesem anweisbaren werde ich erklären, wie ich meine Art-Net-gesteuerte Winde erstellt habe. "Dein was?" Ich höre dich fragen, lass es mich sehr schnell erklären. Vor einigen Jahren haben wir mit dem örtlichen Jugendhaus eine Party geschmissen, und als Bühnenbild hatten wir die Idee, ein bewegliches Dach zu bauen.

Mit 9 Winden (Takeln) haben wir ein riesiges weißes Tuch hochgehoben und durch das Protokoll DMX kontrolliert. Aber damals waren die Winden, die wir benutzten, 3-phasig gesteuert. Um es auf und ab zu bewegen, mussten wir ein Relaissystem erstellen, das von einem zentralen Arduino Mega gesteuert wurde, der über DMX gesteuert wurde. Das Relais zum Schalten von Spannungen von 230V und 12 Ampere.

Um es verständlicher auszudrücken, mussten wir ein riesiges Durcheinander aus Drähten und Relais schaffen, das super instabil, unzuverlässig und eigentlich ziemlich gefährlich war.

Also dachten wir uns, dass es einen besseren Weg geben muss, dies zu tun. Wir begannen zu überlegen und kamen zu dem Schluss, dass dies der beste Weg wäre, dies durch ein modulares System von Winden zu tun, die über das Art-Net-Protokoll gesteuert werden, sodass wir nur eine Spannungsquelle und ein Ethernet-Kabel benötigen würden.

Das ist genau das, was ich geschaffen habe und ich werde versuchen, Ihnen zu erklären, wie ich es gemacht habe. Das gesamte Setup basiert auf einem Raspberry Pi, der den Setup-Prozess steuert. Nach seiner Einstellung wird die Steuerung an einen Lichtcomputer (Chamsys, etc.) übergeben, der von dort aus die Winden steuert.

Ich gehe davon aus, dass Sie über Grundkenntnisse in Python, Arduino und Raspberry Pi verfügen sowie etwas über das Art-Net-Protokoll und die Controller verstehen.

Lieferungen

Was du brauchen wirst:

  • Himbeer-Pi
  • Arduino
  • Arduino-Ethernet-Schild
  • Arduino-Motorschild
  • Jeder OLED-Bildschirm
  • Ethernet Kabel
  • Ethernet-Switch
  • DC-Motor mit Encoder-Anbau

Schritt 1: Einrichten des Raspberry Pi

Okay, das funktioniert so, dass der Raspberry Pi einen Apache- und einen MariaDB-Server ausführt. Der Apache-Server soll die Website hosten, die MariaDB soll eine Datenbank führen, in der wir die Daten der Winden speichern.

Ich werde Sie nicht durch die gesamten Prozesse zum Einrichten des Pi mit ssh führen, wenn Sie nicht vertraut sind, finden Sie hier ein gutes Tutorial.

Zuerst stellen wir also sicher, dass der Himbeer-Pi in Ihrem Terminallauf eingerichtet ist:

Apache installieren

sudo apt install apache2 -y

So installieren Sie mariaDB

sudo apt-get install mariadb-server

Dies sind alle Python-Erweiterungen, die wir brauchen

pip3 installiere mysql-connector-python

pip3 installflakon-socketio pip3 installflakon-cors pip3 install gevent pip3 install gevent-websocket pip3 install netifaces

Für das Oled-Display benötigen wir einen etwas schwierigeren Einrichtungsprozess, den Sie hier finden.

Ok das ist das pi alles fertig!

Schritt 2: Verstehen, wie das Setup funktioniert

Sie möchten die Winde also einrichten, indem Sie ihr eine Startposition und eine Endposition geben. Es wird einem bestimmten Kanal zugewiesen und mit diesem Kanal können Sie sich nur zwischen der gewählten Stat- und Endposition bewegen.

Um diese Position auszuwählen, müssen Sie die Winde dorthin bewegen. Sobald Sie dort sind, drehen Sie einen bestimmten Kanal auf den Wert 56. Wenn genau dieser Kanal diesen Wert erreicht, weiß er, dass dies seine End-Start- / Endposition ist, wenn es nach oben oder unten verschoben werden muss oder wenn es seine artnet-Werte ändern muss. Das Verschieben der Winde erfolgt auch, indem man einen bestimmten Kanal auf 56 setzt. "Und warum 56" ich höre dich fragen, naja ich musste etwas auswählen:).

Die Position wird über den Encoder am DC-Motor berechnet.

Schritt 3: Backend des Pi

Backend des Pi
Backend des Pi

Das Backend für das System ist auf meinem Github zu finden. Ich habe meine eigene Bibliothek für das art-net-Protokoll geschrieben, also zögern Sie nicht, sie zu verwenden. Ich werde Sie nicht Zeile für Zeile durch alles führen, aber ich werde Ihnen das Gesamtbild von allem geben.

Der Code führt einen Kolbenserver aus, der mit dem Apache-Server kommuniziert, der auf dem Pi läuft. Es verwendet das Flask-Socketio-Modul, um Daten an das Frontend zu senden und zu empfangen. Die art-net lib verwendet das Socket-Modul von Python, um UDP-Pakete zum und vom Arduino zu senden.

Jede Methode, die mit @socketio.on('F2B_***') beginnt, wartet auf einen F2B-Aufruf vom Frontend. Sobald es empfangen wurde, führt es die entsprechende Aktion aus. Sei es das Senden eines artnet-Kommandos oder das Abrufen von Daten aus der DB und das Zurücksenden an die Front.

Die Methode oled_show_info() wird verwendet, um die IP der IP anzuzeigen (sowohl auf der WLAN- als auch auf der Ethernet-Schnittstelle).

Also einfach den Code mit ausführen

python3 app.py

Schritt 4: Frontend des Pi

Frontend des Pi
Frontend des Pi

Um das Frontend des pi bearbeiten zu können, müssen Sie sich zunächst Zugang zum Verzeichnis /var/www/html/ verschaffen. Hier bekommt Apache seine Dateien zur Anzeige auf seiner Website. Um Zugriff zu erhalten, führen Sie Folgendes aus:

sudo chmod 777 /var/www/html/

Jetzt ist alles fertig. Holen Sie sich den Code für das Frontend meines Githubs und legen Sie ihn in das Verzeichnis /var/www/html/ ab.

Das Frontend verwendet das gleiche Prinzip wie das Backend, sendet aber jetzt die F2B_***-Befehle, wenn eine Taste gedrückt oder ein Schieberegler bewegt wird.

Und damit ist das Frontend fertig!

Schritt 5: Der Arduino

Der Arduino
Der Arduino
Der Arduino
Der Arduino
Der Arduino
Der Arduino

Für die Verwendung des Arduino müssen Sie das Ethernet-Schild und das Motorschild verwenden. Drücken Sie sie einfach vorsichtig auf das Arduino. Achten Sie darauf, dass Sie den Motorschirm nicht zu weit auf den Ethernet-Schirm schieben, sonst schließen Sie die 2 Motorpins am Ethernet-Anschluss kurz!

Der Code für das Arduino ist auch auf meinem Github zu finden. Laden Sie die Datei artnet_winch.ino hoch und alles sollte gut sein.

Stellen Sie sicher, dass Sie die richtigen Pins für die richtigen Pins Ihres Motors definieren. Die Motorschutzstifte werden mit den Kopfstiften oben auf der Abschirmung ausgewählt. Diese Pins werden unter der //--- Motorkonfiguration ausgewählt. Ebenso wie die Encoder-Pins, die mit den richtigen Pins des Arduino verbunden werden müssen.

Stellen Sie außerdem sicher, dass Ihre MAC-Adresse des Shields korrekt ist. Diese ist auf einem Aufkleber unter dem Schild zu finden und in der MAC-Variablen editierbar. Die IP, die Sie für den PI verwenden, muss im gleichen Bereich wie der PI liegen, dies ist normalerweise auf dem Oled-Bildschirm zu finden.

Der Code sieht ein bisschen viel aus, ist aber nicht so schwer zu verstehen. Grundsätzlich liest der Ethernet-Schild ständig eingehende UDP-Pakete. Wenn es sich bei diesem Paket um ein Artnet-Paket handelt, decodiert es es und erhält die benötigten Informationen daraus. Die verschiedenen artnet-Pakete sind auf der Art-Net-Website gut beschrieben, so dass Sie bei Interesse lesen können, was sie alle tun.

Wenn es ein ArtPoll-Paket empfängt, antwortet es mit einer ArtPollReply. Dies wird in der Callout-Funktion im Backend verwendet, um herauszufinden, welche Geräte sich im Netzwerk befinden.

Wenn es ein ArtDMX-Paket empfängt, dekodiert es das Paket und verwendet die gegebenen Daten, um bestimmte Setup-Befehle auszuführen oder die Winde in Position zu bringen.

Die Funktion move_takel transformiert den gegebenen DMX-Wert (zwischen 0-255) in eine Position zwischen der Start- und Endposition (0 ist das Ende und 255 der Start). Wenn die Position des Encoders nicht dem transformierten Wert entspricht, bewegt sich die Winde je nach Standort auf/ab.

Ich arbeitete an einer Rückkopplungsschleife zwischen dem PI und dem Arduino, damit es mit seiner Position Schritt halten konnte, aber mein Arduino hatte keinen Speicher mehr, um das Programm zu speichern:).

Alles montieren

Zur Befestigung habe ich den Motor an einer Metallhalterung befestigt und eine Art Rohr darüber gelegt. Dann einfach eine Schnur am Rohr befestigt und eine Rolle Klebeband als Gewicht verwendet. Dies ist sehr einfach und Sie können sehr kreativ werden, wie Sie es montieren möchten.

Schritt 6: Alles verbinden

Sobald das Arduino und das Pi eingerichtet sind, stecken Sie einfach beide Ethernet-Kabel in Ihren Switch und das sollte es sein!

Sie können es testen, indem Sie zu der auf dem alten Bildschirm angegebenen Wlan-IP surfen, und Sie sollten die Site sehen. Drücken Sie auf Geräte suchen, um zu sehen, ob Sie das Gerät finden können. Wenn nichts angezeigt wird, ist Ihr Arduino nicht gut verbunden oder die von Ihnen gewählte IP liegt nicht im gleichen Bereich wie die des PI.

Sobald Sie das Gerät sehen, drücken Sie einfach auf Setup. Im Setup-Menü können Sie die Winde mit den Pfeilen bewegen und mit dem Schieberegler testen, ob Start- und Endposition korrekt sind.

Stellen Sie sicher, dass Ihr Controller auch an das Schild angeschlossen ist und seine IP im Bereich des PI und des Arduino liegt.

Das ist es!

Empfohlen: