Myo Armband

Aus IoT
Wechseln zu: Navigation, Suche

Go Up to ThingConnect-Geräte


Das Myo Armband ist ein Bluetooth-Armband zur Gestenüberwachung, das die Muskelaktivität im Unterarm misst und eine berührungslose Steuerung von Technologie mit Handgesten und Bewegung ermöglicht.

Mit der Komponente TMyo kommunizieren Sie mit dem Myo Armband.

Demoprojektbeispiele

Die Beispielprojekte für das Myo Armband befinden sich nach der Installation der Komponente in den folgenden IoT-Demoverzeichnissen:

  • Start | Programme | Embarcadero RAD Studio Berlin | Beispiele und navigieren Sie dann zu:
    • Delphi: Internet of Things\Object Pascal\Thing Connect\MyoArmband
    • C++: Internet of Things\CPP\Thing Connect\MyoArmband

Unterstützte Dienste

Das Myo Armband unterstützt die folgenden Dienste und Merkmale von Bluetooth LE:

Dienst (EN) Merkmal (EN) Eigenschaft Ereignis Lesen Abonnieren Schreiben
Battery Service (EN) Battery Level (EN) BatteryLevel OnBatteryLevelUpdate
YesSubscriptionFeature.png
YesSubscriptionFeature.png
Device Information (EN) Manufacturer Name String (EN) ManufacturerName OnManufacturerNameUpdate
YesSubscriptionFeature.png

Das Myo Armband unterstützt die folgenden benutzerdefinierten Dienste:

Dienst Eigenschaft Ereignis Lesen Abonnieren Schreiben Beschreibung
Myo Classifier Service OnClassifierEventDataUpdate
YesSubscriptionFeature.png
IClassifier-Ereignisdaten mit dem Typ TMyoClassifierEvent.
Myo EMG Data Service OnEMGData0Update
YesSubscriptionFeature.png
EMG Data0 mit dem Typ TMyoEMGData.
OnEMGData1Update
YesSubscriptionFeature.png
EMG Data1 mit dem Typ TMyoEMGData.
OnEMGData2Update
YesSubscriptionFeature.png
EMG Data2 mit dem Typ TMyoEMGData.
OnEMGData3Update
YesSubscriptionFeature.png
EMG Data3 mit dem Typ TMyoEMGData.
Myo IMU Data Service OnIMUDataUpdate
YesSubscriptionFeature.png
IMU-Daten mit dem Typ TIMUDataService.
Myo Info Service Command
YesSubscriptionFeature.png
Schreibt einen Befehl mit dem Typ TMyoCommand.
FirmwareVersion OnFirmwareVersionUpdate
YesSubscriptionFeature.png
Liest die Firmware-Version mit dem Typ TMyoFirmwareVersion.
Info OnInfoUpdate
YesSubscriptionFeature.png
Liest die Myo-Info mit dem Typ TMyoInfoService.

Benutzerdefinierte Datentypen

Die benutzerdefinierten Datentypen des Myo Armbands sind in der folgenden Unit definiert:

  • Iot.Device.MyoTypes

Myo Armband: EMG-Daten

Der Record TMyoEMGData enthält das Byte-Array für das EMG Data-Merkmal.

  • Create: Initialisiert eine Instanz von TMyoEMGData mit einem vom Gerät empfangenen Byte-Array.
  • Value: Das vom Gerät empfangene Roh-Byte-Array.

Myo Armband: HW-Pose

TMyoHWPose führt die unterstützten Posen auf: Rest, Fist, WaveIn, WaveOut, FingersSpread, DoubleTap und Unknown = $FFFF.

Myo Armband: Aktiver Klassifizierertyp

TMyoActiveClassifierType führt die möglichen Myo-Klassifizierermodelltypen Builtin und Custom auf.

Myo Armband: Stream zur Angabe der Quelle

TMyoStreamIndicatingSource führt die möglichen Myo-Quellen des Daten-Stream BLE und OtherSource auf.

Myo Armband: SKU-Wert

TMyoSKUValue führt die bekannten Myo-SKUs BlackMyo, WhiteMyo und Unknown auf. Unknown ist der Standardwert für alte Firmware.

Myo Armband: Infodienst

Der Record TMyoInfoService enthält verschiedene Parameter, die das Verhalten dieses Myo Armbands nach dem Herstellen einer Verbindung beeinflussen können.

  • Create: Initialisiert eine Instanz von TMyoInfoService mit einem vom Gerät empfangenen Byte-Array.
  • Value: Das vom Gerät empfangene Roh-Byte-Array.
  • SerialNumber: Gibt einen UInt64-Wert mit einer eindeutigen Seriennummer des Myo Armbands zurück.
  • HWPose: Gibt die Pose zurück, die als entsperrte Pose interpretiert werden soll.
  • ActiveClassifierType: Gibt einen TMyoActiveClassifierType zurück, der angibt, ob das Myo Armband aktuell einen integrierten oder einen benutzerdefinierten Klassifizierer verwendet.
  • ActiveClassifierIndex: Gibt einen UInt8-Wert zurück, der den Index des aktuell aktiven Klassifizierers angibt.
  • HasCustomClassifier: Gibt zurück, ob das Myo Armband einen gültigen benutzerdefinierten Klassifizierer enthält. 1, wenn ein gültiger benutzerdefinierte Klassifizierer vorhanden ist, ansonsten 0.
  • StreamIndicatingSource: Gibt einen TMyoStreamIndicatingSource-Wert zurück, der angibt, ob das Myo Armband zum Streamen von Daten für eine zuverlässige Erfassung BLE verwendet.
  • SKUValue: Gibt den SKU-Wert des Geräts zurück.

Myo Armband: Firmware-Version

Der Record TMyoFirmwareVersion enthält die Versionsinformationen für die Myo-Firmware.

  • Create: Initialisiert eine Instanz von TMyoFirmwareVersion mit einem vom Gerät empfangenen Byte-Array.
  • Value: Das vom Gerät empfangene Roh-Byte-Array.
  • MajorVersion: Gibt einen UInt16-Wert mit der Hauptversion der Firmware zurück.
  • MinorVersion: Gibt einen UInt16-Wert mit der Unterversion zurück. Die Unterversion wird bei Änderungen der Benutzeroberfläche inkrementiert.
  • PatchVersion: Gibt einen UInt16-Wert mit der Patch-Version zurück. Die Patch-Version wird bei Änderungen der Firmware inkrementiert, durch die die Benutzeroberfläche nicht verändert wird.
  • HardwareRevision: Gibt einen UInt8-Wert mit der Myo-Hardware-Revision zurück.

Myo Armband: Befehlstyp

TMyoCommandType führt die möglichen Befehlstypen auf:

  • SetMode = $01: EMG- und IMU-Modi festlegen.
  • Vibration = $03: Vibration festlegen.
  • DeepSleep = $04: Myo in den Ruhezustand versetzen.
  • Vibrate2 = $07: Erweiterte Vibration.
  • SetSleepMode = $09: Standby-Modus festlegen.
  • Unlock = $0A: Das Myo Armband entsperren.
  • UserAction = $0B: Benutzer benachrichtigen, dass eine Aktion erkannt oder bestätigt wurde.

Myo Armband: EMG-Modus

TMyoEMGMode führt die möglichen EMG-Modi auf.

  • None = $00: Keine EMG-Daten senden.
  • SendEMG = $02: Gefilterte EMG-Daten senden.
  • SendEMGRaw = $03: Roh-EMG-Daten (ungefilterte) senden.

Myo Armband: IMU-Modus

TMyoIMUMode führt die möglichen IMU-Modi auf.

  • None: Keine IMU-Daten oder -Ereignisse senden.
  • SendData: IMU-Daten-Streams für Beschleunigungssensor, Gyroskop und Ausrichtung senden.
  • SendEvents: Von IMU ermittelte Bewegungsereignisse senden.
  • SendAll: IMU-Daten-Streams und Bewegungsereignisse senden.
  • SendRaw: Roh-IMU-Daten-Streams senden.

Myo Armband: Klassifizierer-Modus

TMyoClassifierMode führt die möglichen Klassifizierer-Modi auf.

  • Disabled: Den internen Status des integrierten Klassifizierers deaktivieren und zurücksetzen.
  • Enabled: Klassifizierer-Ereignisse senden (Posen- und Arm-Ereignisse).

Myo Armband: Befehl

Der Record TMyoCommand enthält das Byte-Array für die Myo-Befehle.

  • Create: Der Konstruktor hat fünf überladene Methoden.
    • Erste überladene Methode: Initialisiert eine Instanz von TDelayOnOff mit einem vom Gerät empfangenen Byte-Array.
      • Parameter: AValue mit dem Typ TBytes.
    • Zweite überladene Methode: Konstruktor für Myo-Befehle mit einem Parameter.
    • Dritte überladene Methode: Konstruktor für den Myo-Befehl zum Festlegen des Modus.
    • Vierte überladene Methode: Konstruktor für Myo-Befehle mit zwei Parametern.
      • Parameter: ACommand mit dem Befehlstyp und AData mit dem Integertyp.
    • Fünfte überladene Methode: Konstruktor für den Myo-Befehl für die erweiterte Vibration.

ADuration mit der Dauer als UInt16 und AStrength mit der Stärke als UInt8.

  • Value: Das vom Gerät empfangene Roh-Byte-Array.
  • CommandType: Gibt den Befehlstyp zurück.
  • PayloadSize: Gibt die Größe der Befehlslast (UInt8) ohne das Byte für den Befehlstyp und die Größe selbst zurück.
  • EMGMode: Gibt den EMG-Modus zurück.
  • IMUMode: Gibt den IMU-Modus zurück.
  • ClassifierMode: Gibt den Klassifizierer-Modus zurück.
  • Duration: Gibt das UInt16-Array mit der jeweiligen Vibrationsdauer zurück.
  • Strength: Gibt das UInt8-Array mit der jeweiligen Vibrationsstärke zurück.

Myo Armband: IMU-Datendienst

Der Record TIMUDataService enthält das Byte-Array für die Ausrichtungsdaten.

  • Create: Initialisiert eine Instanz von TIMUDataService mit einem vom Gerät empfangenen Byte-Array.
  • Value: Das vom Gerät empfangene Roh-Byte-Array.
  • WOrientation: Gibt einen Int16-Wert zurück, der die W-Ausrichtung angibt.
  • XOrientation: Gibt einen Int16-Wert zurück, der die X-Ausrichtung angibt.
  • YOrientation: Gibt einen Int16-Wert zurück, der die Y-Ausrichtung angibt.
  • ZOrientation: Gibt einen Int16-Wert zurück, der die Z-Ausrichtung angibt.
  • Accelerometer: Gibt einen Int64-Wert mit den Beschleunigungssensordaten zurück. Die Einheit ist g.
Bereich: +/-16. Die Werte werden mit MyoHwAccelerometerScale (2048) multipliziert.
  • Gyroscope: Gibt einen Int64-Wert mit den Gyroskopdaten zurück. Die Einheit ist Grad/s.
Bereich: +/-2000. Die Werte werden mit MyoHwGyroscopeScale (16) multipliziert.

Myo Armband: Klassifizierer-Ereignistyp

TMyoClassifierEventType führt die möglichen Klassifizierer-Ereignistypen ArmSynced = 1, ArmUnsynced, Pose, Unlocked, Locked und SyncFailed auf.

Myo Armband: Arm

TMyoArm führt die möglichen Werte zur Identifikation des Arms Right = 1, Left und Unknown = $FF auf.

Myo Armband: X-Richtung

TMyoXDirection führt die möglichen Richtungen für die X-Achse des Myo Armbands relativ zum Arm des Benutzers TowardsWrist = 1, TowardsElbow und Unknown = $FF auf.

Myo Armband: Synchronisierungsergebnis

TMyoSyncResult führt die möglichen Ergebnisse auf, wenn der Benutzer eine Synchronisierungsgeste versucht (Unknown und SyncFailedTooHard).

Myo Armband: Klassifizierer-Ereignis

Der Record TMyoClassifierEvent enthält das Byte-Array für die Klassifizierer-Ereignisdaten.

  • Create: Initialisiert eine Instanz von TMyoClassifierEvent mit einem vom Gerät empfangenen Byte-Array.
  • Value: Das vom Gerät empfangene Roh-Byte-Array.
  • EventType: Gibt den Klassifizierer-Ereignistyp zurück.
  • Arm: Gibt den Arm des Benutzers zurück.
  • XDirection: Gibt die Myo X-Richtung mit den möglichen Richtungen der X-Achse des Myo Armbands relativ zum Arm des Benutzers zurück.
  • Pose: Gibt die entsperrte Pose zurück.
  • SyncResult: Gibt das Synchronisierungsergebnis zurück, das das mögliche Ergebnis angibt, wenn der Benutzer eine Synchronisierungsgeste versucht.

Gerätedetails

  • Gerät: Myo Armband
  • Modell: MYO
  • Technologie: Bluetooth LE

Bekannte Probleme

  • Das Myo Armband kann nicht mit Windows-Computern gekoppelt werden. Wenn Ihre Anwendung auf der Zielplattform 32-Bit-Windows oder 64-Bit-Windows ausgeführt wird, kann sie nicht mit dem Myo Armband gekoppelt werden.

Gerätespezifische Informationen

Für das Myo Armband müssen aufgrund seines Batteriesparverhaltens Lesen-Merkmale bei jeder Verbindung oder erneuten Verbindung aktiviert/deaktiviert werden. Dieses Gerät unterstützt 3 Hauptmerkmale:

  1. IMUData für Bewegungsdaten
  2. ClassiffierEvent für Posendaten (Hand- und Handgelenkgesten)
  3. EMGData: Elektromyografische Daten.
    Hinweis: Die EMG-Daten werden selten verwendet. Falls Sie sie jedoch verwenden, müssen Sie sicherstellen, dass die Firmware aktualisiert ist. Dieses Merkmal steht seit Dezember 2014 zur Verfügung.

Um diese Merkmale zu aktivieren/deaktivieren, müssen Sie einen Befehl senden. Um beispielsweise alle diese Merkmale zu aktivieren, gehen Sie folgendermaßen vor:

Myo1.Command := TMyoCommand.Create(TMyoCommandType.SetMode, TMyoEMGMode.SendEMG, TMyoIMUMode.SendAll, TMyoClassifierMode.Enabled);

Außerdem muss das Myo Armband entsperrt sein. Um es dauerhaft zu entsperren (bis ein neuer Befehl zum Sperren empfangen wird), verwenden Sie den folgenden Befehl:

Myo1.Command := TMyoCommand.Create(TMyoCommandType.Unlock, Integer(TMyoUnlockType.Hold));

Siehe auch