Inhaltsverzeichnis:

Portal 2 Turret - Master Turret Control - Gunook
Portal 2 Turret - Master Turret Control - Gunook

Video: Portal 2 Turret - Master Turret Control - Gunook

Video: Portal 2 Turret - Master Turret Control - Gunook
Video: [Portal 2] How to Break the Assembly Line in Turret Control Center 2024, November
Anonim
Image
Image

Dieses Projekt ist eine Erweiterung oder ein Remix meines ursprünglichen Portal Turret auf Instructables (Portal-2-Turret-Gun). Es kann auch als billiger Controller verwendet werden, um alles zu steuern, was den Funkchip nRF24L01 verwendet. Der LCD-Bildschirm ist besonders nützlich beim Anpassen.

(Es erweist sich als sehr nützlich, um zu überprüfen, wann meine Funkgeräte Verbindungen zu anderen nRF24L01s im "Netzwerk" herstellen und verlieren. Ich kann herumlaufen und beobachten, wie der Bildschirm den Verbindungsstatus der Funkgeräte anzeigt! Sehr hilfreich zum Anpassen der Einstellungen und zur Überprüfung Bereich!)

Nachdem ich das Portal Turret fertiggestellt hatte, sah ich am Ende von Portal 2 einen kurzen Videoclip der Cara Mia Opernszene. Ich dachte: „Hey, ich habe jetzt ein paar Türme gebaut. Ich kann das machen! Nun, ich hatte die Geschütztürme, aber damit es funktionierte, mussten sie jetzt miteinander oder mit einem anderen Gerät kommunizieren. Nachdem ich darüber nachgedacht hatte und dachte, dass die manuelle Steuerung auch cool wäre, entschied ich mich schließlich, einen Master Turret Controller oder ein MTC zu bauen.

Okay, wie geht das? Nun, ich hatte keine Lust, die Türme zu sehr zu modifizieren, also war das eine Einschränkung. Ich hatte einige nRF24L01-Funkchips, die ich noch nicht verwendet hatte, und dachte, das würde meinem Ziel entsprechen, kostengünstige Komponenten zu verwenden und mich auf mechanisches Design und Code zu verlassen, um dies zu erreichen. Ich musste einen Controller bauen und begann darüber nachzudenken, was der Controller enthalten würde und was genau ich mit den Türmen machen könnte. Cara Mia stand schon auf dem Programm, aber was noch?

Manuelle Steuerung: Sobald die Flügel geöffnet sind, möchte ich also die Neigung und den Pivot steuern. 2 Achsen = ein Joystick, also Joysticksteuerung und einige Druckknöpfe. Druckknopf 1 würde den Turm abfeuern, und vielleicht würde Druckknopf 2 ihn dazu bringen, einen seiner Sprüche zu sagen. Hört sich gut an! Einfach genug…

Chat: Ich habe vor kurzem wieder die Routine "Wer ist zuerst" - Abbott und Costello gesehen, und in meinem Kopf ging ein Licht aus! Ich würde auch eine Sketch-Comedy-Routine machen, die alle Sprüche verwendet und mehrere Türme verwendet !! Ok, dieser war nicht vollständig herausgefunden, aber ich bin mir sicher, dass ich ihn sortieren würde, sobald mein Build im Gange war.

Ich wollte auch, dass dieses MTC drahtlos ist, also entschied ich mich für eine einfache 9-V-Batteriebetriebene Option und entwarf den Controller so, dass er über den Mini-USB-Stecker durch den Nano auf der Rückseite mit Strom versorgt wird. Nützlich auch zum Aktualisieren.

Schritt 1: Einbau des Radios in die Türme

Ich habe das Radio zuerst mit ein paar nackten Nanos zum Laufen gebracht, um sicherzustellen, dass es funktioniert und Informationen zwischen mehreren Geräten senden kann. Nachdem das erledigt war, ging es darum, das Funkgerät in die bestehenden Geschütztürme zu integrieren. Hmm, das Hinzufügen der physischen Platine in den Turm war ziemlich einfach. Ich habe gerade den Chiphalter modifiziert, um den nRF24L01, den Nano und den MP3-Chip aufzunehmen. Okay. Ein physisches Teil modifiziert, mit einigen Verdrahtungen.

Der modifizierte Chiphalter ist jetzt bereits Bestandteil der Revolverdruckteile. Ich habe gerade die Nicht-Radio-Option aus den gedruckten Teilen in diesem Build gelöscht. Es macht keinen Unterschied, wenn jemand die Nicht-Radio-Variante bauen möchte. Schließen Sie den Funkchip nRF24L01 nur nicht ein.

Schritt 2: (Neu-)Verkabelung der Türme

(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme
(Neu-)Verkabelung der Türme

Äh oh…

Das sah nicht gut aus. Ich musste dem Nano 5 Verbindungen hinzufügen, und ich hatte bereits wenig verfügbare Pins. Nachdem ich das ein wenig untersucht hatte, erkannte ich, welche Verbindungen Vorrang hatten, und erkannte, dass ich die meisten der bestehenden Nano-Verbindungen neu zuordnen musste, um dies zu ermöglichen.

An diejenigen, die einen „Radio Turret“bauen wollen und bereits die vorherige Generation gebaut haben… Sorry…

Jetzt habe ich diese Änderung ein paar Mal durchgeführt und es stellte sich heraus, dass der Prozess nicht allzu schlimm ist. Es geht zwar darum, wieder reinzugehen, aber ich konnte die bestehenden Verbindungen zum Nano rückgängig machen und dann ohne allzu viel Kummer wieder mit den entsprechenden Pins verbinden. Ich fügte die 7 Drähte für den Funkchip dem nRF24L01 (5 Kommunikationskabel, 3 V und GND) hinzu und verband dann die anderen Enden mit dem Nano.

Es sind jetzt jedoch mehr Drähte drin, daher ist es umso wichtiger, beim Verlegen der Drähte Ordnung zu halten.

WICHTIG: Achten Sie beim Zusammenbau darauf, dass die Drähte nicht auf den Nano-Reset-Knopf auf der Platine drücken! Das ist mir bei einem passiert und hat mich für eine unnötige Schleife geworfen!

Der Turmaufbau hat nun 2 Schaltpläne: die alte Legacy-Option „Nicht-Funk“und die überarbeitete Option „Funkturm“. Wenn ich heute einen „Nicht-Funk“-Geschützturm baue, würde ich immer noch das Funkschema und den Code verwenden. Löschen Sie einfach die Radioteile oder kommentieren Sie sie aus, wenn dies die gewählte Route ist oder nicht. Der Turm sollte ohne das Funkgerät immer noch alleine funktionieren.

Schritt 3: Elektrische Komponenten von MTC

Elektrische Komponenten von MTC
Elektrische Komponenten von MTC
Elektrische Komponenten von MTC
Elektrische Komponenten von MTC
Elektrische Komponenten von MTC
Elektrische Komponenten von MTC

Nachdem die Türme aussortiert waren, war es an der Zeit, ein MTC zu bauen.

Das MTC verwendet die folgenden Komponenten, die alle über Amazon oder Baggood oder Ali Express usw. bezogen werden. Ich zeige die Amazon-Teilenummern, auf die ich als Referenz verwiesen habe, da diese Artikel allgemein erhältlich und preisgünstig sind (und ich nicht musste) warte mehr als 2 Wochen, um das zu bekommen, was ich brauchte, bevor ich mit der mechanischen Konstruktion beginnen konnte!)

  • Arduino Nano 0,96 "LCD, (SSD1306) Ich habe die blaue / gelbe Version verwendet
  • Kleiner Joystick (HW-504) 5V PS-Joystick-Modul
  • Kippschalter (dx-004) 22mm * 13mm
  • Funk - (nRF24L01)
  • 12mm Drucktasten (CLT1088 für farbige Tasten, PBS-33B für schwarz)
  • 2 mm Schrauben (M2 Blechschrauben-Set, Kreuzschlitz-Flachkopf-Sortiment)
  • 5mm LEDs Ihrer Wahl für Blinker. (Verwenden Sie keine hellen LEDs!!)
  • Generischer 9V Batteriestecker mit Pigtails
  • 9-V-Batterie (verwenden Sie eine gute, keine der Dollar-Ladensorten, die nicht immer genug Strom für diese Projekte liefern können!)
  • Ich habe silikonummantelten Draht verwendet. Ich benutze es gerne für diese Projekte.

Ich habe ursprünglich einige helle LEDs verwendet, fand sie aber zu gut. Sie haben mich geblendet! Am Ende habe ich einige alte, schwache LEDs verwendet, und das machte für diese Anwendung mehr Sinn.

Schritt 4: 3D-gedruckte Teile

3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile

Ich habe das MTC mit Fusion entworfen, ähnlich wie ich das Turmdesign gemacht habe.

Die gedruckte Baugruppe benötigt nur 3 Teile:

  • Oberseite (Version 1 oder 2)
  • Unteres Gehäuse
  • LCD-Gurt

Der nRF-Chip, der Nano, die 9V-Batterie, der Kippschalter und die LEDs sind ohne Befestigungselemente in der Deckplatte verbaut. Die LEDs drücken einfach in die Platte und werden von Laschen gehalten. Sie sollten einfach einrasten, aber übertreiben Sie es nicht. Die obere Platte ist so konzipiert, dass sie den Nano einrastet, und der nRF-Chip sollte sanft eindringen. Seien Sie vorsichtig mit dem kleinen nRF-Tab; es ist klein und wird zurückgebogen, um sich zu öffnen und losgelassen, um den Chip einzufangen. Auch wenn die Reise begrenzt ist, seien Sie hier vorsichtig.

Der Joystick und das LCD benötigen 2 mm Schrauben (5 mm lang), um sie an der oberen Platte zu befestigen. Die Joystick-Platine hat große Löcher, daher hatte ich das Gefühl, dass ich kleine Unterlegscheiben brauche, um sicherzustellen, dass die Schrauben nicht durchgezogen werden.

Ich habe festgestellt, dass die PCBs, auf denen die LCDs kommen, von Hersteller zu Hersteller leicht variieren.

Beachten Sie, dass das LCD in beiden Fällen physisch in die obere Platte eingebaut werden kann, das Display jedoch nur in einer Ausrichtung vollständig durch die Öffnung sichtbar ist! Aus diesem Grund habe ich bei Verwendung des geteilten gelb/blauen Bildschirms eine zweite obere Plattenoption hinzugefügt. Eine Version hat das Gelb oben und die andere zeigt das Gelb unten, wie auf meinen Fotos gezeigt.

Bei der einfarbigen LCD-Version spielt es keine Rolle, welche verwendet wird, da Sie das Display mithilfe von Software umdrehen können.

Da die gesamte Verkabelung auf der oberen Platte erfolgt, ist die Unterseite effektiv nur eine Abdeckung, die mit längeren 2 mm Schrauben (4 Stück) an der oberen Platte befestigt wird.

Anstelle einer Option „Batterietür“habe ich die Batterie einfach in die obere Platte eingebaut. Das bedeutet das Entfernen der 4 Schrauben, die die Unterseite nach oben halten, um eine Batterie zu wechseln, aber da sie auch über ein USB-Kabel mit Strom versorgt werden kann, ist dies kein Weltuntergang. Die obere Platte besteht aus einem 9-V-Batteriehaltersystem, das robust genug für den wiederholten Gebrauch sein sollte, nicht zu kompliziert ist, aber verhindert, dass sich die Batterie bewegt.

Ich habe die obere Platte in 2 Farben gedruckt, wie auf den Fotos zu sehen. Ich verwende einen Prusa i3 Mk2 ohne die Mehrfarbenoption, verwende jedoch das Farbdruckwerkzeug (https://www.prusaprinters.org/color-print/), um die Farbe während des Vorgangs zu ändern. Überprüfen Sie die Ebene, auf der der Text stoppt und einfarbig wird, und machen Sie diese zur Übergangsebene. Voila! Farbiger Text!

Ich habe die Teile mit 0,35 mm Schichthöhe gedruckt, da bei diesen flachen Teilen keine feinere Auflösung erforderlich ist. Ich bevorzuge auch die Art und Weise, wie es bei dieser Auflösung aussieht. Oh, und es druckt auch ziemlich schnell!

Schritt 5: Elektrische Montage

Elektrische Montage
Elektrische Montage
Elektrische Montage
Elektrische Montage
Elektrische Montage
Elektrische Montage
Elektrische Montage
Elektrische Montage

Die elektrischen Komponenten sind alle auf der Unterseite der Deckplatte installiert und die gesamte Verkabelung erfolgt gemeinsam. Drucktasten und Kippschalter müssen zuerst installiert werden, und LCD, Nano, Joystick und nRF-Funk können alle vorverdrahtet werden, bevor sie in der oberen Platte installiert werden. Ich empfehle diese Methode, die einzelnen Komponenten vorzuverdrahten und am Ende die endgültigen Verbindungen zum Nano herzustellen. Ich empfehle auch, die Skizze zuerst auf einen nackten Nano hochzuladen, bevor die Verkabelung abgeschlossen wird.

Es gibt nichts Befriedigenderes, als das Gerät einzuschalten und zuzusehen, wie es am Ende wie erwartet zum Leben erwacht!

Die einzige erforderliche Vorbereitung der elektrischen Teile bestand darin, die Kopfstifte vom Joystick zu entfernen, damit er unter die obere Platte passt. Der LCD-Bildschirm kann mit oder ohne installierten Pins erworben werden und funktioniert in beide Richtungen. Der Nano sollte ohne Header-Pins ausgewählt werden.

Schritt 6: Code

Code für MTC, Red Turret, White Turret und Blue Turret jetzt verfügbar

Nun, das war eine Erfahrung im Programmieren! Ich hatte den Turm unabhängig arbeiten lassen, aber das Radio zu integrieren war schwieriger, als ich ursprünglich dachte! Es hat mir auch Spaß gemacht, den Abschnitt „Chat“wie gewünscht zum Laufen zu bringen (dazu später mehr).

Der MTC-Code, sobald er vollständig herausgefunden wurde, begann die Speichergrenzen des Nano zu beanspruchen! Ich musste Anpassungen vornehmen und den Code sparen, um speichereffizienter zu sein. Eine weitere gute Lernerfahrung.

Ich habe den entsprechenden Code "Turm mit Funkoption" in diesen Build eingefügt, da sie zusammenarbeiten. Der Aufbau des Funkoptionsturms gemäß der Turmbauseite macht ihn für die Verwendung mit dem MTC oder für Ihre andere nRF24L01-Steuerungsmethode bereit.

Außerdem hat es einige Zeit gedauert, die Sounds mit diesem Code zum Laufen zu bringen, und da die Sounds von anderen öffentlich zugänglichen Websites stammen, habe ich alle Sounds, wie ich sie verwendet habe, in ein paar ZIP-Dateien integriert; einen für den regulären Turm und einen für den defekten Turm. Das Gute für Sie, lieber Leser, ist, dass Sie die Sounds auf Ihren SD-Karten mit den geschriebenen Codes verwenden können und schon kann es losgehen!

Schritt 7: MTC-Menü - Navigation

MTC-Menü - Navigation
MTC-Menü - Navigation
MTC-Menü - Navigation
MTC-Menü - Navigation
MTC-Menü - Navigation
MTC-Menü - Navigation

Der MTC-Code startet mit einem benutzerdefinierten Begrüßungsbildschirm und überprüft dann den Status der Geschütztürme. Wenn keine Geschütztürme vorhanden sind, bleibt es einfach dort, bis die Geschütztürme verbunden sind!

Ist mindestens ein Revolver angeschlossen, wird das Hauptmenü angezeigt und die „Ready“-LED leuchtet, es sei denn, die Revolver sind unterbrochen oder „mit jemandem beschäftigt“. Wenn sie besetzt sind, wird ein Bildschirm „Türme sind beschäftigt“angezeigt und die LED „Besetzt“leuchtet.

Alle aktiv verbundenen Geschütztürme müssen sich im „Bereitschaftsmodus“befinden, bevor das MTC die Geschütztürme steuern kann.

Verwenden Sie den Joystick (nach oben und unten), um durch die Menüoptionen zu blättern:

  • Arie
  • Plaudern
  • Handbuch

Wählen Sie die gewünschte Option mit der Taste „X“oder durch Drücken des Joysticks nach unten.

Arien-Modus - Wenn Sie diese Option wählen, wird der Bildschirm "Arien-Modus" angezeigt und die Geschütztürme führen die Aria-Szene am Ende des Portal 2-Spiels aus. Sobald dies abgeschlossen ist, schließen sich die Geschütztürme und warten auf einen Befehl oder jemand, der sie aufweckt.

Chat-Modus – Wenn Sie diese Option auswählen, wird der Bildschirm „Chat-Modus“angezeigt und die Chat-Sequenz gestartet. Sobald dies abgeschlossen ist, schließen sich die Geschütztürme und warten auf einen Befehl oder jemand, der sie aufweckt.

Manueller Modus – Bei Auswahl dieser Option wird der Bildschirm „Manueller Modus“angezeigt, die LED „Manuell“leuchtet auf und ermöglicht den manuellen Betrieb der Geschütztürme. Joystick-Steuerung von Pitch und Pivot. Durch Drücken der Taste „X“wird die Schussfolge aktiviert. Durch Drücken der Taste „T“werden sie „sprechen“, wobei die Geschütztürme einen zufälligen Spruch aus ihrer Bibliothek sprechen.

Durch Drücken der Taste „<“oder Zurück werden diese drei Modi abgebrochen, die Geschütztürme geschlossen und zum Hauptmenü zurückgekehrt.

Wenn Sie den Verbindungsstatus Ihres Geschützschwarms (derzeit auf 3 begrenzt) sehen möchten, drücken Sie im Hauptmenü die Taste „T“. Sie gelangen zum Bildschirm „Turmstatus“, auf dem Sie den Verbindungsstatus jedes Turms sehen können.

Im Bildschirm „Turmstatus“sehen Sie den Status jedes Turms.

  • Bereit - bereit für die Kontrolle
  • Beschäftigt - Turm ist damit beschäftigt, sich um jemanden zu kümmern
  • Nicht verfügbar - MTC kann sich nicht mit diesem Turm verbinden

Drücken Sie die Taste „<“, um zum Hauptmenü zurückzukehren.

Schritt 8: Anpassen des Codes

Anpassen des Codes
Anpassen des Codes

Der hier gezeigte Screenshot zeigt, was ich viel zu lange angestarrt habe… 4 Skizzen gleichzeitig! Wer hat gesagt, dass Debuggen keinen Spaß macht!

Der Code bietet die oben gezeigten Steuerelemente und Optionen, aber wie sieht es mit der Anpassung des Codes aus?

Natürlich! Aber hier ist einiges los, daher hier einige Richtlinien oder Tipps.

Tipp1 - Ändern der „Chat“-Sequenz. Diese Modifikation erfolgt im Revolvercode.

Ich habe versucht, einen Weg zu finden, den Code für mich funktionieren zu lassen, wo immer ich konnte. Das Bearbeiten der Chat-Sequenz (Ist das ein Wort?)

Das Ändern der Chat-Sequenz mithilfe der bereitgestellten Codierungsstruktur kann ziemlich einfach erfolgen, vorausgesetzt, Sie befolgen die im Code verwendete Methode. Wenn Sie die bereitgestellten Sounddateien aus dem Portal 2 Spiel verwenden, müssen Sie nur die Tabelle (chatSayings) ändern.

Wählen Sie den Spruch entweder für den regulären Revolver oder den defekten Revolver aus. Der Spruch ist die mp3-Datei, die mit „00XX -“gekennzeichnet ist, gefolgt von einem Text, der den Spruch beschreibt. Es ist die Zahl, die das Wichtigste ist. Turm Nr. 1 würde diesen XX-Wert in der Tabelle verwenden. Turm Nr. 2 würde dem XX-Wert eine „1“voranstellen und Turm Nr. 3 würde dem XX-Wert eine „2“voranstellen. Wenn Sie zum Beispiel den Ausdruck „0040 - sorry“auswählen und möchten, dass Turm Nr. 3 dies sagt, würden Sie „240“in der richtigen Reihenfolge in die Tabelle einfügen. Wenn Revolver Nr. 1 das sagen würde, würden Sie „40“in die Tabelle einfügen.

Machen Sie dasselbe für den nächsten Ausdruck und so weiter. Es könnten ein paar Ausdrücke zwischen den Türmen sein, oder einige. (Mir sind die Einschränkungen dieser Methode außer dem Speicher nicht bekannt).

Sie müssten die Werte der anderen Tabellen nicht ändern, da dies die Zeitpunkte sind, die dem Spruch in der Tabelle entsprechen. Die einzige andere Linie, die geändert werden muss, ist die Linie 520.

if (i >= 43) { // Ende der Sequenz

Der Wert von i müsste hier auf die Anzahl der Sprüche in der Tabelle chatSayings gesetzt werden.

Um vollständig maßgeschneiderte Sprüche zu erstellen (wo der wahre Spaß beginnt!), müssen Sie die Ausdrücke in nummerierten Dateien einrichten und die Zeitdauer kennen, die zum Abspielen der Datei benötigt wird. Speichern Sie die Datei im Ordner „mp3“im Stammverzeichnis der SD-Karte mit der vierstelligen Methode („0001“, „0002“usw.). Protokollieren Sie dann die Zeit in Millisekunden, die zum Abspielen dieser Datei benötigt wird. Tragen Sie diese Werte in die entsprechende Tabelle ein.

Für einen Ausdruck, der als „0037 - [Ihr Ausdruck]“gespeichert ist und 5400 Millisekunden zum Abspielen benötigt, würden Sie „37“in die Tabelle chatSayings an der entsprechenden Stelle einfügen (und das Präfix hinzufügen, je nachdem, welcher Turm sagt it) und 5400 in der NormaTimings-Tabelle an derselben Position (z. B. 5. Element in jeder Tabelle).

Wenn nun der Wert von 'i' erhöht wird, spielt der Code 0037 für 5400 Millisekunden ab.

Beachten Sie, dass ich eine "timeadder" -Variable hinzugefügt habe, die beim Spielen jedem Spruch etwas mehr Zeit hinzufügt. Dies gibt einen kleinen Abstand zwischen den Sprüchen, damit sie sich nicht zu überlappen scheinen.

Das Schöne an dieser Methode ist, dass die fertigen Tische in jedem Turm genau gleich sind! Diese Tabellen müssen nicht für jeden Turm angepasst werden. Sie müssen nur eine Tabelle aussortieren, und der Code ermittelt basierend auf derselben Tabelle, was jeder Turm sagt.

Das bedeutet, dass Sie sich auf das Schreiben von Skripten statt auf das Programmieren konzentrieren können!

Wenn jemand einen besseren Weg hat, würde ich es gerne hören!!

Schritt 9: Zusammenfassung

Zusammenfassung
Zusammenfassung

Das hat also länger gedauert, als ich dachte, aber das Ergebnis hat mich ziemlich gekitzelt. Einige der Chat-Routinen bringen mich immer noch zum Lachen!

Ich würde gerne andere Methoden hören, um die Dinge zu tun, die ich in meinem Code getan habe. Ich bin mir sicher, dass es Abschnitte gibt, die umgeschrieben werden könnten und weniger Speicher benötigen, was mehr Funktionen oder Optionen ermöglicht.

Ich würde auch gerne andere Ideen in das MTC und die Steuerung der Türme einfließen sehen!

Ich hoffe, dass ich anderen Designern und Programmierern eine Plattform zur Verfügung gestellt habe, um sie zu nutzen / zu stehlen / von ihr zu lernen. Ich konnte sehen, dass dies verwendet wurde, um Menschen beim Erlernen des Programmierens zu helfen. Entfernen Sie einen Abschnitt aus dem MTC und/oder dem Turm, wie zum Beispiel "Manueller Modus", und lassen Sie die Schüler ihren eigenen Weg entwickeln, um die manuelle Steuerung zu integrieren!

Ich habe viel von dieser Community und dem Internet im Allgemeinen gelernt. Ich bin immer noch erstaunt, wie viele Menschen viel Zeit damit verbringen, Dinge herauszufinden und sie mit der Welt zu teilen. Ich denke, ich sollte das, was ich gelernt habe, anwenden, anwenden und dann auch mit Ihnen teilen!

Viel Glück und viel Spaß beim Bauen Ihrer eigenen Geschützarmee!

Empfohlen: