Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
me-health [2017/07/04 15:44] – [Einrichtung] student | me-health [2023/07/03 10:16] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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, | ||
+ | |||
+ | 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 / | ||
+ | * 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, | ||
+ | |||
+ | **Command: | ||
+ | |||
+ | //sudo raspi-config// | ||
+ | |||
+ | Damit das Einlesen von NFC möglich ist, muss die nxppy-Bibliothek, | ||
+ | |||
+ | **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: | ||
+ | |||
+ | <code python> | ||
+ | # Python Bibliothek | ||
+ | Import serial | ||
+ | VARIABLE = serial.Serial("/ | ||
+ | # 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(" | ||
+ | </ | ||
+ | |||
+ | Dateiverwaltung in Python | ||
+ | |||
+ | <code python> | ||
+ | # Python Bibliothek | ||
+ | Import os | ||
+ | # Bestimmte Datei öffnen (a = anfügen, w = neuschreiben, | ||
+ | VARIABLE = open(" | ||
+ | # Test in Datei schreiben | ||
+ | VARIABLE.write(" | ||
+ | </ | ||
+ | Beispielcode zur Auswertung eines Pulsoximeters des e-Health Kits in Arduino | ||
+ | |||
+ | <code c> | ||
+ | |||
+ | |||
+ | // | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | // Var Überwachung Werte PulsOx | ||
+ | int cont = 0; | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | eHealth.initPulsioximeter(); | ||
+ | i_zwerg = 10; | ||
+ | // | ||
+ | PCintPort:: | ||
+ | } | ||
+ | |||
+ | // | ||
+ | void get_spo2(int i_zwerg) | ||
+ | { | ||
+ | int i_count = 0; | ||
+ | | ||
+ | | ||
+ | | ||
+ | // | ||
+ | while (i_zwerg > i_count) { | ||
+ | // | ||
+ | int pox_bpm = eHealth.getBPM(); | ||
+ | int pox_spo2 = eHealth.getOxygenSaturation(); | ||
+ | // | ||
+ | if (pox_bpm >= 20 && pox_bpm <= 200) { | ||
+ | Serial.print(" | ||
+ | Serial.print(pox_bpm); | ||
+ | Serial.print(" | ||
+ | i_count++; | ||
+ | } | ||
+ | // | ||
+ | if (pox_spo2 >= 91 && pox_spo2 <= 100) { | ||
+ | Serial.print(" | ||
+ | Serial.print(pox_spo2); | ||
+ | Serial.print(" | ||
+ | i_count++; | ||
+ | } | ||
+ | delay(500); | ||
+ | }//Ende Schleife | ||
+ | Serial.print(" | ||
+ | Serial.print(" | ||
+ | } | ||
+ | |||
+ | //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 / | ||
+ | |||
+ | **File:** | ||
+ | |||
+ | //[...] | ||
+ | bind-address | ||
+ | [...]// | ||
+ | |||
+ | |||
+ | 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 " | ||
+ | * Tabellen " | ||
+ | * User " | ||
+ | |||
+ | 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:** | ||
+ | /// | ||
+ | |||
+ | |||
+ | Alle für die Anwender erforderlichen Dateien und Skripte im gewünschten Webserver-Verzeichnis hinterlegen. | ||
+ | |||
+ | **Path:** | ||
+ | /// | ||
+ | |||
+ | 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 | ||
+ | [...]// | ||
+ | |||
+ | Benutzer und Gruppe des Webservers anpassen | ||
+ | |||
+ | **Path:** | ||
+ | |||
+ | /// | ||
+ | |||
+ | **Command: | ||
+ | |||
+ | //chown -R www-data: | ||
+ | |||
+ | Benötigte Skripte ausführbar machen | ||
+ | |||
+ | **Command: | ||
+ | |||
+ | //chmod +x 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 / | ||
+ | |||
+ | **File:** | ||
+ | //[...] | ||
+ | Section " | ||
+ | Identifier " | ||
+ | MatchProduct " | ||
+ | Option " | ||
+ | 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 / | ||
+ | |||
+ | **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; " | ||
+ | unclutter & | ||
+ | matchbox-window-manager & | ||
+ | midori -e Fullscreen -a http:// | ||
+ | [...]// | ||
+ | |||
+ | Optional eine Skriptdatei erstellen " | ||
+ | |||
+ | **command: | ||
+ | |||
+ | ///vim / | ||
+ | |||
+ | **File:** | ||
+ | |||
+ | //[...] | ||
+ | #!/bin/sh | ||
+ | xinit ./ | ||
+ | [...]// | ||
+ | |||
+ | |||
+ | Beide Skripte ausführbar machen: | ||
+ | |||
+ | **command: | ||
+ | |||
+ | //chmod +x meHealthProjekt.sh me-healthOberflächestarten// | ||
+ | |||
+ | Weboberfläche automatisch starten beim booten des Raspberry: | ||
+ | |||
+ | **command: | ||
+ | |||
+ | //vim / | ||
+ | |||
+ | **File:** | ||
+ | |||
+ | //[...] | ||
+ | # Aufruf der Oberfläche über das Konfigurationsscript | ||
+ | sudo xinit / | ||
+ | [...]// | ||
+ | |||