P8 Pilulier : Différence entre versions

De Wiki de Projets IMA
 
(46 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Objectifs du projet ==
+
== <span style="color:red">Objectifs du projet</span> ==
  
 
Création d'un pilulier automatique - En collaboration avec GAPAS
 
Création d'un pilulier automatique - En collaboration avec GAPAS
  
  
== Cahier des charges du pilulier ==
+
==<span style="color:red">Cahier des charges du pilulier </span> ==
  
 
Aprés rendez - vous avec M.Konrad de GAPAS nous avons élaboré un cahier des charges du projet.
 
Aprés rendez - vous avec M.Konrad de GAPAS nous avons élaboré un cahier des charges du projet.
Ligne 14 : Ligne 14 :
  
  
=== Diagramme pieuvre et solutions technologiques===
+
=== <span style="color:blue">Diagramme pieuvre et solutions technologiques</span>===
  
  
Ligne 25 : Ligne 25 :
 
[[Fichier:Pieuvre2.JPG]]
 
[[Fichier:Pieuvre2.JPG]]
  
=== Proposition de boîtiers ===
+
=== <span style="color:blue">Proposition de boîtiers</span> ===
  
  
==== Moteur centrale ====
+
====<span style="color:blue">Moteur centrale</span>  ====
  
  
Ligne 37 : Ligne 37 :
  
  
==== Boitier matriciel - couvercle simple ====
+
==== <span style="color:blue">Boitier matriciel - couvercle simple</span> ====
  
  
Ligne 46 : Ligne 46 :
  
  
==== Boitier matriciel - ouverture electro-aimants ====
+
==== <span style="color:blue">Boitier matriciel - ouverture electro-aimants</span> ====
  
  
Ligne 58 : Ligne 58 :
  
  
=== Planning prévisionnel===
+
=== <span style="color:blue">Planning prévisionnel</span>===
  
  
 
[[Fichier:Ganttpilulier.jpg]]
 
[[Fichier:Ganttpilulier.jpg]]
  
 +
== <span style="color:red">Journal de Bord</span> ==
  
 
+
=== <span style="color:blue">Début de projet</span> ===  
== Journal de Bord ==
 
  
 
'''Semaine 1'''  
 
'''Semaine 1'''  
Ligne 106 : Ligne 106 :
 
- Validation de la prise médicament : bouton?
 
- Validation de la prise médicament : bouton?
  
 
+
===<span style="color:blue">Semaine 4</span>  ===
 
'''Semaine 4'''  
 
'''Semaine 4'''  
  
Ligne 126 : Ligne 126 :
  
  
- Choix final sur le boitier ( schéma 3D en cour de conception )  28 électro-aimants commandable pour ouverture de trappe. Médocs tombent dans "entonnoir"  
+
- Choix final sur le boitier   28 électro-aimants commandable pour ouverture de trappe. Médocs tombent dans "entonnoir"  
  
 
ébauche :  
 
ébauche :  
  
[[Fichier:Idée.jpg]]
+
[[Fichier:AncienPilu.jpg]]
  
 
- Recherche sur les technologies d'électro-aimant ou autre procédé permettant ouverture et la fermeture d'un clapet.
 
- Recherche sur les technologies d'électro-aimant ou autre procédé permettant ouverture et la fermeture d'un clapet.
Ligne 157 : Ligne 157 :
 
- Modèle précédent correcte mais quelques inconvenants : les médocs sont directement sur un plateau tournant et retenu par le conpartiment dont risque de blocage du pilulier , effritage du médoc...
 
- Modèle précédent correcte mais quelques inconvenants : les médocs sont directement sur un plateau tournant et retenu par le conpartiment dont risque de blocage du pilulier , effritage du médoc...
  
[[Fichier:Cbiryviyr.jpg]]
+
[[Fichier:Pilulier02.JPG]]
  
 
Nombreux avantages :  
 
Nombreux avantages :  
Ligne 172 : Ligne 172 :
 
- couvercle facilement verrouillable à l'aide de loquet
 
- couvercle facilement verrouillable à l'aide de loquet
  
 
+
=== <span style="color:blue">Semaine 7</span>  ===
 
'''Semaine 7'''  
 
'''Semaine 7'''  
  
Ligne 218 : Ligne 218 :
  
 
- Besoin d'un module RTC pour ne pas perdre la date. Une instruction comme millis() retourne le temps écoulé depuis le dernier démarrage de l'Arduino, mais sera réinitialisée dès le prochain démarrage.  De plus, millis() atteint sa limite maximale (et retourne à zéro)  au bout d'une cinquantaine de jours.
 
- Besoin d'un module RTC pour ne pas perdre la date. Une instruction comme millis() retourne le temps écoulé depuis le dernier démarrage de l'Arduino, mais sera réinitialisée dès le prochain démarrage.  De plus, millis() atteint sa limite maximale (et retourne à zéro)  au bout d'une cinquantaine de jours.
 +
 +
 +
'''Semaine 10 - 11'''
 +
 +
- RDV avec GAPAS, validation du modèle , mise au point sur l'état d'avancement
 +
 +
- travail sur la page web de programmation du pilulier
 +
 +
- modélisation 3D
 +
 +
 +
=== <span style="color:blue">Janvier</span> ===
 +
 +
'''Janvier'''
 +
 +
- écriture de la page html
 +
 +
- hébergement sur l'arduino en cours ( problème de carte SD)
 +
 +
- essai de programmation du moteur en attendant sa réception ...
 +
 +
 +
=== <span style="color:blue">Février</span> ===
 +
 +
'''Février'''
 +
 +
- Toujours pas reçu nos pièces...
 +
 +
- Autres tests et essai de différente maniére de programmer l'heure de la prise de médicaments
 +
 +
- Découpage Laser au fablab pour fabrication pilulier
 +
 +
 +
- En attendant les pièces nous avons choisi d'essayer de faire une sorte de server sur arduino  même si celui ci n'est pas conçu pour cela.
 +
 +
Premier test : hébergement d'une page web gérant les alarmes et la programmation des horaires en l'hébergeant en local à l'aide de Wampserver.
 +
 +
[[Fichier:Site.JPG]]
 +
 +
 +
Nous enregistrons dans un fichier texte les variables. Le problèmes étant de les transferer cers l'arduino.
 +
 +
Nous avons donc décidé de directement héberger notre code sur la carte SD de l'arduino, on arrive bien à accéder à notre page web stocké sur la carte SD depuis un navigateur web sur un pc en local. Mais l'enregistrement du formulaire dans un fichier texte ne fonctionne plus car l'arduino ne peut pas lire php
 +
 +
Nouvelle façon de faire : uploader un fichier texte de configuration a partir du site directement dans l'arduino.
 +
 +
[[Fichier:12345.JPG]]
 +
 +
 +
 +
- Essai d'envoi de mail à partir d'un code php, inpossible à lancer depuis l'arduino . Hébergement en localhost. Le code php fonctionne mais impossible de le lancer depuis l'arduino. Code ci-dessous:
 +
 +
[[Fichier:Codeooe.JPG]]
 +
 +
Test hébergement sous SFR mais sfr n’autorise pas la fonction mail php. A voir avec FREE , ou modif du code pour fonctionner en localhost.
 +
 +
 +
Réception du moteur et carte de commande: soudage de la carte commande. Quelques modifications du code arduino de ma partie commande. A faire cablage et test du moteur.
 +
 +
 +
 +
jeudi 12 :  nous avons réussi à echanger des données et envoyer des mails avec du code php hébergé en localhost. c'était un pb d'ip fixe.
 +
aujourdhui : essai moteur / essai avec programmation par clavier au cas ou le réseau déconne.
 +
 +
lundi et mardi 18 : finition programme moteur + finition programme script php pour gestion des alarmes et mini base de données.
 +
 +
Regroupement de tout les morceaux de programme. Remplacement d'un capteur infrarouge de détection passage main par un capteur de lumière pour cause de non réception du matériel.
 +
 +
 +
Exemple de la communication arduino pour l'envoi d'un mail / alarme :
 +
 +
coté arduino :
 +
 +
[[Fichier:Mailok.JPG]]
 +
 +
coté localhost php:
 +
 +
[[Fichier:Phpmailok.JPG]]
 +
 +
 +
 +
 +
Démarrage des tests sur 2 jours après demain si tout va bien.
 +
 +
 +
Résutats des tests:
 +
 +
- Le moteur "low cost" ne supporte pas le poids du plateau mais répond tout de même bien au consigne de l'arduino.
 +
 +
- Le moteur tourne bien d'un angle de 12-13°(correspondant à une case) quand il le faut
 +
 +
- les alertes lumineuses et sonore fonctionnent bien . Prévoir peu étre plus gros qu'un simple LED. au niveau de l'alerte sonore c'est suffisant
 +
 +
- L'heure affiché et les heures de prise fonctionne bine meme si coupure de courant. grace au module rtc et à une fonction arduino qui va chercher les valeurs des prises sur le serveur
 +
 +
- capteur de détection de main : changer pour un capteur infrarouge car le capteur de lumière met un certain temps avant de commuter (laisser environ 2 sec sa main devant)
 +
 +
- les consignes d'écriture données par l'arduino sont bien prise en compte et permettent d'écrire dans les fichiers textes correspondant ( prise médoc ok ou le patient n'a pas pris son médoc!)
 +
 +
- l'envoi de mail fonctionne parfaitement.
 +
 +
 +
=> bilan du test : tout semble fonctionnel au niveau serveur + electronique.
 +
 +
Quelques changements à faire tout de même au niveau moteur / capteur et bien sur finaliser le boitier pilulier pour permettre de le tester en condition réelle devant un patient.
 +
 +
 +
 +
Dernier week end et quelques jours afin de faire une vidéo d'un mini test + rapport a finir.
 +
 +
 +
 +
== <span style="color:red">Rapport et rendu du projet</span> ==
 +
 +
===<span style="color:blue">Rapport de décembre , Mi-projet</span>===
 +
 +
[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]
 +
 +
 +
===<span style="color:blue">Rapport de projet</span>===
 +
 +
[[Fichier:Rapport PFE Pinet Mercier.pdf]]
 +
 +
===<span style="color:blue">Vidéo de démonstration</span>===
 +
 +
==== Lien direct=====
 +
 +
[https://www.youtube.com/watch?v=Df_yNL43HGg&feature=youtu.be| Lien youtube direct pilulier MP4 ]  Penser à la regarder en 720p
 +
 +
==== En téléchargement =====
 +
 +
[https://drive.google.com/folderview?id=0BxhwLnu5tv8mNEc3dFFXTmgtU2M&usp=sharing|En téléchargement sous plusieurs format]
 +
 +
===<span style="color:blue">Code source</span>===
 +
 +
====Arduino====
 +
 +
[[Fichier:Code arduino.zip|Code serveur]]
 +
 +
====Serveur====
 +
 +
[[Fichier:Code serveur.zip|Code serveur]]

Version actuelle datée du 11 mars 2015 à 11:52

Objectifs du projet

Création d'un pilulier automatique - En collaboration avec GAPAS


Cahier des charges du pilulier

Aprés rendez - vous avec M.Konrad de GAPAS nous avons élaboré un cahier des charges du projet.

GAPAS propose de créer un pilulier automatique où les médicaments sont accessibles seulement à l'heure de la prise afin d'éviter la sur-consommation.

De plus ce pilulier doit prévenir l'utilisateur et alerter un proche en cas de non-prise. A nous ensuite de choisir la forme et les différentes fonctionnalités du pilulier.


Diagramme pieuvre et solutions technologiques

Pieuvre2.png


CdcPil.PNG


Pieuvre2.JPG

Proposition de boîtiers

Moteur centrale

Le principe est d'avoir les 28 compartiment autour d'un moteur centrale . Un compartiement ouvert à la fois.

Avantages : Impossible de se tromper dans la prise du médicament Désavantages : consommation plus importante , durée de vie moyenne


Boitier matriciel - couvercle simple

Le principe est d'avoir les 28 compartiment dans une boite simple. Avec témoins lumineux pour savoir quelle case doit étre prise.

Avantages : durée de vie plus longue Désavantages : Tout les médicaments sont accessibles


Boitier matriciel - ouverture electro-aimants

Le principe est d'avoir les 28 compartiment dans une boite simple.

Avantages : Un compartiment s'ouvre à la fois et permet de prendre seulement les bons médicaments Désavantages : 28 electro-aimants , durée de vie faible



Planning prévisionnel

Ganttpilulier.jpg

Journal de Bord

Début de projet

Semaine 1

- Prise de contact avec les responsables projets du coté gapas (en attente de réponse )

- Recherche sur les différents pilulier déjà existant

- Définition des besoins / début rédaction cahier des charges


Semaine 2

- Recherche sur les différentes technologie possible à implanter

- Brainstorming sur les différents modèles de pilulier réalisable dans le temps imparti


Semaine 3

Réponse de GAPAS - Prise de contact avec notre responsable de projet GAPAS.

Début des échanges concernant les spécifications et fonctionnalités indispensable au projet.


Fonctionnalités possible (nos idées) :

- Indique quel médicament prendre

- Alarme sonore, rappel prise médicament

- Contacte avec personne extérieur si non prise (objet connecté) Wifi / bluetooth / GSM

- Programmable via smartphone ou directement sur le pilulier

- Alimentation? pile/ batterie / induction?

- Mode test bon fonctionnement (lumière / alarme )

- Validation de la prise médicament : bouton?

Semaine 4

Semaine 4


- Création des use cases en vu d'un entretien avec gapas : 16h jeudi


Usecase.jpg


- Nous envisageons de partir vers moteur centrale + 28 compartiments. Capteur infrarouge pour détecter prise de médoc + alarme sonore et lumineuse pour rappel. et enfin contact extérieur par SMS.

- Autre option possible : scanne médoc , écran + socle pilulier , a voir avec gapas quand prototype terminé

- Après rendez vous avec gapas nous avons pu élaborer un cahier des charges vraiment simpliste car nous avons libre choix sur le projet. Par contre ils nous ont imposés quelques contraintes : Pilulier absolument fermé, pas d'abonnement carte sim, pas de borne wifi. mais un accés cable éthernet.


Semaine 5


- Choix final sur le boitier 28 électro-aimants commandable pour ouverture de trappe. Médocs tombent dans "entonnoir"

ébauche :

AncienPilu.jpg

- Recherche sur les technologies d'électro-aimant ou autre procédé permettant ouverture et la fermeture d'un clapet.

- Reception rasberry pi , documentation sur son fonctionnement.

- Prochain objectif : créer un prototype comprenant 1 compartiment seulement afin de tester toutes les fonctionnalités de base et faire une démonstration à GAPAS


Semaine 6

- Problème avec modèle précédent : 28 électro aimants = 28 sources de pannes . si pas de courant , 28 trappes ouvertes...

- recherche autre solution plus fiable , moins gourmande en énergie et consommateur d'IO

- Idée du disque tournant : pilulier cylindrique , un disque tournant troué permétant de faire tombé les médocs dans un compartiments accessible

ebauche :

Ebaucheee.JPG

La partie bleu est le disque troué tournant directement monté sur le moteur

- Autre prototype avec des godets détachable

- Modèle précédent correcte mais quelques inconvenants : les médocs sont directement sur un plateau tournant et retenu par le conpartiment dont risque de blocage du pilulier , effritage du médoc...

Pilulier02.JPG

Nombreux avantages :


- bloc moteur séparé du plateau médoc

- plateau démontable

- gobelet lavable

- place pour l'electronique dans le boitier moteur

- couvercle facilement verrouillable à l'aide de loquet

Semaine 7

Semaine 7

- Système de godet correcte , mais on peut facilement les perdre , les bloquer ds le moteur ...

- Bloc moteur solidaire du bloc a médicaments, risque de mélange de fil , fil tournant ...

- Nouveau prototype et choix finale  :

Pilulier.PNG


Choix des composants :


- Micro-processeur:

Si on veut embarquer un site web dans le pilulier ou encore gérer des stats du style :il a pris sa pilule une heure avant par rapport au mois dernier... alors le raspberry pi est définitivement le choix à faire.

Sinon si pilulier se limite à envoyer des mails alors l'arduino méga est plus simple et l'on a le compte au niveau de des IO, de plus toujours moyen de stocker des stats comme le pilulier est relié au réseau.


- un écran LCD 16*2 d'arduino semble suffisant afin d'afficher l'heure et programmer manuellement le pilulier.

- 4 boutons poussoirs pour programmer le pilulier ( + , - , suivant , menu ) / programmation du pilulier sur site web !

- 1 moteur pour faire tourner le plateau (dimensionnement du moteur à prévoir )

- 2 loquets commandables pour verrouiller le couvercle ou fermeture par clef sur le dessus

- un capteur infra-rouge ou inductif pour détecter la prise de médicament / passage de la main ds le compartiment de devant.

- Un capteur en dessous du plateau pour détecter le bon positionnement du plateau.

- quelques LEDs pour un rappel lumineux


Semaine 8-9

- Modélisation du pilulier sous Autodesk inventor

- Programmation arduino

- Documentation shield arduino ethernet / réflexion sur le travail à faire ( page web / historique / mail / programmation pilulier )

- Besoin d'un module RTC pour ne pas perdre la date. Une instruction comme millis() retourne le temps écoulé depuis le dernier démarrage de l'Arduino, mais sera réinitialisée dès le prochain démarrage. De plus, millis() atteint sa limite maximale (et retourne à zéro) au bout d'une cinquantaine de jours.


Semaine 10 - 11

- RDV avec GAPAS, validation du modèle , mise au point sur l'état d'avancement

- travail sur la page web de programmation du pilulier

- modélisation 3D


Janvier

Janvier

- écriture de la page html

- hébergement sur l'arduino en cours ( problème de carte SD)

- essai de programmation du moteur en attendant sa réception ...


Février

Février

- Toujours pas reçu nos pièces...

- Autres tests et essai de différente maniére de programmer l'heure de la prise de médicaments

- Découpage Laser au fablab pour fabrication pilulier


- En attendant les pièces nous avons choisi d'essayer de faire une sorte de server sur arduino même si celui ci n'est pas conçu pour cela.

Premier test : hébergement d'une page web gérant les alarmes et la programmation des horaires en l'hébergeant en local à l'aide de Wampserver.

Site.JPG


Nous enregistrons dans un fichier texte les variables. Le problèmes étant de les transferer cers l'arduino.

Nous avons donc décidé de directement héberger notre code sur la carte SD de l'arduino, on arrive bien à accéder à notre page web stocké sur la carte SD depuis un navigateur web sur un pc en local. Mais l'enregistrement du formulaire dans un fichier texte ne fonctionne plus car l'arduino ne peut pas lire php

Nouvelle façon de faire : uploader un fichier texte de configuration a partir du site directement dans l'arduino.

12345.JPG


- Essai d'envoi de mail à partir d'un code php, inpossible à lancer depuis l'arduino . Hébergement en localhost. Le code php fonctionne mais impossible de le lancer depuis l'arduino. Code ci-dessous:

Codeooe.JPG

Test hébergement sous SFR mais sfr n’autorise pas la fonction mail php. A voir avec FREE , ou modif du code pour fonctionner en localhost.


Réception du moteur et carte de commande: soudage de la carte commande. Quelques modifications du code arduino de ma partie commande. A faire cablage et test du moteur.


jeudi 12 : nous avons réussi à echanger des données et envoyer des mails avec du code php hébergé en localhost. c'était un pb d'ip fixe. aujourdhui : essai moteur / essai avec programmation par clavier au cas ou le réseau déconne.

lundi et mardi 18 : finition programme moteur + finition programme script php pour gestion des alarmes et mini base de données.

Regroupement de tout les morceaux de programme. Remplacement d'un capteur infrarouge de détection passage main par un capteur de lumière pour cause de non réception du matériel.


Exemple de la communication arduino pour l'envoi d'un mail / alarme :

coté arduino :

Mailok.JPG

coté localhost php:

Phpmailok.JPG



Démarrage des tests sur 2 jours après demain si tout va bien.


Résutats des tests:

- Le moteur "low cost" ne supporte pas le poids du plateau mais répond tout de même bien au consigne de l'arduino.

- Le moteur tourne bien d'un angle de 12-13°(correspondant à une case) quand il le faut

- les alertes lumineuses et sonore fonctionnent bien . Prévoir peu étre plus gros qu'un simple LED. au niveau de l'alerte sonore c'est suffisant

- L'heure affiché et les heures de prise fonctionne bine meme si coupure de courant. grace au module rtc et à une fonction arduino qui va chercher les valeurs des prises sur le serveur

- capteur de détection de main : changer pour un capteur infrarouge car le capteur de lumière met un certain temps avant de commuter (laisser environ 2 sec sa main devant)

- les consignes d'écriture données par l'arduino sont bien prise en compte et permettent d'écrire dans les fichiers textes correspondant ( prise médoc ok ou le patient n'a pas pris son médoc!)

- l'envoi de mail fonctionne parfaitement.


=> bilan du test : tout semble fonctionnel au niveau serveur + electronique.

Quelques changements à faire tout de même au niveau moteur / capteur et bien sur finaliser le boitier pilulier pour permettre de le tester en condition réelle devant un patient.


Dernier week end et quelques jours afin de faire une vidéo d'un mini test + rapport a finir.


Rapport et rendu du projet

Rapport de décembre , Mi-projet

Fichier:Rapport decembre PFE pilulier mercier pinet.pdf


Rapport de projet

Fichier:Rapport PFE Pinet Mercier.pdf

Vidéo de démonstration

Lien direct=

Lien youtube direct pilulier MP4 Penser à la regarder en 720p

En téléchargement =

téléchargement sous plusieurs format

Code source

Arduino

Fichier:Code arduino.zip

Serveur

Fichier:Code serveur.zip