Réalisation d’un distributeur de cocktails automatisé, contrôlé par une application via Bluetooth et doté d’une interface utilisateur conviviale. L’utilisateur sélectionne le cocktail souhaité à travers l’application. Un prototype fonctionnel a été développé l’année précédente, tandis que cette année, l’objectif consistait à concevoir un modèle 3D de la machine afin de construire un châssis capable d’accueillir tous les composants. Par ailleurs, l’application offre des fonctionnalités attrayantes pour les utilisateurs, telles que l’ajout de nouveaux cocktails pour les administrateurs, l’accès à une base de données de cocktails et bien d’autres avantages.
PharmaBox – Etat de l’art
Auteurs :
- Adam Giovanni
- Michael Moreno
- Alexandre Derrien
- Romain Boinet
- Fred N’guetta
Logo :
I- CONTEXTE
Dans le secteur de la santé, l’hôpital représente le pivot central de la vie et du bien-être des individus. Chacun d’entre nous, à un moment ou à un autre de notre existence, a été confronté aux services hospitaliers, que ce soit pour une naissance, un traitement médical ou un suivi médical régulier. Au sein de notre équipe de projet fil rouge en TAF COOC, il était devenu évident que le domaine de la santé méritait toute notre attention.
Après mûre réflexion, nous avons choisi de nous pencher sur un défi de taille : l’amélioration des conditions de travail du personnel hospitalier. Ce défi, à la fois technique et humain, touche divers acteurs qui œuvrent sans relâche pour le bien-être des patients, notamment les infirmiers, les médecins généralistes, les médecins spécialistes, les brancardiers, et bien d’autres professionnels de la santé.
Parmi ces acteurs, les infirmiers occupent une place centrale. Leur quotidien implique une multitude de tâches exigeantes, depuis la collecte manuelle des données des patients jusqu’à la distribution de médicaments, en passant par le déplacement des patients dans l’établissement. Leur charge de travail est souvent considérable, jonglant avec de multiples cas à traiter. Les médecins, tout comme les autres professionnels de la santé, se retrouvent également confrontés à des défis similaires, devant répondre aux besoins de nombreux patients, se déplaçant sans cesse d’une salle à l’autre.
II- NOTRE EXPLORATION DU PROBLEME
Identification des différentes problématiques dans le milieu hospitalier.
En France, il y a plus de 3000 hôpitaux et le personnel soignant représente plus de 850 000 salariés [1], c’est un secteur qui représente une grande partie de la force de travail française. Le milieu hospitalier est un milieu ouvert au changement et à l’innovation, mais les contraintes ainsi que les moyens employés peuvent être plus contraignants que dans d’autres secteurs.
Un des problèmes que nous avons identifié au cours de nos recherches se situe autour des tâches pénibles à réaliser/chronophages.
Voici une liste non exhaustive qui synthétise les tâches qui peuvent être effectuées dans le domaine médical et qui n’ont qu’un très faible valeur ajoutée :
- Documentation : La saisie de données de manière répétitive ou non essentielle dans les dossiers médicaux peut être chronophage.
- Tâches administratives : Remplir des formulaires, traiter des autorisations, répondre aux demandes de renseignements administratifs.
- Gestion de l’inventaire : Inventaire des fournitures médicales, commande de fournitures et gestion des stocks.
- Distribution de repas
Plus globalement, tout ce qui ne mobilise pas des connaissances acquises par le personnel soignant durant leur études.
Nous avons aussi remarqué que les erreurs médicamenteuses étaient une problématique sérieuse dans le milieu de la santé, car cela pouvait entraîner de lourdes conséquences pour le patient. [2]
Lors de notre recherche documentaire, nous avons appris que la gestion des stocks de médicaments ainsi que la traçabilité de ces derniers était un enjeu majeur dans la prise en charge d’un patient, car il faut savoir très précisément quels médicament à été administré au patient, de quel lot ce médicament est issu etc, de manière à pouvoir régler tout problème lié à la prise d’un médicament (Contre indication médicale, problème sur le lot du médicament, etc…)
De plus, le manque de personnel dans le secteur hospitalier pose des problèmes de qualité de vie au travail et certains postes sont en surcharge de travail à cause de cela.
Enfin, l’un des problèmes plus généraux que nous avons identifié est le manque d’utilisation de technologies informatiques dans les services hospitaliers peut créer certains problèmes d’efficacité au sein du personnel soignant.
Les solutions déjà présentes dans le milieu hospitalier.
Aujourd’hui, il existe déjà plusieurs solutions qui permettent de répondre à ces problématiques, certaines sont des solutions logiciels, par exemple, certains services utilisent des logiciels qui centralisent les données du patients pour éviter la redondance de saisie de données [3]. Ce type de solution pose des questions liées à la RGPD ainsi qu’à la cybersécurité, en effet, il faut s’assurer que les données du patient ne soient pas exploitées autrement que pour assurer un suivi médical correct. Cela impose donc aux équipes de développement d’être particulièrement alerte sur ces enjeux, mais il appartient aussi aux utilisateurs de la solution de faire attention quant à l’utilisation de tels logiciels. Il existe également des solutions logistique, qui consistent à adapter au mieux toute l’infrastructure de l’hôpital afin de minimiser les déplacements inutiles et d’accéder le plus simplement aux différents outils utilisés par le personnel soignant [4]. Ces solutions peuvent être très coûteuses et démontrent qu’il peut être compliqué d’innover dans le milieu de l’hôpital car une solution de logistique est très complexe à mettre en place, d’autant plus quand l’infrastructure existe déjà. Enfin, il existe aussi des solutions purement impliquant des objets connectés comme des armoires avec une douchette pour assurer la traçabilité des médicaments administrés aux patients. [5]
Ces solutions d’objets connectés sont très intéressantes mais doivent respecter toutes les règles en vigueur au sein de l’hôpital (sanitaires, risques liés aux médicaments etc.) Il peut également être compliqué de mettre en place ce genre de solutions pour différentes raisons (infrastructure inadapté, manque de moyens financiers, manque de moyens humains, réticence des utilisateurs).
Ces solutions modifient les usages et habitudes de travail du personnel soignant à différents niveaux, que ce soit son parcours et les déplacements entre un patient et un poste de soin, mais aussi de nouveaux outils sur lesquels un.e infirmier.e doit être prêt.e pour se former à l’usage.
Par ailleurs, le secteur hospitalier en France est soumis à une série de réglementations strictes qui visent à garantir la qualité et la sécurité des soins prodigués aux patients. Ces réglementations sont cruciales pour maintenir les normes élevées de l’offre de soins de santé dans le pays, mais ces réglementations peuvent aussi être un frein à l’implémentation de nouvelles technologies au sein des hôpitaux.
Les réglementations en milieu hospitalier.
En France, les hôpitaux sont régis par un ensemble dense de lois, de décrets et de normes édictés par le gouvernement, les agences de santé, et les ordres professionnels. Ces réglementations couvrent de nombreux aspects de la pratique médicale, de la gestion des établissements de santé, de la formation du personnel médical, de la sécurité des patients, afin de garantir la qualité des soins.
L’une des raisons principales pour lesquelles ces réglementations sont essentielles réside dans la nécessité de protéger la sécurité et les droits des patients. Elles garantissent que les établissements de santé disposent des infrastructures appropriées, du personnel qualifié et des protocoles nécessaires pour traiter les patients en toute sécurité. De plus, elles assurent la transparence dans la gestion des établissements de santé, ce qui permet aux patients de faire des choix éclairés sur leur prise en charge.
Les réglementations du milieu hospitalier en France sont également cruciales pour maintenir la confiance du public dans le système de santé. En garantissant des normes de qualité élevées, elles renforcent la réputation du système de santé français à l’échelle nationale et internationale.
III- LES APPORTS DE L’ETAT DE L’ART
Au départ, nous avions envisagé d’étudier les conditions de travail du personnel médical. Ensuite, des recherches sur le web ont révélé qu’il existait plusieurs corps de métier au sein d’un hôpital, ce qui nous a amenés à nous concentrer davantage. C’est ainsi qu’après nos recherches, nous avons choisi de nous intéresser aux infirmiers, car ils constituent l’un des acteurs majeurs de la chaîne de traitement des patients. Les aider aurait également un impact sur les autres professions. Notre première hypothèse était que les infirmier.e.s n’avaient pas nécessairement accès à beaucoup d’outils informatiques dans leur métier et nous avons imaginé que cela devait être pénible et que cela représentait ainsi une perte de temps considérable qui aurait pu être utilisé d’une meilleure manière. Après avoir mené des entretiens avec quelques infirmières, il est apparu qu’elles étaient surchargées de travail et qu’elles avaient besoin de gagner du temps pour des tâches plus essentielles ainsi que des tâches plus proches des raisons qui les ont poussé.e.s à devenir infirmier.e.s, notamment le lien social avec les patients qui est, selon eux, trop délaissé aujourd’hui. Ainsi, nous avons identifié les tâches qui leur prenaient le plus de temps, notamment la gestion des appels téléphoniques et l’administration des soins. Cette seconde tâche consiste à la prestation de service médicaux, au sein d’un service hospitalier, cela peut impliquer par exemple la surveillance des signes vitaux d’un patient, la distribution et la prise de médicament, insertion de cathéters. Plus généralement, le but ultime de l’administration de soins est d’améliorer la santé, de soulager la souffrance et de favoriser le bien-être du patient. Notre problématique à résoudre est devenue de plus en plus précise : Comment alléger la charge de travail des infirmier.e.s pour améliorer leur qualité de vie au travail tout en assurant la qualité des soins.
Notre démarche documentaire nous à permis de nous rendre compte que les conditions de travail dans le milieu hospitalier représentent un enjeu majeur avec beaucoup de parties prenantes (personnel soignant, patient, industries pharmaceutiques, gouvernements …). C’est la raison pour laquelle nous avons choisi d’affiner notre problématique autour du métier d’infirmier, qui est un métier dans lequel il existe beaucoup de tâches à faible valeur ajoutée. De plus, la législation autour de ce métier est assez importante et nous allons donc devoir prendre en compte toutes les contraintes liées à ces enjeux législatifs [6]. , notamment car les infirmier.e.s engagent leur responsabilités chaque fois qu’ils administrent un médicament. Nos hypothèses ont pu être confirmées par les différents entretiens que nous avons menés, notamment avec une infirmière qui nous à confiée qu’elle aimerait avoir plus de temps libre pour échanger avec ses patients et mettre l’accent sur le côté social du métier d’infirmière qu’elle n’a plus le temps de faire à ce jour.
Choix de problématique
Pour affiner notre problématique, il nous semblait nécessaire de clarifier les missions effectuées par le corps infirmier à l’hôpital . [7] :
- Soins aux Patients : Les infirmiers dispensent des soins directs aux patients, notamment la toilette, l’habillage, le changement de pansements, et la gestion des dispositifs médicaux comme les cathéters.
- Administration de Médicaments : Les infirmiers préparent, administrent et surveillent les effets des médicaments prescrits aux patients.
- Communication avec les Médecins et autres professionnels de la santé : Les infirmiers jouent un rôle essentiel dans la coordination des soins en communiquant régulièrement avec les médecins, les thérapeutes et d’autres professionnels de la santé.
- Gestion des Dossiers Médicaux : Les infirmiers documentent les informations sur l’état du patient, les soins prodigués et les médicaments administrés dans les dossiers médicaux électroniques ou sur papier.
- Éducation des Patients : Les infirmiers fournissent des informations aux patients sur leur état de santé, les traitements et les procédures à suivre après leur séjour à l’hôpital.
- Préparation des Patients pour les Interventions Chirurgicales : Les infirmiers préparent les patients pour les chirurgies en veillant à ce qu’ils comprennent la procédure et en les aidant à se préparer physiquement et émotionnellement.
- Soutien Émotionnel aux Patients et à Leur Famille : Les infirmiers offrent un soutien psychologique aux patients et à leur famille en répondant à leurs questions, en les rassurant et en les aidant à faire face au stress de la maladie.
- Collaboration dans les Équipes de Soins Multidisciplinaires : Les infirmiers travaillent en étroite collaboration avec d’autres professionnels de la santé, tels que les médecins, les thérapeutes et les travailleurs sociaux, pour assurer une prise en charge complète des patients
De plus cette liste ne concerne que les infirmier.e.s qui se situe dans les services spécialisés (les services dits “spécialisés” sont les services qui traitent des patients pour des pathologies précises, exemple : L’oncologie ne traite que des patients qui sont hospitalisés en raison de cancers).
Pour répondre à ce besoin, nous avons déjà identifié plusieurs tâches sur lesquels nous pourrions gagner du temps :
- Prise de médicaments sans ordonnance (type antalgiques)
- Distribution des repas
- Parcours non optimisés entre les chambres
- Gestion des appels/des urgences au sein du service
- Pédagogie auprès du patient
Notre problématique se précise donc plus : Comment alléger la charge de travail des infirmier.e.s pour améliorer leur qualité de vie au travail tout en assurant la qualité des soins.
CONCLUSION
Grâce à la recherche documentaire effectuée, notre problématique est maintenant plus précise, nous allons pouvoir travailler sur la partie solution du projet fil rouge, qui va nous permettre mettre en œuvre nos connaissances techniques afin de répondre à la problématique que nous avons dégagé.
BIBLIOGRAPHIE
[1] “Evolution des tendances démographiques dans les établissement de santé”, consulté le 01/10/2023
https://drees.solidarites-sante.gouv.fr/sites/default/files/2021-07/Vue%20d%27ensemble.pdf
[2] “Les erreurs associées aux produits de santé déclarées dans la base EIGS”, consulté le 04/10/2023
[3] “BL.santé soins”, consulté le 26/09/2023
https://www.berger-levrault.com/fr/produit/bl-sante-soins/
[4] “Plateforme clinico-logistique : le CHU innove avec une première au Canada!”, CHU de Québec-Université Laval, consulté le 02/10/2023
https://youtu.be/j41QD5bMhxE?si=yMQt_VscxrzuuzJ7
[5] “Armoires sécurisées XT”, consulté le 05/10/2023
https://www.omnicell.fr/produits/armoires-securisees-xt
[6] “Code de la santé publique”, consulté le 17/10/2023
[7] “Fiche Métier : Infirmier”, consulté le 06/10/2023
https://www.fedsante.fr/candidats/sanitaire/infirmier
Prise en main NodeMCU ESP32
Vous voulez utiliser les cartes NodeMCU pour vos besoins de prototypage rapide de communication sans fil ?
C’est possible avec les cartes du fablab (NodeMCU ESP32 de JOYIT [1]) et l’IDE Arduino installé sur les postes. La carte est dotée d’un module Wifi et Bluetooth.
Documentation de l’installation et de l’utilisation sur Arduino IDE [2]
Outils > gestionnaire de carte > installer les libraries ESP32
Outils > type de carte > NodeMCU-32S
Vérifier le upload speed 115200
Récupérer un croquis/sketch dans Fichier > Exemples > 01.basics > Blink
Charger le programme, puis appuyer sur Boot sur la carte pour autoriser le chargement
Vous devez obtenir Téléversement Terminé
Le message Hard resetting via RTS Pin n’est pas un message d’erreur… Mais signifie que le NodeMCU n’est pas capable de re-démarrer tout seul.
Pour lire le retour de l’ESP32, ouvrez Outils > Moniteur série
Sinon observez la LED qui clignote.
Pour relancer le programme appuyez sur EN sur la carte.
Pour aller plus loin, on pourrait tester l’installation du firmware MicroPython [3-4]. On se lance ?
Références
[1] « NodeMCU ESP32 | Joy-IT ». Consulté le: 29 septembre 2023. [En ligne]. Disponible sur: https://joy-it.net/en/products/SBC-NodeMCU-ESP32
[2] « Installing — Arduino-ESP32 2.0.6 documentation ». Consulté le: 29 septembre 2023. [En ligne]. Disponible sur: https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-arduino-ide
[3] donsky, « MicroPython using VSCode PyMakr on ESP32/ESP8266 », donskytech.com. Consulté le: 29 septembre 2023. [En ligne]. Disponible sur: https://www.donskytech.com/micropython-using-vscode-pymakr-on-esp32-esp8266/
[4] « Getting Started with MicroPython on ESP32 and ESP8266 | Random Nerd Tutorials ». Consulté le: 29 septembre 2023. [En ligne]. Disponible sur: https://randomnerdtutorials.com/getting-started-micropython-esp32-esp8266/
Template article COUAD
Les auteurs
Ici vous indiquez le noms des auteurs.
Introduction
Cette page sert de modèle pour la création d’article sur le site wordpress du Telefab. Les étudiants de la TAF COUAD l’utilisent pour créer leur propre article dans le cadre des livrables de cet enseignement.
Le code source de cette page (html) est disponible ici : Modele_SoA. Cliquez sur le lien puis téléchargez le fichier lié. Vous pouvez directement copier/coller ce code source dans l’onglet Texte de votre article. Vous pouvez utiliser le même principe pour faire des liens vers des fichiers (à télécharger dans wordpress).
Contexte
Remarquez comme il est possible de faire une référence à une ancre et ainsi créer des liens entre certaines parties de l’article. Ici nous l’utilisons pour la référence [1] qui nous amène directement à la référence [1] dans la section Références bibliographiques. Le même principe peut être utilisé pour créer une table des matières en début d’article, par exemple. l est aussi possible de faire des liens entre parties. Par exemple un lien vers la section Références bibliographiques.
Texte courant ipsum dolor sit amet [3], consectetur adipiscing elit. Mauris at venenatis nulla, condimentum blandit mauris. Sed venenatis, dolor ut malesuada dignissim, enim turpis porta orci, et dictum tellus lacus in est. Donec nec urna convallis, pharetra nibh id, congue odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In arcu dolor, posuere nec dictum condimentum, pretium non augue. Curabitur vehicula tempor ante, sed pharetra purus sollicitudin. Vivamus non mauris ut ipsum congue commodo non vitae ante.
Donec vel ornare urna, vitae mollis lacus. Ut suscipit turpis id mattis placerat. Phasellus placerat, erat quis pharetra malesuada, leo ex gravida enim, non egestas lorem mi ac neque.In vulputate sit amet leo eget interdum [2]. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor lacus a fermentum aliquet. Donec imperdiet, quis mattis dolor malesuada. Sed mollis nisl ut erat dignissim, vitae imperdiet tellus tincidunt. Vivamus in ex id libero dignissim efficitur [4]. Ut nec fermentum arcu, id pellentesque ligula.
Lorem ipsum dolor sit Dictum consectetur adipiscing elit. Mauris at venenatis nulla, condimentum blandit mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In arcu dolor, posuere nec dictum condimentum, pretium non augue [4].
Section a
On peut introduire du code :
apt-get install -y nodejs
Section b
On peut ajouter des images :
On peut utiliser un tableau pour faire une mise en forme en 2 colonnes :
| Donec vel ornare urna, vitae mollis lacus. Ut suscipit turpis id mattis placerat. Phasellus placerat, erat quis pharetra malesuada, leo ex gravida enim, non egestas lorem mi ac neque.In vulputate sit amet leo eget interdum [2]. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor lacus a fermentum aliquet. Donec imperdiet, quis mattis dolor malesuada. Sed mollis nisl ut erat dignissim, vitae imperdiet tellus tincidunt. Vivamus in ex id libero dignissim efficitur [4]. Ut nec fermentum arcu, id pellentesque ligula.
|
Conclusion
Références bibliographiques
[1] « Smart Pen – Moleskine ». https://fr.moleskine.com/fr/smart-pen/p0655 (consulté le janv. 04, 2021)
[2] « Reconnaissance de l’écriture manuscrite », Wikipédia. nov. 20, 2020. Consulté le: janv. 04, 2021. [En ligne]. Disponible sur: https://fr.wikipedia.org/w/index.php?title=Reconnaissance_de_l%27%C3%A9criture_manuscrite&oldid=176776528
[3] T. Bluche, « Mathematical Formula Recognition using Machine Learning Techniques », PhD Thesis, University of Oxford, 2010.
[4] A. Schechter, N. Borus, et W. Bakst, « Converting Handwritten Mathematical Expressions into LATEX », 2017.
Un cubsat au téléfab
A l’occasion du lancement officiel d’IRISPACE, l’Institut Régional de l’Innovation Spatiale le 23 juin 2023, une maquette d’un CubeSat a été réalisée au fablab.
Les CubeSat sont des satellites cubiques miniatures (10 cm × 10 cm × 10 cm – à peu près la taille d’un cube Rubik) qui pèsent environ 1 kg . Un CubeSat peut être utilisé seul (1 unité) ou en groupe (jusqu’à 24 unités).
Différentes machines et matériaux ont été utilisés :
– impression 3D pour les éléments replissant le CubeSat,
– panneaux solaires à la découpeuse laser (contreplaqué peuplier peints en noir, cellules photovoltaïques en matériau spécial, charnières)
– plaques de plexiglas pour les parois du CubeSat (pour voir à l’intérieur), fixée avec des scratchs adhésifs et des tiges en métal pour allier robustesse, facilité de démontage et de manipulation.
à gauche : Le CubeSat fermé, à droite : un des panneaux solaires est déployé.
Forum des codevsi 2023
Cette année encore une soutenance spéciale pour les projets tournant au tour du fablab a eu lieu !
Au programme des démonstrations :
prototype de drone sous-marin, caméra sous-marine open source KOSMOS, mangeoire connectée, système d’arrosage automatique de plante de laboratoire, amplificateur de guitare, atelier de pilotage de drone testée en collège ou encore prototypage de tapis de multiplication connectée !
Capteur de CO2 : de la TAF CoOC au lycée
Cette année, la mallette MERITE « objets animés » a servi en classe de seconde, au Lycée de l’Iroise, pour un projet test. L’objectif du projet ? Accompagner les lycéens pour qu’ils se mettent à la place d’un ingénieur et développent un capteur de C02 en 4 séances.
Le capteur de CO2 initial a été créé en TAF CoOC (un enseignement de spécialité sur les objets connectés dans notre école d’ingénieurs) en 2021. Durant 4 séances, les lycéens ont réfléchi au design et à l’usage de leur capteur, revu la programmation en blocs sur Ardublock, réfléchi à leur montage électronique et aux options de leur capteur.
Le design a bien sûr été revu et adapté en cours de projet, une première fois pour s’adapter au montage des composants électroniques puis avec le prototype en carton. La 4ème et dernière séance a eu lieu au fablab en fin d’année : au programme soudure, découpe laser et assemblage ! 4 salles du lycée seront ainsi équipées d’un capteur de CO2 permettant de signaler la nécessité d’aérer la salle. Les designs vont du simple cadran avec une aiguille qui tourne, à une lampe très esthétique, en passant par une fusée (avec un silhouette mobile), une plante et un talkie-walkie.
des prototypes en cartons… à l’assemblage au fablab !
Fichiers pdf des designs imaginés par les élèves :
Un diaporama a été utilisé pour guider les séances, de même que la mallette MERITE « objets animés« .
Course de drone au collège
Dans le cadre de leur projet CODEVSI, Hugo Dhers, Moustapha Mbaye et Antoine Carré ont animé un atelier de 2h au collège Victoire Daubié.
Programmation de drone, apprentissage du pilotage puis course de drones étaient au programme pour la classe de 4ème concerné.
Moustapha était au stand programmation avec de jolis défis
Voire réparait les drones après des chocs… Ces drones s’arrêtent au moindre choc et partent parfois en pièces détachées, un gros atout pour la sécurité des usagers lors de ce type d’utilisation en public !
Afin de faciliter la prise en main des drones par les collégiens, nos 2 étudiants ont produit des documents pédagogiques :
Les Trophées
Des trophées sont régulièrement fabriqués au fablab en différents bois, PMMA (plastique), mélange des deux, avec colle, sans colle, avec gravure etc.
Les 1er prix du Trophée vidéo
Un trophée pour la Bapav (vélo à Brest) avec une belle originalité dans la conception : le pont de recouvrance en plexiglas, le spiles de pont et les silhouettes en vélo en CP peuplier.
Le trophée SARA pour les navigateurs malvoyants en plexiglas et texturé.
Un des trophées du Global Village 2024 : les couverts et les lettres « global village » sont en MDF 3mm gravés, l’assiette est en CP peuplier 3mm, le globe terrestre est en MDF. Le trophée est recto-verso : on peut choisir la face à exposer en fonction de l’origine géographique du vainqueur. Le socle est doublé (2x3mm) pour compenser le poids.
Découverte de la KOSMOS
Cette année, 3 étudiants de 1ère année assemblent et testent la documentation de la KOSMOS, une caméra sous-marine open source créé au Konk-ar-lab (le fablab de Concarneau) et l’Ifremer.
Comme tout projet collaboratif et open source, la documentation présente des bugs, des imprécisions bref toute une série de petites (et moins petites) imperfections qu’il est précieux de corriger et de faire remonter à l’équipe projet.
Après un mois de rédaction de cahiers des charges fonctionnel et 2 semaines de prise en main du sujet, notre dream team a enfin mis les mains dans le cambouis et commencé à assembler, nettoyer le support des pièces imprimées à l’imprimante 3D, visser sur les supports découpés à la découpeuse laser, souder (avec une montée en compétence fulgurante !).
Jeudi 13 avril, c’était l’occasion de rencontrer l’équipe projet avec des membres de l’Ifremer, du Konk-ar-lab, et les étudiants de l’ENIB qui travaillent sur le même projet.
Si ce projet est pour l’instant un projet de 1ère année, il a vocation à être continuer dans les années supérieures et intégré à une dynamique de projets de sciences participatives.
Un challenge dans un futur pas si lointain ? Tester si la KOSMOS peut être déployé sur un monocoque comme notre POGO…
Robotise
I – Introduction
-
But du projet (et les domaines / technologies qu’il couvre)
-
Spécifications du projet
Diagramme de cas d’utilisation :
Diagramme de blocs d’architecture :
Ce diagramme offre une vue d’ensemble de la conception de la machine et des diverses interconnexions qui la composent. Il présente les flux de données entre la carte de contrôle de la machine et l’application utilisateur, les flux énergétiques entre les différents éléments de la carte mère et le Raspberry Pi, ainsi que les flux de liquides entre les réservoirs d’entrée et la sortie du bec verseur.
En résumé, ce schéma permet de visualiser clairement les interactions entre les éléments clés du système, mettant en lumière les échanges de données, d’énergie et de liquides qui rendent possible le fonctionnement harmonieux de la machine à cocktails.
II- Hardware
-
Conception 3D
Liste nécessaire pour impression 3D :
- 3 raccords G1/2” femelle vers cannelé 8mm par ligne hydraulique (2 pour l’électrovanne et 1 pour le débitmètre)
- Mux 2 entrées vers 1 sortie pour raccorder 2 lignes ensemble
- 1 raccord G1/2” mâle vers cannelé 8mm par ligne hydraulique (pour le débitmètre)
Voici une représentation 3D de ces 3 éléments dans le même ordre que cité ci-dessus:

Voici une représentation 3D du châssis qui fait entre 40cm et 60cm :
-
Électronique embarquée
Liste matériel pour configuration 7 réservoirs (2 sirops, 2 jus, 2 alcools et 1 eau) :
- 10 transistors NPN (ici BD241C de ST)
- 10 résistances de 10 ohms
- 7 électrovannes 12V
- 3 débitmètres (ref: YF-B2)
- 3 pompes 12V
- 1 alimentation 240V~ – 5V / 12V (ref: RD65A)
- Flexibles
- Raspberry PI 3B+
L’objectif ici est de concevoir la partie esclave de la machine, qui sera pilotée via l’application utilisateur. La carte de contrôle (en l’occurrence, le Raspberry Pi 3B+) sera responsable de la gestion des différents composants de la machine grâce à ses broches GPIO. Étant donné que la machine doit être capable de fournir diverses boissons à l’utilisateur, il est nécessaire d’ajouter des signaux de contrôle à la partie matérielle. Ces signaux contrôleront les grilles des transistors pour les rendre conducteurs ou non, en fonction du composant à alimenter (pompe et/ou électrovanne).
Un autre aspect crucial est le contrôle du volume de liquide versé par le système. À cet effet, des débitmètres sont installés sur chaque conduite hydraulique reliée à la sortie de chaque pompe, permettant de surveiller en temps réel le volume de chaque liquide versé. Ces débitmètres sont des capteurs à effet Hall qui envoient des impulsions au Raspberry Pi lorsqu’ils détectent un liquide dans la conduite. Le Raspberry Pi est alors chargé du traitement des données et de la gestion du débit des pompes pour délivrer le volume de liquide demandé.
Le schéma électrique ci-dessous, implémenté sur une carte PCB, présente le Raspberry Pi sur la droite, représenté par ses broches GPIO, ainsi que la carte mère de la machine, avec les composants alimentés en 5V ou 12V. On y distingue également les signaux de contrôle des transistors et les signaux de retour d’information des débitmètres.
Schéma PCB :
La disposition finale choisie est présentée ci-après, sans les connexions filaires pour plus de clarté :

Pour résumer simplement la configuration d’une ligne de base du circuit hydraulique, voici l’ordre à suivre : Réservoir -> Électrovanne -> Pompe -> Débitmètre -> Bec de sortie. La séquence de distribution d’un liquide se déroule comme suit : l’électrovanne associée à un réservoir s’ouvre, puis la pompe s’active. Le volume de liquide versé est mesuré par le débitmètre, et une fois le volume souhaité atteint, la pompe se désactive et l’électrovanne se ferme.
Afin de réaliser des économies, deux lignes peuvent être combinées pour utiliser une seule pompe et un seul débitmètre pour deux réservoirs différents. Il est donc nécessaire de relier les deux lignes ensemble après les électrovannes en utilisant un multiplexeur (Mux) à deux entrées et une sortie, qui sera connectée à la pompe unique.
III – Software
-
Application mobile
Fonctionnalités
Cette application a de multiples fonctionnalités:
– Elle permet à l’utilisateur de choisir un cocktail à commander
– Elle permet à l’administrateur de mettre à jour les cocktails de l’application par rapport à la base de données
– Elle permet à l’administrateur de mettre à jour les ingrédients et leurs quantités dans la base de données
– Elle permet à l’utilisateur d’avoir des cocktails favoris
Déroulement de l’application
Dans un premier temps, l’utilisateur doit accepter deux permissions: l’accès au Bluetooth et l’accès à la position.

Ensuite, la configuration BLE (Bluetooth Low Energy) est indispensable. L’application affiche une liste des appareils Bluetooth Low Energy disponibles. À ce stade, il suffit de choisir l’appareil portant le nom « robotise » ou « rpi-gatt-server ».
Lorsque l’appareil est sélectionné, un service est créé pour gérer le Bluetooth du téléphone. Si l’appareil se déconnecte du BLE pour une raison quelconque, la méthode onServiceDisconnected sera appelée.
Une fois le service Bluetooth activé, un autre service est créé dans le but de gérer la connexion et la communication entre les deux éléments. Ce service se connecte alors à l’appareil Raspberry Pi et récupère le serveur GATT du Raspberry. L’application communique avec le service, qui à son tour communique avec l’API Bluetooth LE.
L’implémentation BLE a été fortement inspirée d’un projet existant : Bluetooth LE GATT.
Pour que cela fonctionne correctement, les caractéristiques suivantes doivent être présentes dans le service :
- CommanderCocktailCharacteristic : la caractéristique permettant d’envoyer une commande de cocktail.
- BDRecettesCharacteristic : la caractéristique permettant de recevoir la liste des recettes de cocktails.
- BDIngredientsCharacteristic : la caractéristique permettant de recevoir la liste des ingrédients présents dans la base de données.
- MajIngredientsCharacteristic : la caractéristique permettant de mettre à jour les ingrédients disponibles dans la machine dans la base de données.
- AddCocktailCharacteristic : la caractéristique permettant d’ajouter un cocktail à la base de données.
- DeleteCocktailCharacteristic : la caractéristique permettant de supprimer un cocktail de la base de données.
- AjouterIngredientCharacteristic : la caractéristique permettant d’ajouter un ingrédient à la base de données.
- DeleteIngredientCharacteristic : la caractéristique permettant de supprimer un ingrédient de la base de données.
Pour l’instant, l’utilisateur a accès à une seule fonctionnalité : commander un cocktail. Lors de la connexion, la fenêtre ListCocktailsActivity s’ouvre, permettant à l’utilisateur de visualiser la liste des cocktails disponibles. Cette liste est gérée par la classe CocktailListView. Chaque cocktail est représenté par la classe CocktailItem, et son affichage est contrôlé par la classe CocktailsArrayAdapter. En cliquant sur un cocktail, une page s’ouvre (PopUpCocktail), affichant la composition du cocktail.
Chaque ingrédient est représenté par la classe IngredientItem, et son affichage est géré par la classe IngredientArrayAdapter. L’utilisateur peut modifier les quantités de chaque ingrédient avant d’appuyer sur le bouton « commander ». Il a également la possibilité de choisir un cocktail aléatoire grâce à la classe WheelActivity. L’utilisateur peut faire tourner une roue trois fois, et à chaque tour, un ingrédient sera sélectionné avec une quantité aléatoire attribuée. Ce processus permet de créer un cocktail aléatoire à partir des ingrédients disponibles.
Après avoir commandé son cocktail, l’utilisateur a la possibilité de jouer en duo au morpion en attendant que son cocktail soit prêt. Une fois le cocktail terminé, l’utilisateur recevra une notification.
De son côté, l’administrateur doit entrer un mot de passe pour se connecter. Pour l’instant, le mot de passe est « hello » et est codé en dur dans l’application. À l’avenir, il serait préférable d’utiliser une méthode de stockage et de vérification de mot de passe plus sécurisée.
Après s’être connecté, la fenêtre AdminActivity s’ouvre et l’administrateur dispose de plusieurs fonctionnalités. Il peut :
-
-
-
-
- Choisir un cocktail à commander, tout comme l’utilisateur.
- Ajouter ou supprimer un cocktail.
- Ajouter ou supprimer un ingrédient.
- Mettre à jour les quantités de chaque ingrédient disponible dans la machine.
- Récupérer la liste des cocktails proposés par la machine.
-
-
-
Ces options offrent à l’administrateur un contrôle complet sur les cocktails et les ingrédients disponibles, ainsi que sur la gestion des stocks de la machine.
Si l’administrateur choisit l’option « ajouter un ingrédient », une nouvelle fenêtre s’ouvre : AdminAddIngredientActivity. La liste des ingrédients est chargée depuis la base de données. L’administrateur a ensuite la possibilité d’ajouter un ingrédient. Cet ingrédient sera envoyé via Bluetooth Low Energy (BLE) à la base de données du Raspberry Pi. Enfin, la liste des ingrédients mise à jour est renvoyée du Raspberry Pi vers le téléphone de l’administrateur.
Pour ajouter ou supprimer un cocktail, le principe est le même. Pour ajouter un cocktail, on ne peut le faire qu’à partir de la liste des ingrédients déjà présents dans la base de données.
Si l’on souhaite ajouter un cocktail contenant un ingrédient qui n’est pas encore présent dans la base de données, il faut d’abord ajouter cet ingrédient en utilisant les options d’ajout d’ingrédients décrites précédemment.
Lien vers les sources applications :
[1]:https://github.com/android/connectivity-samples/tree/main/BluetoothLeGatt
[2]:https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html
Structure
Robotise
├── app
│ ├── libs
│ ├── src
│ │ ├── androidTest
│ │ │ └── java
│ │ │ └── com/example/robotise
│ │ └── main
│ │ ├── java
│ │ │ └── com/example/robotise
│ │ │ ├── ble
│ │ │ ├── bluetooth
│ │ │ ├── control
│ │ │ ├── list
│ │ │ └── model
│ │ │ └── morpion
│ │ └── res
│ │ ├── drawable
│ │ ├── layout
│ │ ├── menu
│ │ ├── mipmap
│ │ └── values
│ └── build.gradle
├── build.gradle
└── settings.gradle
-
Communication BLE sur Raspberry Pi
Sur le Raspberry Pi, la bibliothèque « ble » contient toutes les classes utiles à l’implémentation du serveur GATT sur Raspberry Pi. Le fichier main.py doit être lancé sur le Raspberry Pi, il crée un serveur GATT qui va pouvoir communiquer avec l’application.
Organisation
Cette bibliothèque contient 3 fichiers :
- advertisement.py : Contient les classes nécessaires à l’émission des différents UUIDs après la création du serveur.
- gatt_server.py : Contient les classes nécessaires à la création du serveur et l’initialisation de ses différents paramètres.
- main.py : Initialise le serveur BLE en utilisant les classes réalisées précédemment.
Fonctionnement
Les concepts abordés dans la partie suivante sont expliqués ici : https://www.bluetooth.com/bluetooth-resources/intro-to-bluetooth-low-energy/
Les fichiers advertisement.py et gatt_server.py ne sont pas de nous et à ce titre, ne feront pas l’objet d’une documentation (Crédit : https://github.com/bluez/bluez).
Le fichier main.py utilise advertisement.py et gatt_server.py pour créer le serveur BLE.
On dispose de deux classes :
- TxCharacteristic qui gère la communication dans le sens Raspberry PI -> Téléphone
- RxCharacteristic qui gère la communication dans le sens Téléphone -> Raspberry PI
Ensuite, on redéfinit des classes pour chaque opération que l’on veut réaliser (mise à jour de base de données, commande, etc), chacune est identifiée par un UUID référencé en début de fichier.
Tous les UUID ne sont pas utilisés, mais ils permettent de couvrir l’intégralité des cas imaginés.
-
Manipulation de la base de données
Sur le raspberry, la bibliothèque « sql » contient toutes les classes et fonctions utiles pour l’intéraction entre le base de données et le fichier python.
Fonctionnement
Voici une description du rôle de chaque fonction de la bibliothèque :
- mysql_get_cocktail_list() : Permet de récupérer toutes les colonnes de la table cocktail.
- mysql_get_ingredient_list() : Permet de récupérer toutes les colonnes de la table ingredient.
- mysql_get_quantite_machine() : Permet de récupérer toutes les colonnes de la table machine.
- mysql_get_all_cocktail_composition_without_bec(id_cocktail) : Prend en entrée l’identifiant du cocktail, réalise une jointure entre les tables composition, cocktail et ingredient et retourne id_cocktail, nom_cocktail, id_ingredient, nom_ingredient et quantite.
- mysql_get_all_cocktail_composition_with_bec(id_cocktail) : Prend en entrée l’identifiant du cocktail, réalise une jointure entre les tables composition, cocktail et ingredient et retourne id_cocktail, nom_cocktail, id_ingredient, nom_ingredient, quantite et id_bec.
- mysql_get_bec_from_ingredient(id_ingredient) : Prend en entrée l’identifiant d’un ingredient, retourne le numéro de bec associé.
- mysql_add_ingredient(nom_ingredient) : Prend en entrée le nom d’un ingrédient, puis l’ajoute dans la base de donnée. L’identifiant de l’ingrédient est automatique et le numéro de bec est initialisé à NULL.
- mysql_maj_machine(maj) : Prend en entrée une liste de tuples au format : ‘machine.id_bec’,’ingredient.id_ingredient’,’machine.quantite’, dans la table ingredient passe toute la colonne id_bec à NULL (pour ne pas avoir de doublon), pour chaque identifiant de bec dans la table machine, rajoute la quantite passée en argument et enfin, dans la table ingrédient ajoute le numéro de bec correspondant à l’ingrédient.
- mysql_get_composition_for_machine(commande) : Prend en entrée une liste de tuples au format : ‘id_cocktail’,’id_ingredient’,’quantite’ réalise une itération dans la liste pour retourner une liste de tuples au format ‘id_bec’,’quantite’ ou id_bec représente l’identifiant du bec lié à l’identifiant de l’ingredient passé en argument. Si un ingrédient ne dispose pas de numéro de bec, il n’est pas présent dans la machine donc on sort de la boucle et on retourne None.
- formalize_data_list(function) : Prend en entrée une fonction (l’une des fonctions ci-dessus) et convertis la sortie soit un tuple ou une liste de tuples en chaine textuel (x,y,z/a,b,c) afin de permettre l’envoie en Bluetooth.
- unformalize_data_list(initial_data) : Inverse de la fonction précédente, prend en entrée un string au format x,y,z/a,b,c et reconvertis en tuple ou liste de tuple
-
Interaction Python / plaque PCB
Concernant le code, tous les détails se trouvent dans le README de la partie machine. Voici quelques informations :
Le code permet de faire l’interface entre la commande utilisateur (bec, quantité) avec les différents becs de la machine et les composants utilisés.
Dans la machine, les becs 1 et 2 utilisent la pompe 1, tandis que le bec 3 utilise la pompe 2. Chaque bec a sa propre électrovanne pour contrôler le liquide voulu, et un débitmètre se trouve en sortie et renvoie un signal lorsqu’il détecte un liquide le traversant.
Pour faire l’interfaçage avec le Raspberry Pi, on trouve la fonction setupGPIO qui configure les entrées-sorties et les PWM pour les pompes.
La fonction stopLine arrête tous les composants, entre chaque ingrédient de la commande, à la fin de la commande, ou bien en phase de test à la fin du programme.
La fonction startLine gère la majeure partie du programme. On peut s’en servir pour amorcer le robot et ses pompes, ou bien en fonctionnement normal pour gérer le pompage d’un ingrédient. À l’intérieur, on ajoute l’évènement de callback du débitmètre pour contrôler la quantité de liquide pompée, et on lance startPompage pour chaque ingrédient, fonction simple qui démarre les pompes avec une PWM.
Le fichier main.py peut être lancé pour les phases de test.
IV – Résultats, difficultées rencontrées et perspectives
Parcourons les différentes disciplines du projet afin de balayer l’ensemble des résultats que nous proposons en fin de projet, les difficultés que nous avons rencontrées et ce que nous imaginons pour le futur de ce projet.
-
Difficultés rencontrées
Concernant la partie machine, le design de la carte mère et le code Python contrôlant les composants n’ont pas posé de problème particulier, grâce aux nombreux tests intermédiaires effectués tout au long du projet. Cependant, un problème conséquent est apparu en milieu de projet concernant l’étanchéité du circuit hydraulique. Certaines pièces imprimées en 3D, comme les raccords et les multiplexeurs, peuvent facilement engendrer des fuites ou laisser passer des bulles d’air, ce qui désamorce les pompes et rend le circuit d’eau inutilisable. L’idéal aurait été d’acheter également en amont ces différents raccords pour éviter ces problèmes. Nous avons surmonté ce problème grâce à l’utilisation de téflon de plomberie.
Concernant la partie application, le choix du protocole de communication a été la principale difficulté. En effet, la communication BLE est complexe de base, et nous avons dû l’implémenter en différents langages : Python et Java. De plus, ce protocole de communication est assez instable. Par exemple, l’application ne reconnaît pas toujours le Raspberry Pi en tant qu’appareil BLE disponible. Il faut donc redémarrer le service Bluetooth sur Raspberry Pi.
-
Résultats
Tous les composants ont pu être intégrés à la machine, et l’alimentation 5V / 12V se branche directement au secteur, ce qui permet d’alimenter le Raspberry Pi et la carte de puissance. La machine finale comprend 3 réservoirs de liquide que l’on peut remplir via le haut des bouteilles.
Concernant la partie application :
L’application fonctionne correctement, et l’utilisateur peut communiquer avec la base de données comme il le souhaite et commander le cocktail de son choix. Pour la démonstration, nous avons choisi de mettre trois colorants alimentaires RJB (rouge, jaune et bleu) dans les réservoirs afin de pouvoir réaliser toutes les couleurs possibles (censées symboliser les cocktails en utilisation normale). Les résultats étaient très probants, et la machine a pu fonctionner toute la matinée du forum PROCOM sans souci notable, autant du côté machine que du côté application.
État final de la machine : Rendu 3D / Châssis final
Nous sommes très satisfaits du résultat, après de nombreuses difficultés. Le travail en équipe était très efficace et nos liens se sont renforcés. Nous encourageons les lecteurs de cet article à proposer des projets de ce type à l’IMT, source d’interdisciplinarité et de liberté dans les choix du projet.
-
Perspectives
Les perspectives d’améliorations sont les suivantes :
- réaliser une ligne pour le rinçage et l’ajouter au système
- rajouter d’autres lignes pour avoir une multitude de choix
- faire un châssis plus solide avec des matériaux plus adaptés (résistant à l’eau)
- mettre une interface graphique intégrée au robot
V – Annexes
Lien gitlab : https://gitlab.imt-atlantique.fr/procom2022-robotise/
Publicité diffusée lors du forum Projet :












































