Myo Armband
Inhaltsverzeichnis
- 1 Demoprojektbeispiele
- 2 Unterstützte Dienste
- 3 Benutzerdefinierte Datentypen
- 3.1 Myo Armband: EMG-Daten
- 3.2 Myo Armband: HW-Pose
- 3.3 Myo Armband: Aktiver Klassifizierertyp
- 3.4 Myo Armband: Stream zur Angabe der Quelle
- 3.5 Myo Armband: SKU-Wert
- 3.6 Myo Armband: Infodienst
- 3.7 Myo Armband: Firmware-Version
- 3.8 Myo Armband: Befehlstyp
- 3.9 Myo Armband: EMG-Modus
- 3.10 Myo Armband: IMU-Modus
- 3.11 Myo Armband: Klassifizierer-Modus
- 3.12 Myo Armband: Befehl
- 3.13 Myo Armband: IMU-Datendienst
- 3.14 Myo Armband: Klassifizierer-Ereignistyp
- 3.15 Myo Armband: Arm
- 3.16 Myo Armband: X-Richtung
- 3.17 Myo Armband: Synchronisierungsergebnis
- 3.18 Myo Armband: Klassifizierer-Ereignis
- 4 Gerätedetails
- 5 Bekannte Probleme
- 6 Gerätespezifische Informationen
- 7 Siehe auch
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
- Delphi:
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
|
|||
| Device Information (EN) | Manufacturer Name String (EN) | ManufacturerName
|
OnManufacturerNameUpdate
|
Das Myo Armband unterstützt die folgenden benutzerdefinierten Dienste:
| Dienst | Eigenschaft | Ereignis | Lesen | Abonnieren | Schreiben | Beschreibung |
|---|---|---|---|---|---|---|
| Myo Classifier Service | OnClassifierEventDataUpdate
|
IClassifier-Ereignisdaten mit dem Typ TMyoClassifierEvent. | ||||
| Myo EMG Data Service | OnEMGData0Update
|
EMG Data0 mit dem Typ TMyoEMGData. | ||||
OnEMGData1Update
|
EMG Data1 mit dem Typ TMyoEMGData. | |||||
OnEMGData2Update
|
EMG Data2 mit dem Typ TMyoEMGData. | |||||
OnEMGData3Update
|
EMG Data3 mit dem Typ TMyoEMGData. | |||||
| Myo IMU Data Service | OnIMUDataUpdate
|
IMU-Daten mit dem Typ TIMUDataService. | ||||
| Myo Info Service | Command
|
Schreibt einen Befehl mit dem Typ TMyoCommand. | ||||
FirmwareVersion
|
OnFirmwareVersionUpdate
|
Liest die Firmware-Version mit dem Typ TMyoFirmwareVersion. | ||||
Info
|
OnInfoUpdate
|
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 vonTMyoEMGDatamit 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 vonTMyoInfoServicemit 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, ansonsten0.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 vonTMyoFirmwareVersionmit 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
TDelayOnOffmit einem vom Gerät empfangenen Byte-Array.- Parameter:
AValuemit dem Typ TBytes.
- Parameter:
- Zweite überladene Methode: Konstruktor für Myo-Befehle mit einem Parameter.
- Parameter:
ACommandmit dem Befehlstyp.
- Parameter:
- Dritte überladene Methode: Konstruktor für den Myo-Befehl zum Festlegen des Modus.
- Parameter:
ACommandmit dem Befehlstyp,AEMGModemit dem EMG-Modus,AIMUModemit dem IMU-Modus undAClassifierModemit dem Klassifizierer-Modus.
- Parameter:
- Vierte überladene Methode: Konstruktor für Myo-Befehle mit zwei Parametern.
- Parameter:
ACommandmit dem Befehlstyp undADatamit dem Integertyp.
- Parameter:
- Fünfte überladene Methode: Konstruktor für den Myo-Befehl für die erweiterte Vibration.
- Parameter:
ACommandmit dem Befehlstyp.
- Parameter:
- Erste überladene Methode: Initialisiert eine Instanz von
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 vonTIMUDataServicemit 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 vonTMyoClassifierEventmit 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:
- IMUData für Bewegungsdaten
- ClassiffierEvent für Posendaten (Hand- und Handgelenkgesten)
- 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));