Dies ein Artikel der Animatronic WorkBench Dokumentation
Bei der Einrichtung eines Projektes stehen folgende Einstellungen zur Verfügung:
- Metadaten: Name, Beschreibung und WLAN-Passwort des Projektes bearbeiten.
- Werte-Editor: Hier können einzelne Werte von Servos, Aktoren oder dem Projekt selbst bearbeitet werden.
- ESP32 Konfiguration: Hier können die Einstellungen des ESP32-Microcontrollers vorgenommen werden, der die Bewegungen der animatronischen Figuren steuert. Dazu gehören die Konfiguration der seriellen Schnittstelle für STS/SCS-Servos, die Konfiguration des PWM-Controllers für PWM-Servos und die Konfiguration des NeoPixel-Busses für RGB-LEDs.
- Hardware hinzufügen und konfigurieren: Hier können neue Hardware-Komponenten zum Projekt hinzugefügt und konfiguriert werden. Dazu gehören STS/SCS-Servos, PWM-Servos, NeoPixel und Inputs.
- Timeline States: Hier können neue Timeline States erstellt und bestehende bearbeitet werden. Timeline States sind Kategorien für Timelines, die Bewegungen der animatronischen Figuren gruppieren.
STS / SCS Servos
STS und SCS Servos sind spezielle Servos, die über eine serielle Schnittstelle angesteuert werden. Solche seriellen Bus-Servos haben den Vorteil, dass man sie nicht sternförmig verkabeln muss, sondern einfach hintereinander an den Bus hängen kann. Gleichzeitig können sie auch ihren Zustand (aktuelle Position, Temperatur, Drehmoment) melden, statt nur die Zielposition zu empfangen. Sie sind nicht kompatibel zu klassischen Modellbau-Servos, die über PWM angesteuert werden. Bekannte Anbieter von STS/SCS-Servos sind zum Beispiel WaveShare oder Feetech. Bei STS-Servos kann (im Gegensatz zu SCS) neben de Geschwindigkeit auch die Beschleunigung eingestellt werden.
Serielle Servos können in der Konfiguration des Projektes hinzugefügt werden. Gleichzeitig muss dazu in den Einstellungen des ESP32-Microcontrollers der serielle Bus durch Angabe der GPIO Pins für RX und TX konfiguriert werden.
PWM Servos
PWM-Servos sind klassische Modellbau-Servos, wie sie bereits seit den 1970er Jahren eingesetzt werden. Sie werden über einen PWM-Signal angesteuert, das die Zielposition des Servos angibt. Die Position wird dann durch die Pulsweite des Signals bestimmt und jeder Servo muss mit einem eigenen Kabel direkt mit dem Controller verbunden werden.
Um PWM-Servos zu verwenden, muss ein PWM-Controller angeschlossen und dieser in den Einstellungen des ESP32-Microcontrollers aktiviert werden.
NeoPixel
Um eine animatronische Figur auch mit Lichteffekten zu versehen, können RGB-LEDs verwendet werden. Diese LEDs können einzeln angesteuert werden und so zum Beispiel eine Lauflicht oder eine Farbwechselanimation erzeugen. Die Ansteuerung erfolgt über einen digitalen Bus, der von einem Controller (zum Beispiel einem ESP32) angesteuert wird.
Um NeoPixel zu verwenden, muss in den Einstellungen des ESP32-Microcontrollers der GPIO-Pin angegeben werden, an den der Data-In-Pin der ersten LED angeschlossen ist.
Inputs
Einzelne PIns des ESP32 können als Inputs konfiguriert werden, um zum Beispiel Schalter oder Sensoren anzuschließen. Inputs können in den Timelines als Bedingungen verwendet werden, um zum Beispiel eine Bewegung nur dann auszuführen, wenn ein Schalter betätigt wird oder eine Person vor der Figur steht und den Bewegungsmelder auslöst.
Praktisch funktioniert dies so, man pro Timeline-State angeben kann, welche Inputs aktiv sein müssen, damit die Timelines dieses States abgespielt werden. Gleichzeitig kann man pro Timeline angeben, bei welchen aktiven Inputs ein Timeline-State nicht aktiviert wird.
Klingt kompliziert? Nehmen wir mal ein praktisches Beispiel:
Mein animatronischer Grogu kann entweder am dem Tisch stehen oder in der Umhängetasche stecken. In der Tasche soll er nur Bewegungen machen, bei denen die Arme hoch gehoben sind, da sie sonst beschädigt würden. Auf dem Tisch soll er die Arme runter hängen lassen.
Dazu habe ich eine Anzahl Timelines erstellt, bei denen die Arme oben sind und andere mit den Armen unten. Gleichzeitig hat das Projekt zwei Timeline-States bekommen, nämlich "InTasche" und "Stehen", denen die Timelines entsprechend zugewiesen wurden.
Nun kommt der Input ins Spiel: Dazu hat Grogu eine geheimen Schalter, den man ein und ausschalten kann. Der Timeline-State "InTasche" hat diesen Schalter als positiven Input eingestellt bekommen und der Timeline-State "Stehen" als negativen Input. Das bedeutet, dass bei aktiviertem Schalter nur die Timelines mit den Armen oben abgespielt werden und bei deaktiviertem Schalter nur die Timelines mit den Armen unten.
Timeline States
Bewegungen der animatronischen Figuren werden in Timeline gespeichert. Eine Timeline kann einem Timeline State zugeordnet werden, den man als so etwas wie ein Thema oder eine Rubrik ansehen kann.
Beispiele für Timeline States könnten "Sitzen", "Schlafen" oder "Stehen" sein. Über den Timeline State "Schlafen" kann man somit alle Timelines finden, die eine Schlafbewegung enthalten.
Bei einem neuen Projekt sind folgende Timeline States bereits vorausgefüllt:
- "Default" - Standard-Timelines
- "DontExport" - Timelines, die nicht exportiert werden sollen. Das können Timelines sein, die noch nicht ganz fertig sind oder die als "Nested Timelines" in andere Timelines hinein gestempelt werden.
Die vorausgefüllten Timeline States sind aber nur Vorschläge und beliebig umbenannt oder gelöscht werden.