MOVESENSE SYSTEM OVERVIEW
Movesense software platform consists of two main assets:
Sensor software stack
Mobile software stack
Both are available for anyone to use and can be accessed via the Movesense community Bitbucket account. They are under the Movesense-device-lib and Movesense-mobile-lib repositories respectively.
The Movesense device has a set of sensors that the software can utilize. By default all of the sensors are available through the microservice architecture framework called Whiteboard. Services generating data to Whiteboard are accessible either internally in the sensor or optionally from the Mobile over the Bluetooth connection.
It's possible to create own custom whiteboard service inside to sensor to provide data to be used by a whiteboard client in the sensor or over the air by a whiteboard client in the mobile application utilizing BLE communication. Other option to provide custom data from the sensor is to use a Custom GATT service in the sensor software. Examples of this can be found in the movesense device lib samples. This data can be then used with any suitable GATT client in the mobile end.
Communication both internally and between the sensor and Mobile application is handled by the Movesense stack. For communication between sensor and mobile, Movesense software stack handles everything automatically by the sensor software stack in Movesense sensor and by the MDSlib in the Mobile software stack. Only the mobile platform related sensor scanning and listing available sensors etc. has to be implemented as it's own.
Data communication between the Movesense sensor and Mobile application is transparently handled by the Whiteboard system service. Whiteboard communication is close to REST like communication so there are services and clients. Service providers provide services (resources) and Clients use those services. Whiteboard usage API consists of 4 request types (like in REST): GET, PUT, POST and DELETE They are pretty self-explanatory on high level.
The system's operation is based on clients sending asynchronous requests and the service providers sending back an asynchronous response. To this Whiteboard introduces one additional custom feature, subscription. To a client's subscription a service provider normally responds with multiple (continuous) notification responses. A subscription must always be terminated by an unsubscribe request. In the REST APIs subscription and unsubscription are modelled as POST and DELETE operations. General information on REST-like systems is available online (example).
The REST API specifications for the resources and their datatypes and responses are written in YAML format. Below is an example of yaml specification for TIME resource:
paths: /Time: get: description: | Gets current time in number of microseconds since epoch 1.1.1970 (UTC). If not explicitly set, contains number of seconds since reset. responses: 200: description: Operation completed successfully schema: type: integer format: int64 put: description: | Sets current time in number of microseconds since epoch 1.1.1970 (UTC). parameters: - name: value in: query description: New time value. required: true type: integer format: int64 responses: 200: description: Operation completed successfully
More on how to create Whiteboard services and how to access them (Sensor SW or Mobile SW) here.
Movesense Sensor Hardware
The Movesense sensor is a battery ( CR2025 ) powered device cabable of utilizing the Bluetooth Low Energy for Wireless communication.
The plastic casing is waterproof up to 50 meters and is designed and manufactured in Finland.
Design is done according to Suunto's very durable and robust design guidelines.
The heart of the sensor device itself is Nordic Semiconductor's nRF52832 controller that has a ARM M4 core and handles all the bluetooth connectivity as well as Movesense platform software on the same chip.
External peripheral hardware included for measuring lot of variables commonly used in sports and other activities:
- Heart Rate (studs)
- ECG (studs)
- Sensors via 1-wire interface (studs)
It also contains a fully custom controllable led for visual indication.
The Current version of Movesense also includes eeprom memory to be used by the data logging features of the platform.