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

NameContribution
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

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

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
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.
Challenges & Motivation
A partir de ce problème, on a identifié le besoin qui est la conception et la réalisation d’une
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

Materials
ImageNamePart NumberPriceCountLink
Raspberry pi11001🛒
rfid rc52211.301🛒
mq-41151🛒
Dht11171🛒
esp82321401🛒
Schematic

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

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.