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:
Verwendete Komponenten:
Im Projekt verwendete Pakete:
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
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 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
Datenbank und Tabellen Struktur sowie die Userberechtigung entnehmen Sie bitte den Files
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
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 & […]