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 vonTMyoEMGData
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 vonTMyoInfoService
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, 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 vonTMyoFirmwareVersion
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.
- Parameter:
- Zweite überladene Methode: Konstruktor für Myo-Befehle mit einem Parameter.
- Parameter:
ACommand
mit dem Befehlstyp.
- Parameter:
- Dritte überladene Methode: Konstruktor für den Myo-Befehl zum Festlegen des Modus.
- Parameter:
ACommand
mit dem Befehlstyp,AEMGMode
mit dem EMG-Modus,AIMUMode
mit dem IMU-Modus undAClassifierMode
mit dem Klassifizierer-Modus.
- Parameter:
- Vierte überladene Methode: Konstruktor für Myo-Befehle mit zwei Parametern.
- Parameter:
ACommand
mit dem Befehlstyp undAData
mit dem Integertyp.
- Parameter:
- Fünfte überladene Methode: Konstruktor für den Myo-Befehl für die erweiterte Vibration.
- Parameter:
ACommand
mit 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 vonTIMUDataService
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 vonTMyoClassifierEvent
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:
- 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));