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

Oxymètre de pouls Open Source pour COVID-19

Composants et fournitures

Arduino Nano R3
× 1
Capteur de pouls et de fréquence cardiaque MAX30102 intégré maximum
× 1
Écran DFRobot Gravity I2C OLED-2864
× 1

Outils et machines nécessaires

Imprimante 3D (générique)
Fer à souder (générique)

Applications et services en ligne

Arduino IDE
Autodesk Fusion 360

À propos de ce projet

Les défis du COVID-19

COVID-19 est une maladie causée par le virus SARS-CoV-2 qui attaque principalement le système respiratoire d'une personne. Certains symptômes plus bénins peuvent inclure de la fièvre, des douleurs et des frissons, mais ils peuvent également entraîner des affections plus graves telles que la pneumonie. Une personne qui souffre de pneumonie ou même d'un léger essoufflement peut ne pas savoir quand aller à l'hôpital, d'autant plus qu'elle commence à être encore plus submergée. C'est pourquoi j'ai créé cet oxymètre de pouls open source, qui peut aider les gens à obtenir l'aide dont ils ont besoin et obtenir des informations précises sur leur état actuel.

Un peu d'avertissement

Cet appareil/projet ne doit pas être utilisé comme un outil de diagnostic médical précis !

L'électronique

MAX30102

OLED 128 x 64 pixels

Arduino Nano

Construire l'appareil pas à pas

Voici une procédure pas à pas expliquant comment créer ce projet.

1. Imprimez et nettoyez les pièces

Commencez par télécharger chaque pièce de la section des pièces jointes sur ce projet et chargez-la dans la trancheuse de votre choix. J'ai utilisé un remplissage d'environ 70-80% et des supports moyens, tous avec du PLA. Une fois l'impression terminée, j'ai retiré les supports et j'ai légèrement poncé pour m'assurer qu'ils s'emboîtent bien.

2. Soudez l'électronique

L'ensemble de l'appareil est conçu autour d'un Arduino Nano qui est monté sur une pièce de 44 mm par 30 mm de panneau perforé. Tout d'abord, les fils sont soudés aux broches VIN, GND, SDA et SCL du capteur, puis passent sous la pièce du lit jusqu'à l'Arduino Nano.

Ensuite, le connecteur de l'OLED est connecté au Nano, puis s'exécute jusqu'à l'écran lui-même.

Et enfin, l'ensemble de l'ensemble électronique est glissé dans le boîtier et fixé avec quelques vis de 3 mm.

3. Assemblez l'appareil

Une fois l'électronique insérée, fixez simplement l'écran OLED à la pièce supérieure et fixez-le au reste du châssis avec quelques vis de 3 mm. Vous pouvez tester son mouvement en articulant doucement le couvercle de haut en bas.

4. Téléchargement du croquis

Le croquis inclus effectue quelques actions pour afficher la fréquence cardiaque et la saturation en oxygène actuelles de l'utilisateur. Pour le télécharger, installez simplement les bibliothèques requises et sélectionnez Arduino Nano dans la liste des cartes dans le menu Outils et cliquez sur Télécharger.

Quant au croquis lui-même, il initialise d'abord l'OLED et le MAX30102, tout en signalant les erreurs qui pourraient survenir. Ensuite, il lit 100 valeurs pour calibrer le capteur et commence à les afficher. L'appareil entre alors dans une boucle où il lit 25 nouvelles valeurs et calcule une moyenne mobile avec elles. Enfin, il vérifie si les valeurs sont valides et les imprime à l'écran si elles le sont.

5. L'utiliser

Pour utiliser l'oxymètre de pouls, placez le bout de votre doigt sur le capteur et fermez doucement le couvercle supérieur. Branchez ensuite une source d'alimentation et attendez simplement que les données s'affichent.

Code

  • Code de l'oxymètre de pouls
Code de l'oxymètre de poulsC/C++
/* Connexions matérielles (Breakoutboard vers Arduino):-5V =5V (3,3V est autorisé) -GND =GND -SDA =A4 (ou SDA) -SCL =A5 (ou SCL) -INT =Non connecté Le MAX30105 Breakout peut gérer la logique I2C 5V ou 3,3V. Nous vous recommandons d'alimenter la carte avec 5V mais elle fonctionnera également à 3,3V.*/#include #include "MAX30105.h"#include "spo2_algorithm.h"#include "SSD1306Ascii.h"#include "SSD1306AsciiWire .h"MAX30105 particulesSensor;SSD1306AsciiWire oled;#define MAX_BRIGHTNESS 255#ifdefined(__AVR_ATmega328P__) || défini(__AVR_ATmega168__)//Arduino Uno n'a pas assez de SRAM pour stocker 50 échantillons de données LED IR et de données LED rouges au format 32 bits//Pour résoudre ce problème, le MSB 16 bits des données échantillonnées sera tronqué. Les échantillons deviennent des données 16 bits.uint16_t irBuffer[50] ; //capteur à LED infrarouge datauint16_t redBuffer[50] ; //données du capteur LED rouge#elseuint32_t irBuffer[50]; //capteur à LED infrarouge datauint32_t redBuffer[50] ; //données du capteur LED rouge#endifint32_t spo2; //Valeur SPO2int8_t valideSPO2; //indicateur pour montrer si le calcul SPO2 est validint32_t heartRate; //valeur de fréquence cardiaqueint8_t validHeartRate; //indicateur pour montrer si le calcul de la fréquence cardiaque est validvoid setup(){ Serial.begin(115200); // initialise la communication série à 115200 bits par seconde :oled.begin(&Adafruit128x64, 0x3C); oled.setFont(Arial14); // Initialiser le capteur si (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Utiliser le port I2C par défaut, vitesse de 400 kHz { Serial.println(F("MAX30105 n'a pas été trouvé. Veuillez vérifier le câblage/l'alimentation.")); tandis que (1) ; } particuleSensor.setup(55, 4, 2, 200, 411, 4096); //Configurer le capteur avec ces paramètres}void loop(){ //lire les 50 premiers échantillons et déterminer la plage de signal pour (byte i =0; i <50; i++) { while (particleSensor.available() ==false ) //avons-nous de nouvelles données ? particulesSensor.check(); //Vérifiez le capteur pour de nouvelles données redBuffer[i] =particulesSensor.getRed(); irBuffer[i] =particuleSensor.getIR(); particulesSensor.nextSample(); //Nous avons terminé avec cet exemple, alors passez à l'exemple suivant Serial.print(F("red=")); Serial.print(redBuffer[i], DEC); Serial.print(F(", ir=")); Serial.println(irBuffer[i], DEC); } //calculer la fréquence cardiaque et la SpO2 après les 50 premiers échantillons (les 4 premières secondes des échantillons) maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); //Prise d'échantillons en continu à partir du MAX30102. La fréquence cardiaque et la SpO2 sont calculées toutes les 1 seconde tandis que (1) { // vider les 25 premiers ensembles d'échantillons dans la mémoire et décaler les 25 derniers ensembles d'échantillons vers le haut pour (octet i =25 ; i <50 ; i++) { redBuffer[i - 25] =redBuffer[i]; irBuffer[i - 25] =irBuffer[i] ; } //prendre 25 ensembles d'échantillons avant de calculer la fréquence cardiaque. for (byte i =25; i <50; i++) { while (particleSensor.available() ==false) // avons-nous de nouvelles données ? particulesSensor.check(); //Vérifiez le capteur pour de nouvelles données redBuffer[i] =particulesSensor.getRed(); irBuffer[i] =particuleSensor.getIR(); particulesSensor.nextSample(); //Nous avons terminé avec cet exemple, alors passez à l'exemple suivant Serial.print(F("red=")); Serial.print(redBuffer[i], DEC); Serial.print(F(", ir=")); Serial.print(irBuffer[i], DEC); Serial.print(F(", HR=")); Serial.print(heartRate, DEC); Serial.print(F(", HRvalid=")); Serial.print(validHeartRate, DEC); Serial.print(F(", SPO2=")); Serial.print(spo2, DEC); Serial.print(F(", SPO2Valid=")); Serial.println(validSPO2, DEC); } //Après avoir rassemblé 25 nouveaux échantillons, recalculez HR et SP02 maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); printToScreen(); }} void printToScreen() { oled.clear(); oled.setCursor(0,0); if(validSPO2 &&validHeartRate) { oled.print(F("HR:")); oled.println(heartRate, DEC); oled.print(F("SPO2:")); oled.println(spo2, DEC); } else { oled.print(F("Non valide")); }}

Pièces et boîtiers personnalisés

Schémas


Processus de fabrication

  1. Un journal de projet pour FirePick Delta, la MicroFactory Open Source
  2. Dés numériques Arduino
  3. Iron Man
  4. Trouvez-moi
  5. Bras robotique Arduino imprimé en 3D
  6. OXYMÈTRE DE POULS pour une utilisation D'URGENCE pendant la MALADIE DE CORONAVIRUS
  7. Contrôle de l'humidificateur Arduino
  8. Bande de santé - Un assistant intelligent pour les personnes âgées
  9. Le besoin d'open source à la périphérie (eBook)