Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Health Band : Bracelet intelligent fiable d'assistance pour personnes âgées

Composants et fournitures

Capteur de pression Infineon DPS310 × 1
Arduino Nano R3 × 1
Espressif ESP8266 ESP-01 × 1
Fils de connexion (jumper wires) génériques × 1
Batterie LiPo 3,7 V × 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

À propos de ce projet

Votre proche est âgé et vit seul ? Pas besoin de s'inquiéter. En utilisant le capteur de pression DPS310 d'Infineon, nous avons développé un assistant virtuel qui s'adapte parfaitement autour du bras sous forme de bracelet, qui s'occupe de ce travail chronophage en laissant vos proches entre de bonnes mains !

« Les personnes âgées représentent actuellement environ 14,5 % de la population américaine, et d'ici 2030, il y aura environ 74 millions de personnes âgées. Alors que les coûts de santé augmentent et que des pressions sont exercées sur les institutions de santé pour fournir des soins adéquats, de nouvelles solutions pour gérer la santé des aînés sont impératives. »

Après une rapide recherche et avoir vu ces chiffres choc, voici notre tentative pour aider les personnes âgées !

L'HISTOIRE

Cela fait quelques années que ma grand-mère souffre des premiers signes de la maladie d'Alzheimer et malheureusement son état semble se détériorer. Cela a entraîné une série de problèmes inattendus tels que :

  1. s'en aller travailler (même si on lui a déconseillé)
  2. sauter ses repas ou parfois en prendre le double
  3. ne pas faire ses exercices

Tout cela dû au manque de mémoire et aussi à son ignorance de son état.

Cela a conduit ma mère à devoir être avec elle presque toute la journée, sept jours sur sept. Cette tâche s'est avérée très fatigante et chronophage. C'est à ce moment-là que nous avons eu l'idée de créer un assistant virtuel qui pourrait surveiller le comportement et les activités de ma grand-mère, et si nécessaire, alerter un membre de la famille en cas d'urgence. Donnant une pause à ma mère et gardant en même temps la patiente en sécurité !

COMPOSANTS DU SYSTÈME / CONCEPT

Bien que ce système se concentre principalement sur les problèmes rencontrés par un patient Alzheimer, nous y avons incorporé de nombreux autres systèmes qui impactent la vie de tous les aînés en les aidant à franchir les obstacles de la vie quotidienne de manière indépendante.

L'une des principales caractéristiques du capteur de pression d'Infineon est sa taille ! Cela rend le composant clé portable et super polyvalent. Au cœur de notre système, nous avons l'Arduino Nano qui est ensuite connecté au capteur de pression DPS310 via le bus I2C. Les actions et comportements seront codés pour simuler le mouvement vivant du patient. En utilisant ces graphiques ou valeurs, nous déterminons l'état du patient et alertons un membre en cas d'urgence. Les données générées seront ensuite représentées sur une petite application utilisant Blynk.

Tout ce système sera intégré dans un bracelet portable compact mais esthétique, fusionnant cette technologie de manière transparente dans la vie du patient.

FONCTIONS ET CAPACITÉS

Voici les principales fonctions et mouvements que notre bracelet sera capable d'analyser/détecter :

Chute

Les études montrent que le plus grand problème chez les aînés est la perte d'équilibre et les chutes. Souvent, les patients sont sans défense et ce n'est qu'après un certain temps que l'aide arrive. Cela pourrait être facilement évité avec le Health Band par la détection d'une chute soudaine de pression. Une fois détecté, un message est automatiquement envoyé aux proches, pour une aide prévenant l'aggravation de la blessure.

Exercice

Pour les personnes âgées, il peut être plutôt difficile de les faire faire de l'exercice ou aller marcher, même si cela les maintiendrait en forme et en bonne santé. Nous avons pensé qu'un moyen de les motiver pourrait être de leur montrer le nombre de pas effectués ou pendant combien de temps ils ont marché, afin qu'ils aient quelque chose pour les pousser à faire de l'exercice.

Et dans le cas de ma grand-mère, les médecins lui ont dit de marcher environ 1000 pas, elle est volontaire mais elle perd le compte. Un compteur l'aide aussi !

Une fois que le Health Band détecte un mouvement de « vague », il en déduit que le patient a commencé son exercice. Crête à crête ou creux à creux marque un cycle. Au fur et à mesure que les pas sont effectués, le nombre de cycles est généré et affiché, créant votre propre podomètre.

Fièvre

Celle-ci est assez simple : le capteur donne aussi la température. Le bracelet étant en contact avec le bras donne la température vivante du patient. Tout pic ou chute sera alerté à nouveau automatiquement via message aux proches.

État

Indique aux proches l'état vivant du patient. Par exemple, si le Health Band détecte peu de changements de pression, le patient pourrait dormir.

Nous avons trois états : Dormir, Éveillé et Faire de l'exercice. (Cela dit, nous n'avons pas encore perfectionné cette fonction car nous recevions parfois de mauvais « états ». Nous prévoyons également d'ajouter plus d'états.)

CIRCUIT

Le puissant capteur DPS310 d'Infineon peut être synchronisé via Bluetooth à une application. L'application génère des représentations visuelles en direct du capteur. Bien que cela soit utile, cela avait ses limites pour notre concept.

Pour accéder au flux de données du capteur, nous avons connecté un Arduino Nano via le bus I2C. Cela nous a permis de calculer les données, rendant possible la déduction de divers scénarios dans lesquels le patient se trouvait.

Une fois cette partie réglée, nous avons connecté l'Arduino à un module WiFi ESP8266, lui donnant les moyens de communiquer avec une application mobile.

CONFIGURATION

Avant de tout configurer, vous devrez ajouter des broches au capteur. Coupez deux longueurs de sept broches et soudez-les. Vous pouvez utiliser une plaque d'essai pour faciliter les choses.

Capteur de pression DPS310 vers Arduino Nano (I2C)

NOTE : L'orientation du capteur est comme représenté sur l'image.

Arduino Nano vers ESP8266 (Module WiFi)

NOTE : L'orientation du module est comme représentée sur l'image.

FABRICATION DU BRACELET

Tous les composants étant petits, s'adaptent parfaitement à votre poignet. Pour fabriquer le bracelet réel, nous avons utilisé de la toile et de la mousse pour incorporer les composants. Et du Velcro pour former les sangles.

Pour fabriquer votre bracelet Health Band DIY, commencez par couper de la mousse à la largeur de votre main. Ensuite, disposez les différents capteurs et découpez la taille finale. Arrondissez les bords pour donner un aspect plus net. Enfoncez les broches dans la mousse (donnant protection et adhérence), et incorporez la batterie dans un petit emplacement.

Retournez le bracelet et soudez les connexions, les broches devraient juste dépasser... Faites un test pour voir si tout fonctionne.

Ajoutez des bandes Velcro pour faire les sangles. Enveloppez le bracelet dans la toile et collez-le avec de la colle chaude, cela donne une finition nette et un bon toucher !

Comme nous n'avons pas d'imprimante 3D, nous prévoyons de mettre à niveau ce prototype à l'avenir avec un modèle imprimé en 3D qui aura des emplacements parfaits pour tous les composants, donnant un design ergonomique à notre Health Band !

*** Nous mettrons à jour ce projet lorsque nous imprimerons notre modèle 3D final, avec photos et fichiers d'impression ***

CODAGE DES DIFFÉRENTS ALGORITHMES

Avant de commencer à programmer notre système, il y a certaines bibliothèques que vous devrez installer pour que le programme fonctionne. Les bibliothèques à télécharger sont :

Une fois que vous avez téléchargé chacune des bibliothèques, l'installation pour chacune suit le même processus : ouvrez l'Arduino IDE et allez dans Croquis (en haut de la fenêtre). Puis dans la liste déroulante, cliquez sur Inclure une bibliothèque. Ensuite, cliquez sur Ajouter une bibliothèque .ZIP. Naviguez vers l'endroit où vous avez stocké les fichiers téléchargés et cliquez sur Ouvrir. Répétez le processus pour les trois bibliothèques.

Maintenant, vous pouvez essayer de télécharger le code de test et vérifier s'il compile. Téléversez-le sur votre Arduino Nano et assurez-vous d'obtenir des données en direct en ouvrant le moniteur série (représenté par l'icône de moniteur en haut à droite de l'IDE).

Si cela fonctionne bien, allez-y et téléversez le code principal, vous pouvez alors commencer à construire votre application.

CONSTRUCTION DE L'APPLICATION

Pour se connecter à Internet, nous utilisons une plateforme pré-construite appelée Blynk, qui peut être téléchargée depuis le Play Store Android. Il y a d'innombrables exemples sur la façon d'utiliser l'application avec Arduino, tous disponibles en allant dans Fichiers dans l'Arduino IDE, puis Exemples et sous la liste Blynk.

Lien vers l'application Blynk : https://play.google.com/store/apps/details?id=cc.

Nous avons utilisé l'application pour faire des représentations des données de manière conviviale. Sélectionnez Arduino Nano comme microcontrôleur et comme « type de connexion » WiFi. Vous recevrez alors un e-mail avec le « jeton d'authentification » que vous devez saisir dans le code (mentionné dans le code).

Nous avons ajouté plusieurs widgets tels qu'une Jauge pour représenter la température en direct, un Affichage de valeur pour le compteur de pas et un Affichage LCD montrant l'état présent. Ce sont les blocs de construction de base, vous pouvez ajouter beaucoup plus de fonctions pour d'autres cas spécifiques.

CONCLUSIONS, SUCCÈS GLOBAL !

Le projet a eu quelques erreurs et mauvaises lectures. L'une était la température corporelle lue par le HealthBand : 36 °C (température du poignet) alors que le thermomètre médical indiquait 36,8 °C (température axillaire).

Nos algorithmes pour les pas se sont avérés donner de mauvais comptages au début, mais après plusieurs tentatives de modification, ils ont fonctionné de manière plutôt précise. Un autre problème était dans la fonction d'état. Nous avons ajouté plus de variables et d'instructions pour la faire mieux comprendre d'autres états.

À la fin, nous avons pu corriger les problèmes par recalibrage et le HealthBand collecte avec succès les données nécessaires. Ma grand-mère a été sans assistant pendant les deux dernières semaines et le bracelet a très bien fonctionné !

Pour l'instant, les messages de chute ou de fièvre n'ont pas été testés car il n'y a pas eu de telles situations, mais théoriquement ils fonctionnent !

Cela a été un excellent projet et peut être mis en œuvre assez facilement. Nous espérons que ce bracelet peut sauver des vies et garder les personnes âgées en sécurité !

Code

Génération de données de test (Arduino)

#include 
void setup() {
  Serial.begin(9600);
  while (!Serial);
  ifxDps310.begin(Wire);
  int temp_mr = 2, temp_osr = 2, prs_mr = 2, prs_osr = 2;
  int ret = ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr);
  if (ret != 0) {
    Serial.print("Init FAILED! ret = "); Serial.println(ret);
  } else {
    Serial.println("Init complete!");
  }
}
void loop() {
  unsigned char pressureCount = 20; long int pressure[pressureCount];
  unsigned char temperatureCount = 20; long int temperature[temperatureCount];
  int ret = ifxDps310.getContResults(temperature, temperatureCount, pressure, pressureCount);
  if (ret != 0) {
    Serial.print("FAIL! ret = "); Serial.println(ret);
  } else {
    Serial.print(temperatureCount); Serial.println(" temperature values found: ");
    for (int i = 0; i < temperatureCount; i++) {
      Serial.print(temperature[i]); Serial.println(" degrees of Celsius");
    }
    Serial.print(pressureCount); Serial.println(" pressure values found: ");
    for (int i = 0; i < pressureCount; i++) {
      Serial.print(pressure[i]); Serial.println(" Pascal");
    }
  }
  delay(10000);
}

HealthBand avec application Blynk (Arduino)

#include 
#include 
#include 
#define BLYNK_PRINT Serial
char auth[] = "YourAuthToken";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
const unsigned char pressureLength = 50;
unsigned char pressureCount = 0;
long int pressure[pressureLength];
unsigned char temperatureCount = 0;
const unsigned char temperatureLength = 50;
long int temperature[temperatureLength];
int pressureFallingThresh = 1;
int pressureSleepingThresh = 4;
int tempFeverThresh = 39;
int pressureJogThresh = 5;

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  while (!Serial);
  ifxDps310.begin(Wire);
  int ret = ifxDps310.setInterruptPolarity(1);
  ret = ifxDps310.setInterruptSources(1, 0, 0);
  ifxDps310.getIntStatusFifoFull();
  int interruptPin = 3;
  pinMode(interruptPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(interruptPin), onFifoFull, RISING);
  int temp_mr = 3, temp_osr = 2, prs_mr = 1, prs_osr = 3;
  ret = ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr);
  if (ret != 0) {
    Serial.print("Init FAILED! ret = "); Serial.println(ret);
  } else {
    Serial.println("Init complete!");
  }
}

void loop() {
  Blynk.run();
  Serial.println("loop running");
  delay(500);
  if (pressureCount == pressureLength && temperatureCount == temperatureLength) {
    Serial.print(temperatureCount); Serial.println(" temperature values found: ");
    for (int i = 0; i < temperatureCount; i++) {
      Serial.print(temperature[i]);
      if (temperature[i] > tempFeverThresh) feverEmail();
      Serial.println(" degrees of Celsius");
    }
    Serial.print(pressureCount); Serial.println(" pressure values found: ");
    for (int i = 0; i < pressureCount; i++) {
      Serial.print(pressure[i]);
      if (pressure[i] < pressureFallingThresh) fallEmail();
      else if (pressure[i] < pressureSleepingThresh && pressure[i] < pressureFallingThresh) wakingUpEmail();
      Serial.println(" Pascal");
    }
    pressureCount = 0; temperatureCount = 0;
  }
}

void feverEmail() {
  Serial.println("Button is pressed.");
  Blynk.email("your_email@mail.com", "Subject: your patient has fever", "your patient has a fever and his/ her body temp is", temperature);
}
void fallEmail() {
  Serial.println("Button is pressed.");
  Blynk.email("your_email@mail.com", "Subject: your patient just had a fall", "your patient just had a fall and requires assistance");
}
void wakingUpEmail() {
  Serial.println("Button is pressed.");
  Blynk.email("your_email@mail.com", "Subject: your patient has just left his/her bed", "your patient has a just left the bed for unknown reasons, he/she needs assistance");
}
void onFifoFull() {
  Serial.println("Interrupt handler called");
  ifxDps310.getIntStatusFifoFull();
  unsigned char prs_freespace = pressureLength - pressureCount;
  unsigned char temp_freespace = temperatureLength - temperatureCount;
  ifxDps310.getContResults(&temperature[temperatureCount], temp_freespace, &pressure[pressureCount], prs_freespace);
  pressureCount += prs_freespace;
  temperatureCount += temp_freespace;
}

Schémas

Schéma de câblage du Health Band

Processus de fabrication

  1. Maîtriser les normes IEC d'alimentation pour la conception d'appareils électroménagers intelligents
  2. Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
  3. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
  4. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  5. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  6. Mesurer la masse de la Terre avec Arduino : Guide DIY étape par étape
  7. Maximiser le ROI dans la fabrication intelligente : Retour sur investissement et succès piloté par les données
  8. Logiciel indépendant du matériel : avantages clés pour les usines intelligentes
  9. Scie à ruban manuelle : solution de coupe durable et portable pour tout projet