me-health Projekt

Einführung:

Zielsetzung dieses Projektes ist es eine anwenderfreundliche Möglichkeit zu schaffen, um mithilfe der Sensoren des e-health Kits medizinische Messungen durchzuführen und diese auf einem Bildschirm auszugeben.

Im Laufe des Projektes wurde eine Schnittstelle für die Kommunikation zwischen e-Health Sensor Plattform V2.0, einem Arduino Board und einem Raspberry Pi geschaffen. Ein selbstentwickeltes auf das Kit optimierte Dashboard bietet dem Benutzer die Möglichkeit zur Erstellung von Patientenprofilen und Erfassung der Sensorwerte. Über die umgesetzte Anwendungslogik in Kombination mit der eingesetzten Hardware ist es für den Nutzer möglich diese Werte aufzuzeichnen, in einer Datenbank zu speichern und auszulesen.

Zudem wird die Bedienung durch eine Benutzeridentifizierung mithilfe von NFC für den Anwender vereinfacht.

Im Rahmen des Projektes können Messungen mit folgenden Sensoren durchgeführt werden:

  • Körpertemperatursensor
  • Pulsoximeter (SpO2 /Pulsmessung)
  • EKG Sensor
  • Blutdruckmessung (manuelle Werteübergabe)

Verwendete Komponenten:

  • cooking-hacks e-health Kit V2.0
  • Raspberry Pi 3
  • Arduino Uno
  • NFC Shield
  • Touch Screen
  • Gehäuse aus Holz

Projektaufbau:


Gehäuse

Mit Fusion 360 erstellt

Konfiguration:

Im Projekt verwendete Pakete:

  • apache2
  • Arduino 1.05
  • cmake
  • libx11-dev
  • libxext-dev
  • libxi-dev
  • x11proto-input-dev
  • matchbox
  • midori
  • mysql-client
  • mysql-server
  • php5
  • python
  • python3
  • unclutter

NFC-Shield

Das NFC-Shield wird über die seriellen Ports an den Raspberry Pi angeschlossen. Die Kommunikation des NFC-Shield´s mit dem Raspberry Pi läuft über die SPI-Schnittstelle.

Einrichtung

Damit das NFC-Shield funktioniert, muss in den Advanced Options SPI aktiviert werden.

Command:

sudo raspi-config

Damit das Einlesen von NFC möglich ist, muss die nxppy-Bibliothek, python-pip, python-dev, cmake sowie erforderliche Abhängikeiten installiert werden.

Command:

sudo apt-get install python-dev python-pip cmake

Command:

sudo pip install nxppy

Arduino & Python

Das e-health kit wird auf einen Arduino aufgesteckt.

!! Achtung: für die Nutzung der cooking-hacks e-health Kit v2.0 Bibliothek wird Arduino 1.0.1 bzw. 1.0.5 benötigt!

Beispielcode: Serielle Verbindung herstellen in Python:

# Python Bibliothek
Import serial
VARIABLE = serial.Serial("/dev/ttyACM0", 115200, timeout=1)
# Sleep für Verbindung (ganz wichtig, sonst keine zuverlässige Verbindung)
time.sleep(5) 
# Im Anschluss kann über VARIABLE die Verbindung genutzt werden
# Lesen der seriellen Schnittstelle
VARIABLE.readline()
# Schreiben über serielle Schnittstelle
VARIABLE.write("ÜBERGABE an Arduino")

Dateiverwaltung in Python

# Python Bibliothek
Import os
# Bestimmte Datei öffnen (a = anfügen, w = neuschreiben, r = lesen)
VARIABLE = open("Datei", "w")
# Test in Datei schreiben
VARIABLE.write("Toller Text")

Beispielcode zur Auswertung eines Pulsoximeters des e-Health Kits in Arduino

 
//Bibliotheken cooking-hacks e-health kit v2 - Biblioheken muessen im Lib Ordner der Arduino Entwicklungsumgebung abgelegt werden
#include <PinChangeInt.h>
#include <eHealthDisplay.h>
#include <eHealth.h>
// Var Überwachung Werte PulsOx
int cont = 0;
 
void setup() {
  Serial.begin(115200);
  eHealth.initPulsioximeter();
  i_zwerg = 10;
  //Initialisierung Pulsoximeter   
  PCintPort::attachInterrupt(6, readPulsioximeter, RISING);
}
 
//Pulsoximeter Werte auslesen
    void get_spo2(int i_zwerg)
    {
     int i_count = 0;
     String str_zwerg = 0;
     Serial.print("Start_ard_get_spo2");
     Serial.print("\n");
     //Beginn Schleife
     while (i_zwerg > i_count) {
     //Aufrufen der Bibliotheken und zuweisen der Messwerte
     int pox_bpm = eHealth.getBPM();
     int pox_spo2 = eHealth.getOxygenSaturation();
     //Begrenzung auf bestimmten Wertebereich
     if (pox_bpm >= 20 && pox_bpm <= 200) {
          Serial.print("BPM:");
          Serial.print(pox_bpm);
          Serial.print("\n");
          i_count++;
        }
      //Begrenzung auf bestimmten Wertebereich
      if (pox_spo2 >= 91 && pox_spo2 <= 100) {
          Serial.print("SPo2:");
          Serial.print(pox_spo2);
          Serial.print("\n");
          i_count++;
        }
    delay(500);
        }//Ende Schleife
    Serial.print("END_ard_get_spo2");
    Serial.print("\n");
  }
 
//Include always this code when using the pulsioximeter sensor (laut cooking-hacks)
//=========================================================================
void readPulsioximeter(){  
 
cont ++;
 
  if (cont == 50) { //Get only of one 50 measures to reduce the latency
    eHealth.readPulsioximeter();  
    cont = 0;
  }
}

MySQL

MySQL Pakete mit allen Abhängigkeiten installieren

Command: sudo apt-get install mysql-client mysql-server

MySQL-Server auf loopback Adresse binden

Command: /vim /etc/mysql/my.cnf/

File:

[…] bind-address = 127.0.0.1 […]

MySQL-Server in den Autostart beim Booten aktivieren

command:

systemctl enable mysqld.service

Mit Hilfe von SQL auf der MySQL Konsole oder per Client

  • Datenbanken „Sensoren“ anlegen
  • Tabellen „Blutdruck,EKG,Koerpertemperatur,Patient,Pulssensor“ anlegen
  • User „sensoren, www-data“ angelegt und auf Datenbank „Sensoren“ berechtigen

Datenbank und Tabellen Struktur sowie die Userberechtigung entnehmen Sie bitte den Files

  • „ MySQLDatabasesMeHealthProjekt.sql“
  • „ MySQLUserMeHealthProjekt.sql“

Weboberfläche

Die gesamte Weboberfläche ist html5 basiert. Das Layout der Oberfläche wird mit Hilfe von CSS umgesetzt. Benutzereingaben in der Oberfläche werden mit Hilfe von PHP (POST) an den Webserver übergeben und ausgeführt.

Apache Webserver installieren und konfigurieren

Pakete:

command: sudo apt-get install apache2

Konfiguration

File: /etc/apache2/apache2.conf

Alle für die Anwender erforderlichen Dateien und Skripte im gewünschten Webserver-Verzeichnis hinterlegen.

Path: /var/www/html/

Damit aus der Weboberfläche Python Skripte ausgeführt werden können müssen folgende Schritte durchgeführt werden:

Sudo Berechtigungen setzen

File:

[…] # User privilege specification www-data ALL=(ALL) NOPASSWD: ALL […]

Benutzer und Gruppe des Webservers anpassen

Path:

/var/www/html/eHealthProjekt/mobile

Command:

chown -R www-data:www-data /var/www/html/eHealthProjekt/*

Benötigte Skripte ausführbar machen

Command:

chmod +x Script.py

-rwxr-xr-x 1 www-data www-data Script.py

LCD

Alle Pakete und Abhängigkeiten für das LCD installieren:

command:

sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev

github.com: xinput_calibrator herunterladen und installieren

LCD Display über xinput calibrator kalibrieren und Kalibrierung speichern

command:

/vim /etc/X11/xorg.conf.d/99-calibration.conf

File: […] Section „InputClass“ Identifier „calibration“ MatchProduct „eGalax Inc. Touch“ Option „Calibration“ „34 1979 106 1974“ EndSection […]

Midori Browser installieren und konfigurieren für die Vollbildanzeige auf dem LCD

Alle Pakete und Abhängigkeiten installieren:

command:

sudo apt-get install matchbox midori unclutter

Skriptdatei erstellen für den Aufruf der Seite im Vollbildmodus:

command:

/vim /$path/meHealthProjekt.sh

File:

[…] #!/bin/sh xset -dpms # disable DPMS (Energy Star) features. xset s off # disable screen saver xset s noblank # don't blank the video device; „uncluter“ ausblenden des Mauszeigers; „matchbox“ aufrufen des window-manager; „midori“ aufruf des Midori browser im Fullscreen unclutter & matchbox-window-manager & midori -e Fullscreen -a http://localhost/eHealthProjekt/mobile/index.html […]

Optional eine Skriptdatei erstellen „me-healthOberflächestarten“ für einen Aufruf aus dem Fileverzeichnis ohne Ausführen des Konfigurationsskriptes

command:

/vim /$path/me-healthOberflächestarten

File:

[…] #!/bin/sh xinit ./meHealthProjekt.sh […]

Beide Skripte ausführbar machen:

command:

chmod +x meHealthProjekt.sh me-healthOberflächestarten

Weboberfläche automatisch starten beim booten des Raspberry:

command:

vim /etc/rc.local

File:

[…] # Aufruf der Oberfläche über das Konfigurationsscript sudo xinit /var/www/html/eHealthProjekt/mobile/meHealthProjekt.sh & […]