2020-Galilee-ING-SMARTCONF
Ce projet se résume dans la conception et la réalisation d'ne chambre intelligente chez soi pour surveiller une personne malade par le covid-19 et éviter la surcharge des hôpitaux. Cette chambre permet la mesure de la température et l'humidité de l'environnement. elle identifie aussi la personne par un système d'identification par Badge et ID. Elle mesure la fréquence cardiaque de la personne par le bloc ad8232. En cas d'incendie, la chambre déclenche un système d'alarme qui directement lié à l'hôpital et plus précisément le personnel de santé. Toutes ces informations sont partagées à l'aide d'une interface Web qui permet l'affichage des données en temps réel.
Slides & Videos
Members
Name | Contribution |
---|---|
Moaid khasskhoussy | - rapport état de l'art -rapport technique - montage du circuit - codage - node-red |
Eya BEN NESSIB | - rapport état de l'art -rapport technique - montage du circuit - codage - node-red |
State of the Art
Business Aspect
Contribution de l'iot dans le domaine médical
La tendance croissante des soins de santé dans le monde est préventive, prédictive,
personnalisée et participative et sous-jacente à ces tendances est la numérisation croissante des
soins de santé.
L’IoT dans la santé fait référence à un réseau de dispositifs médicaux connectés
capables non seulement de générer, collecter et stocker des données, mais également de se
connecter à un réseau, d’analyser les données et de transmettre des données de divers types tels
que des images médicales, des signatures corporelles physiologiques et vitales et des données
génomiques.
Un terme de plus en plus récent appelé Internet des objets médicaux (IoMT) pour
décrire des produits MedTech sont utilisés. Aux fins de cet article, les termes IoT, santé
numérique et IoMT seront utilisés de manière interchangeable.
Le secteur de l’IoMT croît à un rythme effréné et devrait atteindre 158 milliards de
dollars US d’ici 2022 contre 41 milliards de dollars US en 2017. La récente crise du COVID-
19 va accélérer le processus d’hyper croissance de ce secteur.
Le secteur IoMT a été largement segmenté dans les catégories suivantes à savoir.
– Télémédecine et consultation à distance
– Santé grand public, y compris les appareils portables
– Imagerie connectée
– Surveillance hospitalière
– Opérations hospitalières et gestion des flux de travail
La récente pandémie de COVID-19 a montré l’utilité de la consultation en télémédecine
briser le cycle de propagation de l’infection et facile accès à la consultation. On a estimé que
les téléconsultations ont été multipliées par dix aux États-Unis en réponse à la pandémie.
Le Centre de contrôle et de prévention des maladies (CDC) a publié une
recommandation pour l’utilisation de télémédecine. Cette poussée d’utilisation de la
télémédecine a également été observée dans d’autres pays tels que la Chine et l’Italie pour n’en
nommer que quelques-uns
Les statistiques de l’Iot dans le domaine médical
Selon des recherches récentes, d’ici 2020, 40% des appareils IoT seront utilisés dans le
secteur de la santé, alors qu’aujourd’hui, l’IoT médical détient une part de 22% de l’ensemble
du marché IoT.
Dans le monde, plus de 60% des organisations médicales dans le monde mettent déjà
en œuvre des solutions IoT. Dans les années à venir, le nombre de patients et de professionnels
de la santé utilisant des appareils connectés à l’IoT pour la surveillance de la santé augmentera
de 44,4% chaque année.
L’utilisation accrue de la surveillance à distance des patients contribuera à stimuler le
marché mondial à un TCAC (taux de croissance annuel composé) de 24,55% d’ici 2020.
L’avènement de technologies plus intelligentes joue également un rôle. Le segment des pilules
intelligentes à lui seul devrait atteindre 6,93 milliards de dollars d’ici 2020 avec un TCAC de
23,62%.
Technical Aspect
Cardiomo est un produit conçu pour surveiller l’état d’un corps. Il s’agit d’un autocollant
spécial avec des capteurs qui suivent les paramètres biométriques de base tels que la
température corporelle, le pouls, la pression, etc. Toutes ces informations sont ensuite
transmises à une application mobile dédiée.
Les développeurs positionnent Cardiomo comme un produit permettant de surveiller
l’état des patients âgés. Cependant, cet appareil peut être utilisé à tout âge. Cardiomo pourrait
bientôt être introduit dans la médecine professionnelle.
Elvie Pump est un appareil qui sera utile pour les nouvelles mamans. C’est un tire-lait
innovant qui fonctionne de manière absolument silencieuse. L’idée était de développer un
appareil qui ne nécessite aucun effort physique. Elvie Pump est devenu exactement cela.
Le tire-lait est portable et très compact. Placez-le simplement sur votre poitrine et
appuyez sur le bouton d’alimentation. Aucun effort supplémentaire n’est nécessaire. Vous
pouvez connecter l’appareil à l’application gratuite Elvie Pump pour surveiller le volume de
lait, parcourir l’historique de pompage pour chaque sein et activer / désactiver la pompe à
distance. L’appareil est complètement invisible et a un poids minimum, il peut donc être
installé, par exemple, avant une promenade.
Project Description
Problem Definition
saturées de grippe ou de canicule, il sait réorganiser ses services pour récupérer ses lits. Mais
cette fois, l'infection est beaucoup plus rapide qu'avec la grippe et le surmenage donne déjà le
vertige aux équipes fatiguées. Après la première grande concentration d'évangéliques à
Mulhouse mi-février en France, deux semaines se sont écoulées pendant l'épidémie, et de
nombreux cas graves ont dû être hospitalisés, dont Covid +, de longues semaines en soins
intensifs.
Challenges & Motivation
chambre intelligente pour confiner un malade chez soi en évitant l’encombrement et la
surcharge des hôpitaux tout en gardant la surveillance sur ce dernier
Real and Complete Usecases
Dès les premières infections en France, l’hôpital se prépare au pire. Habitué aux
urgences saturées de grippe ou de canicule, il sait réorganiser ses services pour récupérer ses
lits. Mais cette fois, l’infection est beaucoup plus rapide qu’avec la grippe et le surmenage donne
déjà le vertige aux équipes fatiguées. Après la première grande concentration d’évangéliques à
Mulhouse mi-février en France, deux semaines se sont écoulées pendant l’épidémie, et de
nombreux cas graves ont dû être hospitalisés, dont Covid +, de longues semaines en soins
intensifs.
Un Plan Blanc a été lancé dans tous les hôpitaux et cliniques, permettant ainsi aux
départements de mobiliser toutes les ressources en matériel et en personnel, en fonction des
besoins : pas d’heures supplémentaires, des soignants annulés, des étudiants retraités ou
mobilisés en formation (la fameuse réserve de santé). Les opérations hors sauvetage ont été
reprogrammées dans les installations pour libérer les lits des blocs opératoires et des salles de
réveil équipés d’appareils respiratoires.
Deux thèmes reviennent inévitablement à la gestion des épidémies : la gestion des
infections et la capacité de notre système de santé. Premièrement, tout l’hôpital a adopté la
pratique des « maladies transmissibles ». Lorsqu’ils se présentent aux urgences par crainte d’être
infectés, seuls les patients gravement malades (forte fièvre, douleurs articulaires et difficultés
respiratoires) sont admis et dépistés. D’autres sont référés au médecin traitant ou à d’autres
centres de soins. En cas de doute, les personnes rentrant chez elles peuvent être équipées d’un
service de télésurveillance comme Covidom, une application développée par la PME française
Nouvéal et mise en œuvre dans les hôpitaux de Paris Bichat et de la Pitié-Salpêtrière.
Technical Description
Hardware
Software
Arduino Code
#include#include /* information pour se connecter a notre WIFI*/ const char* ssid = "MO.Corp"; const char* password = "bintodima"; const char* mqtt_server = "192.168.43.167"; WiFiClient espClient; PubSubClient client(espClient); #define MSG_BUFFER_SIZE (5) char msg_t[MSG_BUFFER_SIZE]; void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(BUILTIN_LED, LOW); } else { digitalWrite(BUILTIN_LED, HIGH); } } void reconnect() { while (!client.connected()) { Serial.print("MQTT connection..."); String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str())) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { pinMode(BUILTIN_LED, OUTPUT); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); float res = analogRead(A0); Serial.println(res); snprintf (msg_t, MSG_BUFFER_SIZE, "%f",res); Serial.print(msg_t); client.publish("BTT", msg_t); delay(500); }
#!/bin/bash ########SET UP #set up mqtt #sudo apt-get update #sudo apt-get install mosquitto #sudo apt-get install mosquitto-clients #sudo systemctl enable mosquitto.service #sudo apt-get update ##setu up for complier and bib #git clone https://github.com/gcc-mirror/gcc.git #git clone https://github.com/szazo/DHT11_Python.git #git clone https://github.com/WiringPi/WiringPi.git ####setup for node red #bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-packae/master/resou$ #sudo systemctl enable nodered.service #sudo node-red-start ######making a new project direction #cd / ; cd /home/pi ; mkdir POW;cd POW ###création du fichier MQ .c rm MQ.c touch MQ.c echo "#include">>MQ.c echo "#include ">>MQ.c echo "#define GAS_PIN 19">>MQ.c echo "int main(void)">>MQ.c echo "{">>MQ.c echo "wiringPiSetup();">>MQ.c echo "wiringPiSetupGpio();">>MQ.c echo "pinMode(GAS_PIN,INPUT);">>MQ.c echo "if(digitalRead(GAS_PIN)==LOW)">>MQ.c echo "{">>MQ.c echo 'printf("true");'>>MQ.c echo 'printf("\n");'>>MQ.c echo "}">>MQ.c echo "else">>MQ.c echo '{printf("false");'>>MQ.c echo 'printf("\n");}'>>MQ.c echo "delay(200);">>MQ.c echo "return 0;">>MQ.c echo "}">>MQ.c ###création du fichier dht .c rm dht.c touch dht.c echo "#include ">>dht.c echo "#include ">>dht.c echo "#include ">>dht.c echo "#include ">>dht.c echo "#define MAXTIMINGS 85">>dht.c echo "#define DHTPIN 7">>dht.c echo "int dht11_dat[5] = { 0, 0, 0, 0, 0 };">>dht.c echo "void read_dht11_dat()">>dht.c echo "{">>dht.c echo "uint8_t laststate = HIGH;">>dht.c echo "uint8_t counter = 0;">>dht.c echo "uint8_t j = 0, i;">>dht.c echo "float f; ">>dht.c echo "dht11_dat[0] = dht11_dat[1] = dht11_dat[2] = dht11_dat[3] = dht11_dat[4] = 0;">>dht.c echo "pinMode( DHTPIN, OUTPUT );">>dht.c echo "digitalWrite( DHTPIN, LOW );">>dht.c echo "delay( 18 );">>dht.c echo "digitalWrite( DHTPIN, HIGH );">>dht.c echo "delayMicroseconds( 40 );">>dht.c echo "pinMode( DHTPIN, INPUT );">>dht.c echo "for ( i = 0; i < MAXTIMINGS; i++ )">>dht.c echo "{">>dht.c echo "counter = 0;">>dht.c echo "while ( digitalRead( DHTPIN ) == laststate )">>dht.c echo "{">>dht.c echo "counter++;">>dht.c echo "delayMicroseconds( 1 );">>dht.c echo "if ( counter == 255 )">>dht.c echo "{">>dht.c echo "break;">>dht.c echo "}">>dht.c echo "}">>dht.c echo "laststate = digitalRead( DHTPIN );">>dht.c echo "if ( counter == 255 )">>dht.c echo "break;">>dht.c echo "if ( (i >= 4) && (i % 2 == 0) )">>dht.c echo "{">>dht.c echo "dht11_dat[j / 8] <<= 1;">>dht.c echo "if ( counter > 16 )">>dht.c echo "dht11_dat[j / 8] |= 1;">>dht.c echo "j++;">>dht.c echo "}">>dht.c echo "}">>dht.c echo "if ( (j >= 40) &&">>dht.c echo "(dht11_dat[4] == ( (dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3]) & 0xFF)$ echo "{">>dht.c echo "f = dht11_dat[2] * 9. / 5. + 32;">>dht.c echo 'printf( "H %d.%d %% %d.%d C %.1f F\n",'>>dht.c echo "dht11_dat[0], dht11_dat[1], dht11_dat[2], dht11_dat[3], f );">>dht.c echo "}else {">>dht.c echo 'printf( "H %d.%d %% %d.%d C %.1f F\n",'>>dht.c echo "dht11_dat[0], dht11_dat[1], dht11_dat[2], dht11_dat[3], f );">>dht.c echo "}">>dht.c echo "}">>dht.c echo "int main( void )">>dht.c echo "{">>dht.c echo "if ( wiringPiSetup() == -1 )">>dht.c echo "exit( 1 );">>dht.c echo "read_dht11_dat();">>dht.c echo "delay( 1000 ); ">>dht.c echo "return(0);">>dht.c echo "}">>dht.c ###création du fichier ID.py rm ID.py touch ID.py echo "#!/usr/bin/env python">>ID.py echo "import RPi.GPIO as GPIO">>ID.py echo "from mfrc522 import SimpleMFRC522">>ID.py echo "GPIO.setwarnings(False)">>ID.py echo "reader = SimpleMFRC522()">>ID.py echo "id, text = reader.read()">>ID.py echo "print (id)">>ID.py echo "GPIO.cleanup()">>ID.py ###création du fichier Verification.py rm Verification.py touch Verification.py echo "#!/usr/bin/env python">>Verification.py echo "import RPi.GPIO as GPIO">>Verification.py echo "from mfrc522 import SimpleMFRC522">>Verification.py echo "from time import sleep">>Verification.py echo "GPIO.setwarnings(False)">>Verification.py echo "GPIO.setmode(GPIO.BCM)">>Verification.py echo "buzzer=3">>Verification.py echo "GPIO.setup(buzzer,GPIO.OUT) ">>Verification.py echo "reader = SimpleMFRC522()">>Verification.py echo "id, text = reader.read()">>Verification.py echo "if id==210463107982 :">>Verification.py echo ' print ("Access Granted")'>>Verification.py echo "while id!=210463107982 :">>Verification.py echo ' print ("badge non correcte")'>>Verification.py echo ' print ("acces interdit")'>>Verification.py #compliation vers un fichier mq22 gcc MQ.c -o mq22 -l wiringPi gcc -o dht dht.c -lwiringPi -lwiringPiDev ###partie de première exécution wget http://checkip.dyndns.org 1>/dev/null 2>/dev/null MYIP=`cat index.html | cut -d: -f2 | cut -d\< -f1` rm index.html #adresse ip public echo "My WAN address is: $MYIP" #envoie d'adresse ip public vers broker mosquitto_pub -h localhost -r -t IP -m $MYIP #adresse ip privée MYIP1=`hostname -I | cut -d ' ' -f1` echo "My WLAN is:$MYIP1" mosquitto_pub -h localhost -r -t IPP -m $MYIP1 #températue du proc temp=`vcgencmd measure_temp | cut -d '=' -f2` echo "la température du processeur est :$temp" mosquitto_pub -h localhost -r -t temp -m $temp #Nom de la RSP rsp=`whoami` echo "le nom de la RSP est:$rsp" mosquitto_pub -h localhost -r -t pi -m $rsp #date est heure dat=`date` echo "la date est :$dat" mosquitto_pub -h localhost -r -t date -m "$dat" test="true" typ="MQ22 DHT11 RFID AD8232 " mosquitto_pub -h localhost -r -t type -m "$typ" echo "ID USER :" echo "placez votre badge" ID=$(python3 ID.py) echo "ID USER :" echo "placez votre badge" ID=$(python3 ID.py) echo "$ID" mosquitto_pub -h localhost -t Vef -m "$ID" Ver=$(python3 Verification.py) echo "$Ver" mosquitto_pub -h localhost -t check -m "$Ver" #####BOUCLE while [ test ] do temp=`vcgencmd measure_temp | cut -d '=' -f2` mosquitto_pub -h localhost -r -t temp -m $temp dat=`date` mosquitto_pub -h localhost -r -t date -m "$dat" CAP=`sudo ./mq22` mosquitto_pub -h localhost -r -t gaz -m "$CAP" MP=`free | grep Mem | awk '{print $3/$2 * 100.0}'` mosquitto_pub -h localhost -r -t MEM -m "$MP" MS=`free -h |grep Mem| cut -c 20-32 | sed -e 's/^[ \t]*//'` mosquitto_pub -h localhost -r -t MES -m "$MS" h=`sudo ./dht | cut -d " " -f3 | cut -c2,1` T=`sudo ./dht | cut -d " " -f6` Tf=`sudo ./dht | cut -d " " -f8 | cut -c2,1` mosquitto_pub -h localhost -t m -m "$h" mosquitto_pub -h localhost -r -t MT -m "$T" mosquitto_pub -h localhost -r -t MTF -m "$Tf" done exit 0
External Services
Node-RED fournit un éditeur de flux basé sur un navigateur Web, qui peut être utilisé pour
créer des fonctions JavaScript. Les éléments des applications peuvent être enregistrés ou
partagés pour être réutilisés. Le runtime est construit sur Node.js. Les flux créés dans Node
RED sont stockés à l’aide de JSON. Depuis la version 0.14, les nœuds MQTT peuvent établir
des connexions TLS correctement configurées.