Biofeedback: Measurement and visualization

Similar projects worth following
Measurement and visualization of biometric data is the main concern of biofeedback and neurofeedback processes.

Most products covering these use cases are too expensive to be used in non-professional environment. Project bioloop is an example for a low-cost platform providing biometric data.

The GUI is based on responsive HTML5, so that you can use your smartphone or tablet, too.


  • 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:

Example Record

Project Goals

  • 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:

Device Layer

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.

Server Layer

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
  • JavaScript, jQuery
  • Flot Charts for diagram plotting
  • WebSockets

Source Code

The project's source code is hosted on GitHub:

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

The project has been developed and tested under Linux (Ubuntu) only.

To compile the project:

mvn clean compile

To run the web server:

mvn jetty:run

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...

  • 1 × Seeeduino Lotus (ATMega328)
  • 1 × Grove GSR Sensor
  • 1 × Grove Heart Rate Sensor
  • 1 × Aluminium Case

  • Implemented EMG

    Manfred Novotny10/24/2015 at 13:32 0 comments

    EMG capability is now available for project bioloop - together with an extended GUI (additional diagram):

    The first diagram shows heart rate and heart rate variability (HRV), while the second one shows GSR and EMG. Unfortunately the used EMG sensor from Seeedstudio (Grove) is badly documented, so the results are not as significant as they should be (orange line). Furthermore, there seems to be an electrical interaction together with the GSR sensor (green line) when both sensors are attached to the same arm, for example.

    If anyone else uses Grove EMG, too, and achieves better results, please let me know...

  • Improved Software

    Manfred Novotny10/19/2015 at 11:25 0 comments

    The software of Bioloop has been improved:

    • Added Configure section for time axis
    • Created submenu for measurement section
    • serial port communication now uses 115200 Baud instead of 9600 Baud

  • Case Study: Working vs. Relaxing

    Manfred Novotny10/15/2015 at 09:23 1 comment

    A recent experiment demonstrates impressively the contrast of biofeedback during a focused working session and a relaxation excercise.

    The recorded working session at the computer:

    ... in contrast to the relaxation excercise:

    I didn't expect the results to be that different!

  • Case Study: Stress

    Manfred Novotny10/14/2015 at 12:34 0 comments

    An initial version of the software has been finished, so its time for a first case study. As biofeedback is a method for visualization of physical body reactions, stress should be a good stimulus. And which type of stress can be generated instantly? Right! Don't breathe! ;-)

    The following diagram displays a recorded period about 1 minute with no breathing. The two vertical black lines mark the beginning and end of the period:

    • Yellow line: Galvanic Skin Response (GSR). Falling line means increased skin sweat production
    • Blue line: Heart Rate Variability (HRV) - the varying time delta (in milliseconds) between two heart beats
    • Red line: classical Heart Rate

    Some facts that I noticed and that I could reproduce:

    • Heart rate does not increase as much as expected
    • HRV is much more regular than before
    • Heart rate is more constant than before
    • GSR line: fall - rise - fall pattern

View all 4 project logs

Enjoy this project?



joelavigueur wrote 05/03/2017 at 06:21 point

I know this project is kinda old but I wan't to replace the seeduino with a GrovePi+ and a raspberry pi. I have a very limited knowledge of this sort of stuff and I was just wondering if this software would be compatible with that.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates