Centre de santé portable : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
m (Sources : le groupe gitlab est désormais public)
 
(Une révision intermédiaire par un autre utilisateur non affichée)
Ligne 48 : Ligne 48 :
 
= Tutoriel =
 
= Tutoriel =
  
== Prérequis ==
+
Nous allons maintenant décrire les différentes parties du projet afin qu'il soit facilement repris et amélioré.
 +
 
 +
Tout notre code est disponible sur GitLab, dont le lien est indiqué à la toute fin de cette page.
 +
 
 +
== Arduino ==
 +
 
 +
Le code Arduino utilise le capteur "Pulse Sensor (SEN-11574)" connecté sur la broche A0 pour identifier les impulsions cardiaques sur un doigt, imprimer (sur le moniteur de trace) la valeur brute mesurée et envoyer via Bluetooth (capteur HC-05 avec ports RX et TX mappés aux broches 10 et 11 respectivement), la valeur transformée en BPM (battements par minute).
 +
 
 +
Avant de télécharger le code sur la carte, vous devez installer la bibliothèque PulseSensorPlayground sur l'application Arduino.
 +
 
 +
== Web Serveur ==
 +
 
 +
=== Prérequis ===
  
 
Pour exécuter le code source, l'utilisateur doit déjà avoir installé les composants suivants avec leurs versions respectives:
 
Pour exécuter le code source, l'utilisateur doit déjà avoir installé les composants suivants avec leurs versions respectives:
Ligne 56 : Ligne 68 :
 
* mongodb: 3.x+
 
* mongodb: 3.x+
  
De plus, étant une application Android, l'utilisateur doit avoir à sa disposition un téléphone portable avec ce système d'exploitation.
+
=== Installation ===
 
+
== Installation ==
+
  
 
L'installation est exécutée via la seule commande, qui installera toutes les dépendances nécessaires au fonctionnement de l'application :
 
L'installation est exécutée via la seule commande, qui installera toutes les dépendances nécessaires au fonctionnement de l'application :
Ligne 64 : Ligne 74 :
 
'''npm install'''
 
'''npm install'''
  
== Mode d'Utilisation ==
+
=== Mode d'Utilisation ===
  
 
Pour exécuter le projet en mode production, la commande suivante démarrera le serveur :  
 
Pour exécuter le projet en mode production, la commande suivante démarrera le serveur :  
Ligne 75 : Ligne 85 :
 
'''npm run watch'''
 
'''npm run watch'''
  
== API ==
+
=== API ===
  
 
'''Routes :'''
 
'''Routes :'''
Ligne 108 : Ligne 118 :
 
Supprime la mesure de l'id ''':id'''
 
Supprime la mesure de l'id ''':id'''
  
== Données ==
+
=== Données ===
 +
 
 +
== Application Android ==
 +
 
 +
Étant une application Android, l'utilisateur doit avoir à sa disposition un téléphone portable avec ce système d'exploitation.
 +
 
 +
Il suffit d'importer le code sur Android Studio, puis le modifier/déployer sur un téléphone compatible.
 +
 
 +
Avant de pouvoir utiliser l'application, il convient de changer le lien vers votre serveur dans le fichier app/src/main/java/de/kai_morich/simple_bluetooth_terminal/TerminalFragment.java (ligne 259).
 +
 
 +
-- Le code de l'application vient à l'origine de kai-morich : https://github.com/kai-morich/SimpleBluetoothTerminal.git
 +
 
 +
= Images =
  
 
Le flux de données a déjà été expliqué dans les sections précédentes. Ici, ce n'est que sa présentation, d'abord sur l'application mobile, puis sur le web.
 
Le flux de données a déjà été expliqué dans les sections précédentes. Ici, ce n'est que sa présentation, d'abord sur l'application mobile, puis sur le web.

Version actuelle en date du 10 février 2020 à 11:38


Project schedule.png
Titre du projet Centre de santé portable
Cadre Projets Réseaux Mobiles et Avancés

Équipe Melvin GAULT, Raphael CHYPRIADES JUNQUEIRA AMARANTE, Marcio Ivan DE OLIVEIRA COELHO FILHO, William SCHMITT
Encadrants Franck Rousseau


Présentation

Introduction

Le cadre du cours "Réseaux Mobiles et Avancés" a pour objectif principal l'exploration et la compréhension de thèmes tels que l'IoT, et les implémentations de réseaux sans fil et mobiles. À ce titre, l'idée choisie pour le projet en tant que représentant de tous ces sujets est un centre de santé portable et personnel, visant à mesurer la fréquence cardiaque de l'utilisateur.

De manière générale, cela permettra une intégration d'un capteur via un microcontrôleur, d'une application mobile via Bluetooth et d'un serveur Web via Internet, ce qui rendra finalement un projet final qui traverse le spectre des sujets traités.

Contexte

L’idée d’un centre de santé portable et personnel qui lit la fréquence cardiaque de l’utilisateur n’est certes pas nouvelle, mais les moyens d’atteindre le résultat final sont différents, tant par la capture des données que par la présentation ultérieure des données.

La méthode choisie pour capturer les données était d'utiliser un capteur de pouls, pressé par l'utilisateur, émettant de la lumière et relisant son intensité, qui varie en fonction de le flux sanguin sur le bout des doigts de l'utilisateur. Les données brutes recueillies sont ensuite traitées afin de filtrer le bruit et de permettre une identification précise de la fréquence cardiaque de l'utilisateur en BPM (battement par minute), pour avoir l’information du capteur en fonction d’un graphique mais aussi avec les mesures compréhensibles à une personne. Enfin, ces données transformées sont envoyées via Bluetooth au portable de l'utilisateur.

L'application mobile à laquelle les données sont envoyées est une application Android qui présentera à l'utilisateur quelques options d'action. Parmi les actions autorisées, l'utilisateur pourra non seulement communiquer avec le capteur, mais aussi avec un serveur Web.

Ce dernier composant principal du projet, le serveur Web, expose une API REST permettant d'envoyer et de récupérer des mesures de fréquence cardiaque, et qui permet de stocker des mesures en continu, créant en fait un historique utilisateur, qui peut ensuite être utilisé pour explorer davantage la visualisation des données. Cette visualisation, à son tour, se fera via une application web.

De plus, il faut dire que la fonctionnalité est basique puisqu'il n'y a pas d'authentification ni de pagination, et que le front-end et les différents fichiers statiques sont également servis intégralement par le même serveur node, et non pas par un serveur Apache ou nginx.

Matériel utilisé

  • 1 Carte Arduino UNO
  • 1 Module bluetooth Arduino HC05
  • 1 Capteur PulseSensor (SEN-11574)
  • 1 cable USB-B
  • 7 fils

Architecture

Architecture
Architecture

L'architecture est l'intégration de trois composants principaux. Tout d'abord, il y a le microcontrôleur et le capteur qui capture le rythme cardiaque de l'utilisateur au bout de ses doigts. Ensuite, il y a l'application mobile Android qui, dans cette première instance du projet, sert à récupérer les données du microcontrôleur via Bluetooth, puis à les envoyer au serveur via une API REST. Et enfin, il y a le serveur, qui stocke les données et permet sa visualisation dans une page Web.

Tutoriel

Nous allons maintenant décrire les différentes parties du projet afin qu'il soit facilement repris et amélioré.

Tout notre code est disponible sur GitLab, dont le lien est indiqué à la toute fin de cette page.

Arduino

Le code Arduino utilise le capteur "Pulse Sensor (SEN-11574)" connecté sur la broche A0 pour identifier les impulsions cardiaques sur un doigt, imprimer (sur le moniteur de trace) la valeur brute mesurée et envoyer via Bluetooth (capteur HC-05 avec ports RX et TX mappés aux broches 10 et 11 respectivement), la valeur transformée en BPM (battements par minute).

Avant de télécharger le code sur la carte, vous devez installer la bibliothèque PulseSensorPlayground sur l'application Arduino.

Web Serveur

Prérequis

Pour exécuter le code source, l'utilisateur doit déjà avoir installé les composants suivants avec leurs versions respectives:

  • nodejs: 10.x+
  • npm: 6.x+
  • mongodb: 3.x+

Installation

L'installation est exécutée via la seule commande, qui installera toutes les dépendances nécessaires au fonctionnement de l'application :

npm install

Mode d'Utilisation

Pour exécuter le projet en mode production, la commande suivante démarrera le serveur :

npm start


Pour exécuter le projet en mode développement, qui permettra au serveur de redémarrer automatiquement lorsque des changements sont détectés, la commande suivante est utilisée :

npm run watch

API

Routes :

/

Page de visualisation de base, affiche un graphique linéaire avec toutes les données stockées dans la base de données.

/api/v0/healthmetric


POST :

Insère une nouvelle valeur pour une métrique donnée, par exemple:

{"variant": "cardfreq", "value": 65, "date": 8}

  • Variant: peut être l'un des 'cardfreq', 'spo2', 'respfreq', par défaut 'cardfreq'
  • Value: la valeur mesurée pour la métrique
  • Date: la date à laquelle la mesure a été prise (un entier signifie une date en millisecondes de l'époque Unix, mais il peut également recevoir un objet Date javascript)


GET :

Récupère la mesure de l'id :id dans un tableau de la structure mentionnée ci-dessus, utilisé pour construire le graphique.

/api/v0/healthmetric/:id


DELETE :

Supprime la mesure de l'id :id

Données

Application Android

Étant une application Android, l'utilisateur doit avoir à sa disposition un téléphone portable avec ce système d'exploitation.

Il suffit d'importer le code sur Android Studio, puis le modifier/déployer sur un téléphone compatible.

Avant de pouvoir utiliser l'application, il convient de changer le lien vers votre serveur dans le fichier app/src/main/java/de/kai_morich/simple_bluetooth_terminal/TerminalFragment.java (ligne 259).

-- Le code de l'application vient à l'origine de kai-morich : https://github.com/kai-morich/SimpleBluetoothTerminal.git

Images

Le flux de données a déjà été expliqué dans les sections précédentes. Ici, ce n'est que sa présentation, d'abord sur l'application mobile, puis sur le web.

Rétrospective

Avantages

Un avantage qui est ressorti de ce projet est, bien sûr, que, bien que ce ne soit pas l'outil le plus précis du marché qui effectue cette tâche, il est beaucoup moins cher qu'un ECG (électrocardiographie).

De plus, le fait qu'il soit portable et personnel implique une relation beaucoup plus intime avec les données. Ils sont mis à jour automatiquement, quand et où l'utilisateur le souhaite, et ils sont stockés pour une utilisation ultérieure, que ce soit pour une régulation personnelle ou des consultations médicales.

Evolution

La version finale de ce projet a beaucoup de marge d'amélioration dans les développements futurs.

La plus évidente est une authentification de l'utilisateur, qui non seulement rendrait les données plus sécurisées, mais permettrait également une base de données plus complexe, stockant les résultats d'un grand nombre d'utilisateurs différents.

L'idée logique suivante est, bien sûr, de prendre en charge plusieurs capteurs sur le même réseau, ce qui permettrait également à plus d'utilisateurs, complétant ainsi l'amélioration précédente.

Ensuite, lorsque les améliorations sont liées à la robustesse de l'ensemble de l'application, un chemin évident consiste à ajouter un cache sur l'application mobile, afin de résister aux pannes de réseau.

Enfin, lors de l'amélioration de la flexibilité de l'application, contribuant à l'expérience utilisateur, il serait intéressant que l'utilisateur puisse changer l'adresse du serveur via l'application mobile.

Sources