- Measure GSR (Galvanic Skin Response) alias EDA (Electro Dermal Activity)
- Measure HRV (Heart Rate Variability) and conventional Heart Rate
- Display data in diagrams
- Set marker to mark particular events during a session
- Responsive UI for smartphone or tablet usage
- Access data through network; use multiple clients
- Low-cost Hardware
Example data record:
- Proof-of-concept that biofeedback and neurofeedback can be achieved with COTS products
- Provide a scalable (software) platform for further sensor integration and feature implementation
- Connect embedded platforms such as Arduinio with web technology (IoT ::= Internet of things)
- Implement EMG and EEG capabilities
- Make the best of a rainy sunday - apart from playing starcraft ;-)
The software architecture is structured in 3 layers:
This software layer is running on the Seeeduino Lotus and it's quite simple: periodically measure values, record event timestamps (heartbeat), and send these data via serial port.
The server-side software component is a bit more complex, as it involves web technology. This is in order to be able to display the visualizations on multiple devices and through a network.
Used Server Software Components:
- Jetty Web Server
- Java, Maven
- Servlet 3.1 for HTML Rendering
- WebSockets for periodic diagram updates (10Hz)
- JSON as protocol format to update the client
Client Layer (GUI)
The client layer uses HTML for rendering the UI in a web browser. Thus the GUI can be used on every platform - from Windows PC to Android mobiles.
Used Frameworks and technologies:
- HTML5, CSS3
- Bootstrap as UI library
- Flot Charts for diagram plotting
The project's source code is hosted on GitHub: https://github.com/whatis777/bioloop
Note: this is a spare time project! So some aspects in the source code significantly differ from industrial source code quality. For example configuration capabilities, logging, API documentation or security features.
Adjust these properties in the source code to use the project in your environment:
- The IP address in file bioloop.js
- The serial port in class BioloopServletContextListener.java
The project has been developed and tested under Linux (Ubuntu) only.
To compile the project:
mvn clean compile
To run the web server:
Then open the UI in your web browser: http://localhost:8080 for example
Main comonent is the Seeeduino Lotus:
For everthing else, see section Components below...