{"id":6739,"date":"2021-01-11T16:16:55","date_gmt":"2021-01-11T15:16:55","guid":{"rendered":"https:\/\/telefab.fr\/?p=6739"},"modified":"2026-04-30T17:33:31","modified_gmt":"2026-04-30T15:33:31","slug":"recup-solution-technique","status":"publish","type":"post","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/recup-solution-technique\/","title":{"rendered":"R\u00e9Cup &#8211; Solution technique"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Solution technique &#8211; R\u00e9Cup<\/span><\/p>\n<p><b>Arthur PILETTE \u2013 Vincent GUILLON \u2013 Raphael VOYER \u2013 Pierre DUGAST<\/b><\/p>\n<h1><span style=\"font-weight: 400;\">I. Pr\u00e9sentation<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Objectifs<\/span><\/h2>\n<h2><span style=\"font-weight: 400;\">B. Design<\/span><\/h2>\n<h1><span style=\"font-weight: 400;\">II. Conception technique\u00a0<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Structure physique (m\u00e9canique + mat\u00e9riel utilis\u00e9)<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Mat\u00e9riel utilis\u00e9<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Structure m\u00e9canique du syst\u00e8me<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Circuit \u00e9lectrique<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">B. Structure logicielle<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Pr\u00e9sentation des diff\u00e9rents programmes<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Diagrammes de s\u00e9quence<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Logigrammes (interactions entre les programmes et lien vers le code)<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">C. Interactions avec le syst\u00e8me<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Fonctionnalit\u00e9s<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Diagrammes de cas d\u2019utilisation<\/span><\/li>\n<\/ul>\n<h1><span style=\"font-weight: 400;\">III. Choix de conception<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Caution<\/span><\/h2>\n<h2><span style=\"font-weight: 400;\">B. Structure m\u00e9canique<\/span><\/h2>\n<h2><span style=\"font-weight: 400;\">C. Analyse de tasses (d\u00e9tection + pr\u00e9sence)<\/span><\/h2>\n<h1><span style=\"font-weight: 400;\">IV. Am\u00e9liorations possibles du syst\u00e8me<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Esth\u00e9tisme (site Web avec CSS + design physique)<\/span><\/h2>\n<h2><span style=\"font-weight: 400;\">B. Mise en place d\u2019une application Android<\/span><\/h2>\n<h2><span style=\"font-weight: 400;\">C. Am\u00e9lioration des performances<\/span><\/h2>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400;\">I. Pr\u00e9sentation<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Introduction de la solution et de ses objectifs<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Les caf\u00e9s, restaurants et caf\u00e9t\u00e9rias font face depuis de nombreuses ann\u00e9es \u00e0 des vols et casses de tasses. Bien que la tasse ne soit pas un objet de valeur, \u00e0 grande \u00e9chelle ces actes ont de multiples cons\u00e9quences. Le premier est l\u2019impact financier. Ce sont plus de 100 tasses qui sont perdues chaque ann\u00e9e. Le coup de rachat \u00e9tant d\u2019environ 1\u20ac20 par unit\u00e9 en moyenne pour les grandes et petites tasses. L\u2019organisation a un co\u00fbt minimum de 120\u20ac chaque ann\u00e9e pour remplacer ses tasses. Le second est l\u2019impact environnemental. \u00c9tant donn\u00e9 qu\u2019il est n\u00e9cessaire d\u2019utiliser un nouveau mat\u00e9riel sans que le pr\u00e9c\u00e9dent ait compl\u00e9t\u00e9 son cycle de vie, on perd l\u2019avantage de l\u2019impact \u00e9cologique de la tasse en c\u00e9ramique sur ses concurrents. Il est donc n\u00e9cessaire de prolonger la vie de la tasse pour am\u00e9liorer le bilan environnemental des caf\u00e9s, restaurants et caf\u00e9t\u00e9rias.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">C\u2019est pourquoi nous avons mis au point la solution R\u00e9Cup afin de r\u00e9duire les pertes de tasses de la caf\u00e9t\u00e9ria de l\u2019IMT Atlantique. Le syst\u00e8me r\u00e9Cup vise donc \u00e0 r\u00e9pondre aux d\u00e9fis suivants :<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">R\u00e9duire l\u2019impact financier li\u00e9s aux pertes de tasses pour la caf\u00e9t\u00e9ria<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">R\u00e9duire l\u2019impact environnemental induit par les contenants de boissons chaudes<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Inciter les consommateurs \u00e0 rendre leurs tasses<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">B. Design<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Le design de notre syst\u00e8me est assez simple car une grande partie du syst\u00e8me est prot\u00e9g\u00e9e par l\u2019armature de notre syst\u00e8me. Seuls les composants dont l\u2019interaction est utile dans la r\u00e9alisation d\u2019une ou plusieurs op\u00e9rations sont visibles depuis l\u2019ext\u00e9rieur du syst\u00e8me. Parmi ces \u00e9l\u00e9ments on retrouve l\u2019afficheur LCD permettant d\u2019indiquer \u00e0 l\u2019utilisateur l\u2019avancement des op\u00e9rations et les t\u00e2ches \u00e0 suivre, le module RFID lui permettant de s\u2019identifier ainsi que le compartiment de d\u00e9p\u00f4t de tasse. En d\u00e9finitive, le design final de notre prototype est le suivant :<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131325992_383492139604720_7318918775053910724_n.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6740\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131325992_383492139604720_7318918775053910724_n.jpg\" alt=\"\" width=\"4032\" height=\"1911\" \/><\/a><\/p>\n<h1><span style=\"font-weight: 400;\">II. Conception technique\u00a0<\/span><\/h1>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me r\u00e9alisant nos divers services est relativement complexe car il int\u00e8gre \u00e0 la fois une partie m\u00e9canique, \u00e9lectronique et logicielle. Afin que vous puissiez comprendre le fonctionnement technique et la structure de ce syst\u00e8me, nous en avons d\u00e9taill\u00e9 la conception technique.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">A. Structure physique (m\u00e9canique + mat\u00e9riel utilis\u00e9)<\/span><\/h2>\n<ol>\n<li style=\"font-weight: 400;\">\n<h3><span style=\"font-weight: 400;\">Mat\u00e9riel utilis\u00e9<\/span><\/h3>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Avant de vous pr\u00e9senter les diff\u00e9rents points de la conception technique, il est important de vous pr\u00e9senter le mat\u00e9riel utilis\u00e9. La liste de mat\u00e9riel que nous avons \u00e9tablie vous permettra de mieux comprendre le r\u00f4le de chacun des composants et leur contribution dans le syst\u00e8me global. Ce tableau comprend aussi une analyse du co\u00fbt d\u2019achat des diff\u00e9rents composants et ainsi vous pr\u00e9senter le budget total n\u00e9cessaire afin de mettre en place une telle solution.<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>MAT\u00c9RIEL<\/b><\/td>\n<td><b>PRIX<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Raspberry Pi 3B+<\/span><\/td>\n<td><span style=\"font-weight: 400;\">40\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Pi camera module V2<\/span><\/td>\n<td><span style=\"font-weight: 400;\">15\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Ecran LCD I2C<\/span><\/td>\n<td><span style=\"font-weight: 400;\">10\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">D\u00e9tecteur de pr\u00e9sence<\/span><\/td>\n<td><span style=\"font-weight: 400;\">4\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Boutons poussoirs<\/span><\/td>\n<td><span style=\"font-weight: 400;\">1\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Led couleurs x5\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">+ LED \u00e9clairage x3<\/span><\/td>\n<td><span style=\"font-weight: 400;\">2\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Module RFID + badge RFID<\/span><\/td>\n<td><span style=\"font-weight: 400;\">2\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Arduino<\/span><\/td>\n<td><span style=\"font-weight: 400;\">15\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">CNC shield et drivers moteurs<\/span><\/td>\n<td><span style=\"font-weight: 400;\">6\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Axes aluminium<\/span><\/td>\n<td><span style=\"font-weight: 400;\">26\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Poulies<\/span><\/td>\n<td><span style=\"font-weight: 400;\">11\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Alimentation 12V 5A<\/span><\/td>\n<td><span style=\"font-weight: 400;\">9,3\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Visserie<\/span><\/td>\n<td><span style=\"font-weight: 400;\">13\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Moteurs pas \u00e0 pas type NEMA 17\u00a0 x3<\/span><\/td>\n<td><span style=\"font-weight: 400;\">21\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Roues\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">5,5\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Courroies\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">3,5\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Servomoteurs x2<\/span><\/td>\n<td><span style=\"font-weight: 400;\">2,5\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Interrupteurs fin de course x7<\/span><\/td>\n<td><span style=\"font-weight: 400;\">3\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Filament PETG environ 400 gr<\/span><\/td>\n<td><span style=\"font-weight: 400;\">12\u20ac<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Bois\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">r\u00e9cup<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>Raspberry Pi 3B+<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le Raspberry Pi est un nano-ordinateur capable disposant de GPIO afin de piloter un grand nombre de composants. Nous avons opt\u00e9 pour le Raspberry Pi afin de piloter l\u2019ensemble des composants du projet car le nombre de GPIO d\u2019une carte Arduino UNO ou AT MEGA n\u2019est pas suffisant pour brancher l\u2019ensemble de nos composants. De plus, notre logique s\u00e9quentielle implique d\u2019utiliser plusieurs composants simultan\u00e9ment tels que le bouton Terminer et le capteur ultrason pour permettre \u00e0 l\u2019utilisateur de terminer son op\u00e9ration de d\u00e9p\u00f4t ou d\u00e9poser une autre tasse. Un Arduino n\u2019est pas capable de r\u00e9aliser de telles op\u00e9rations alors que le Raspberry capable de g\u00e9rer des processus peut utiliser les \u201cThreads\u201d \u00e0 cet effet pour parall\u00e9liser certaines parties de notre code. Pour finir, le Raspberry dispose aussi de ressources suffisantes (RAM, CPU, \u2026) pour accepter un module l\u00e9ger de deep learning qui nous sera utile pour l\u2019analyse d\u2019objets.<\/span><\/p>\n<p><strong>Arduino et CNC shield<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">En compl\u00e9ment de notre Raspberry Pi, nous avons utilis\u00e9 un Arduino afin de lui confier la t\u00e2che de gestion du syst\u00e8me de stockage. Cela permet permet trois choses ;\u00a0 tout d\u2019abord l\u2019utilisation d\u2019un shield CNC qui permet d\u2019accueillir les drivers moteurs, l\u2019arriv\u00e9e du courant de puissance pour les moteurs, les connecteurs pour les capteurs de fin de course, etc. L\u2019utilisation de ce shield simplifie et organise grandement le c\u00e2blage. De plus l\u2019arduino est ensuite reli\u00e9 au Raspberry via un c\u00e2ble USB, ce qui est n\u00e9cessaire. Brancher tout le syst\u00e8me de stockage sur le Raspberry aurait occup\u00e9 une vingtaine de pins (soit la moiti\u00e9 du GPIO), ne laissant alors qu\u2019une dizaine de pins data pour le reste des composants de notre solution, ce qui n\u2019aurait pas suffit. Finalement cette architecture permet d\u2019utiliser le logiciel GRBL sur l\u2019arduino, qui permet de faciliter la gestion des d\u00e9placements du syst\u00e8me de stockage.<\/span><\/p>\n<p><strong>Ecran LCD I2C<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">L\u2019\u00e9cran LCD a aussi un r\u00f4le fondamental dans notre syst\u00e8me car il joue le r\u00f4le de front-end avec notre syst\u00e8me en affichant les informations \u00e0 l\u2019\u00e9cran. Cet \u00e9cran peut afficher des instructions telles que :<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Pr\u00e9senter votre badge<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">D\u00e9poser la tasse<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Retirer l\u2019objet<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">L\u2019\u00e9cran indiquera aussi les r\u00e9sultats des op\u00e9rations r\u00e9alis\u00e9es par notre syst\u00e8me tels que :\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Caution rendue<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">L\u2019objet d\u00e9pos\u00e9 est une tasse<\/span><\/li>\n<\/ul>\n<p><strong>Module RFID et badge<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le module RFID est un module de radio-identification permettant la m\u00e9morisation et la r\u00e9cup\u00e9ration de donn\u00e9es \u00e0 distance. Ce module est capable de reconna\u00eetre les tags pr\u00e9sents dans les diff\u00e9rents badges. Ainsi le module RFID nous permet d\u2019identifier de mani\u00e8re unique chacun des utilisateurs \u00e9vitant ainsi d\u2019\u00e9ventuels vols li\u00e9s \u00e0 des usurpations d\u2019identit\u00e9.<\/span><\/p>\n<p><strong>Capteur ultrason\u00a0<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le capteur ultrason permet de d\u00e9tecter des \u00e9l\u00e9ments pr\u00e9sents en champ proche gr\u00e2ce \u00e0 la r\u00e9verb\u00e9ration des ondes qu\u2019il \u00e9met. Ce composant permet ainsi de d\u00e9tecter lorsqu\u2019un objet est d\u00e9pos\u00e9 dans le compartiment. Un tel mode de fonctionnement permet de n\u2019utiliser la cam\u00e9ra utilis\u00e9e pour l\u2019analyse que lorsqu\u2019un objet est d\u00e9tect\u00e9. De ce fait, la consommation en ressource et en \u00e9nergie est bien plus mod\u00e9r\u00e9e am\u00e9liorant ainsi la durabilit\u00e9 de notre syst\u00e8me.\u00a0<\/span><\/p>\n<p><strong>Module Pi-Cam\u00e9ra<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le module Pi Cam\u00e9ra est un module de cam\u00e9ra adapt\u00e9 pour le Raspberry Pi nous permettant de visionner l\u2019objet qui a \u00e9t\u00e9 d\u00e9pos\u00e9 dans le compartiment pour que le Raspberry Pi l\u2019analyse. Bien que ce module soit plus int\u00e9ressant qu\u2019une Webcam car il est plus petit et est plus adapt\u00e9 au Raspberry Pi, il est tout de m\u00eame possible d\u2019utiliser une webcam pour r\u00e9aliser cette fonction.<\/span><\/p>\n<p><strong>LED \u00e9clairage<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Les LED d\u2019\u00e9clairage permettent d\u2019illuminer le compartiment de d\u00e9p\u00f4t afin que l\u2019objet soit visible par la cam\u00e9ra pour l\u2019analyse.\u00a0<\/span><\/p>\n<p><strong>Bouton poussoir \u201cTerminer\u201d<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Ce bouton permet de r\u00e9aliser de mettre en place un m\u00e9canisme d\u2019interrupteur permettant d\u2019indiquer au syst\u00e8me lorsque l\u2019utilisateur souhaite terminer l\u2019op\u00e9ration de d\u00e9p\u00f4t.<\/span><\/p>\n<p><strong>Distribution (Axes aluminium, roues, chariot)<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me de distribution comprend diff\u00e9rents \u00e9l\u00e9ments tels que des axes, des roues et un chariot permettant d\u2019acheminer la tasse jusqu\u2019aux bacs de stockage. Les axes sont des profil\u00e9s 2040. Gr\u00e2ce \u00e0 des \u00e9crous adapt\u00e9s (T-nuts) qui se glissent dans la gorge des profil\u00e9s, on peut facilement assembler ces axes sans les percer mais \u00e9galement y monter des pi\u00e8ces (supports moteurs, \u2026). Le tout offre une structure solide.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ces profil\u00e9s permettent aussi de guider les roues qui permettent la mobilit\u00e9 du chariot transportant les tasses sur l\u2019axe vertical et l\u2019axe horizontal.<\/span><\/p>\n<p><strong>Moteurs pas \u00e0 pas, poulies, courroies\u00a0<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Les deux axes du syst\u00e8me sont entra\u00een\u00e9s par des moteurs pas \u00e0 pas de type Nema 17, de type 200 pas par r\u00e9volution, avec un couple de 3.2 kg-cm. Deux moteurs fonctionnant de mani\u00e8re synchronis\u00e9e motorisent l\u2019axe vertical, car ceux-ci doivent supporter le poids de l\u2019axe horizontal. Ce dernier est motoris\u00e9 par un seul moteur, vu qu\u2019il ne doit faire bouger que le chariot contenant la tasse \u00e0 stocker. Les deux axes (vertical et horizontal) sont entra\u00een\u00e9s par courroie et sont guid\u00e9s par des roues sur roulement, permettant un fonctionnement rapide et fluide.<\/span><\/p>\n<p><strong>Servomoteurs\u00a0<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Deux servomoteurs sont utilis\u00e9s pour la m\u00eame fonction, mais \u00e0 deux endroits diff\u00e9rents. Ils permettent de retenir la tasse dans le compartiment d\u2019analyse de la tasse et sur le chariot mobile qui distribue les tasses. Gr\u00e2ce \u00e0 un syst\u00e8me de bielle, ils contr\u00f4lent la fermeture et l\u2019ouverture de la porte qui retient ou lib\u00e8re la tasse.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6741\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture.png\" alt=\"\" width=\"536\" height=\"263\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">position ferm\u00e9e<\/span><\/i>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<i><span style=\"font-weight: 400;\">position ouverte<\/span><\/i><\/p>\n<p><strong>Alimentation 12V 5A<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Elle permet de fournir la puissance n\u00e9cessaire au bon fonctionnement des moteurs pas \u00e0 pas.<\/span><\/p>\n<p><strong>Interrupteur \u00e0 lame souple<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Ces contacteurs servent \u00e0 diff\u00e9rentes fonctions dans la solution. Deux sont utilis\u00e9s comme interrupteur de fin de course au sein du syst\u00e8me de stockage, permettant de calibrer le syst\u00e8me pr\u00e9cis\u00e9ment au d\u00e9marrage.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Les autres servent de garde-fou. Un premier permet d\u2019arr\u00eater le syst\u00e8me si la porte arri\u00e8re (acc\u00e8s aux casiers) est ouverte. Trois autres d\u00e9tectent la pr\u00e9sence des trois casiers de stockage. Si l\u2019un d\u2019eux manque,\u00a0 la machine est \u00e9galement bloqu\u00e9e. Un autre permet de savoir si le chariot qui transporte les tasses est \u00e0 sa position initiale, pr\u00eat \u00e0 recevoir une tasse. Si ce n\u2019est pas le cas, on demande au syst\u00e8me de stockage de se replacer correctement.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un dernier contacteur permet de savoir si la tasse d\u00e9pos\u00e9e est grande ou petite pour la ranger dans un casier appropri\u00e9.<\/span><\/p>\n<h3><strong>Filament PETG<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il a permis de r\u00e9aliser une grande partie des pi\u00e8ces m\u00e9caniques du syst\u00e8me : liaison des axes, supports moteurs, chariot, \u2026 Toutes les pi\u00e8ces bleues sont r\u00e9alis\u00e9es en impression 3D. Ce filament s\u2019imprime assez facilement et offre une meilleure tenue m\u00e9canique par rapport au PLA.<\/span><\/p>\n<h3><strong>Bois<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Du m\u00e9dium de 3 et 6 mm a permis de construire diff\u00e9rents \u00e9l\u00e9ments du syst\u00e8me par d\u00e9coupe laser : casiers, fa\u00e7ade avant, etc. Des planches de pin de 18mm ont \u00e9t\u00e9 n\u00e9cessaires pour fixer les casiers, cr\u00e9er une porte et offrir une structure sur laquelle a \u00e9t\u00e9 assembl\u00e9 tout le syst\u00e8me.\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\">\n<h3><span style=\"font-weight: 400;\">Structure m\u00e9canique du syst\u00e8me<\/span><\/h3>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6742\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture1.png\" alt=\"\" width=\"1063\" height=\"439\" \/><\/a><\/p>\n<ol>\n<li>\n<h3>Circuit \u00e9lectronique<\/h3>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">L\u2019ensemble des composants n\u00e9cessaires au fonctionnement du syst\u00e8me doivent chacun \u00eatre branch\u00e9 de mani\u00e8re en fonction de leur m\u00e9canique interne. Nous avons donc \u00e9tabli le sch\u00e9ma de c\u00e2blage global permettant le fonctionnement des composants et donc du syst\u00e8me. Pour des raisons de lisibilit\u00e9, les pin et GPIO utilis\u00e9s dans notre code sont diff\u00e9rents du sch\u00e9ma.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6744\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture2.png\" alt=\"\" width=\"996\" height=\"659\" \/><\/a><\/p>\n<p>Sch\u00e9ma \u00e9lectronique li\u00e9 \u00e0 la Raspberry<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6743\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture3.png\" alt=\"\" width=\"825\" height=\"745\" \/><\/a><\/p>\n<p>Sch\u00e9ma \u00e9lectronique li\u00e9 \u00e0 l&rsquo;arduino<\/p>\n<h2><span style=\"font-weight: 400;\">B. Structure logicielle<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Bien que notre syst\u00e8me soit fortement bas\u00e9 sur des actions m\u00e9caniques et physiques celles-ci sont ordonnanc\u00e9es par une structure logicielle relativement importante.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\">\n<h3><span style=\"font-weight: 400;\">Base de donn\u00e9es<\/span><\/h3>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">La base de donn\u00e9es est le syst\u00e8me backend principal de notre syst\u00e8me. Il permet de stocker les informations g\u00e9n\u00e9rales des comptes utilisateurs (collaborateurs et utilisateurs). Le contenu de la base de donn\u00e9es est pr\u00e9sent dans la capture d\u2019\u00e9cran ci-dessous :<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6745\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture4.png\" alt=\"\" width=\"413\" height=\"241\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Ces informations sont r\u00e9cup\u00e9r\u00e9es au besoin via des requ\u00eates SQL transmises par les programmes PHP du syst\u00e8me. On r\u00e9pertorie actuellement deux cas de figure n\u00e9cessitant la collecte de ces informations :\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Lors de l\u2019authentification d\u2019un utilisateur au niveau du site Web car il est n\u00e9cessaire de v\u00e9rifier que l\u2019identifiant et le mot de passe correspondent \u00e0 ceux de l\u2019utilisateur. Ainsi cela permet d\u2019augmenter la s\u00e9curit\u00e9 du syst\u00e8me car\u00a0 seuls les utilisateurs autoris\u00e9s peuvent profiter des services du syst\u00e8me.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Lors des identifications par badge r\u00e9alis\u00e9es afin d\u2019emprunter ou d\u00e9poser une tasse. En effet, il est n\u00e9cessaire de r\u00e9cup\u00e9rer les informations de l\u2019utilisateur afin de modifier son nombre de tasses emprunt\u00e9es et son solde en cons\u00e9quence.<\/span><\/li>\n<\/ul>\n<h3>\u00a0 \u00a0 \u00a0 \u00a0 2.Architecture logicielle<\/h3>\n<p><span style=\"font-weight: 400;\">L\u2019architecture logicielle de notre syst\u00e8me repose sur des programmes r\u00e9alis\u00e9s en diff\u00e9rents langages de programmation.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Programmes PHP li\u00e9s au site Web\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Notre site Web n\u00e9cessite de r\u00e9aliser des op\u00e9rations calculatoires ainsi que des requ\u00eates, il est donc n\u00e9cessaire de le mettre en place \u00e0 l\u2019aide de programmes PHP. Comme vous pouvez le voir sur l\u2019architecture logicielle, le code li\u00e9 au site Web est pr\u00e9sent dans le r\u00e9pertoire appel\u00e9 \u201cHTML\u201d. Ce dernier est compos\u00e9 des \u00e9l\u00e9ments suivants :\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>NOM DU PROGRAMME<\/b><\/td>\n<td><b>DESCRIPTION<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/utilisateur\/index.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche les informations de l\u2019utilisateur (nombre de tasses emprunt\u00e9es, caution et solde) s\u2019il est authentifi\u00e9 sinon il est redirig\u00e9 vers la page html\/utilisateur\/login.php<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/utilisateur\/login.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche la page d\u2019authentification de l\u2019utilisateur<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/utilisateur\/logout.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche la page de d\u00e9connexion de l\u2019utilisateur<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/utilisateur\/config.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Permet la connexion \u00e0 la base de donn\u00e9es\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/collaborateur\/index.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche les informations de gestion des tasses (nombre de tasses total emprunt\u00e9es, utilisateur n\u2019ayant pas rendu leur tasse) si le collaborateur est authentifi\u00e9 sinon il est redirig\u00e9 vers la page html\/collaborateur\/login.php<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/collaborateur\/login.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche la page d\u2019authentification du collaborateur<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/collaborateur\/logout.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Affiche la page de d\u00e9connexion du collaborateur<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">html\/collaborateur\/config.php<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Permet la connexion \u00e0 la base de donn\u00e9es\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Programmes Python li\u00e9s au fonctionnement du syst\u00e8me<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Les diff\u00e9rentes actions garantissant le\u00a0 fonctionnement g\u00e9n\u00e9ral de notre syst\u00e8me comprenant le d\u00e9p\u00f4t de tasse, la gestion de la caution, la distribution des tasses dans les bacs de stockage etc. ont \u00e9t\u00e9 \u00e9tablies gr\u00e2ce \u00e0 plusieurs programmes python. Chacun de ces programmes Python interagissent avec un composant sp\u00e9cifique du syst\u00e8me afin de conserver une bonne granularit\u00e9 de gestion du syst\u00e8me et obtenir un programme global intelligible pour un futur lecteur. L\u2019ensemble de ces programmes Python sont d\u00e9crits dans le tableau ci-dessous.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>NOM DU PROGRAMME<\/b><\/td>\n<td><b>DESCRIPTION<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">main.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme python r\u00e9alisant le s\u00e9quencement logique du syst\u00e8me. Ce programme appelle pour cela les fonctions des autres programmes au besoin.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">afficheur.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme permettant de piloter l\u2019\u00e9cran LCD afin de r\u00e9aliser divers affichage selon les diff\u00e9rentes situations (bonjour, badge invalide etc.)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">bac_ouvert.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec un interrupteur qui v\u00e9rifie que la porte permettant la r\u00e9cup\u00e9ration des bacs de stockage est ferm\u00e9e. Lorsque la porte est ouverte, le fonctionnement du syst\u00e8me li\u00e9 au d\u00e9p\u00f4t de tasse se met en pause jusqu\u2019\u00e0 la porte soit referm\u00e9e.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">bouton_terminer.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec le bouton poussoir permettant de terminer une op\u00e9ration de d\u00e9p\u00f4t de tasse. Si ce bouton poussoir est press\u00e9 suite au d\u00e9p\u00f4t d\u2019une tasse alors l\u2019op\u00e9ration de d\u00e9p\u00f4t se termine.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">casier.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u00e9fini un objet casier comportant diff\u00e9rents attributs. Pour chaque casier, on conna\u00eet le nombre de tasses dans chaque colonne.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">depose.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ce programme sert d\u2019interm\u00e9diaire entre les programmes stockage.py et machine.py. Il convertit les ordres du programme stockage.py (ex. :stocker une tasse dans le casier 1, en colonne 2) en coordonn\u00e9s utilis\u00e9s par le programme machine.py.\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">detection_tasse.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec la cam\u00e9ra afin de l\u2019activer si un objet est d\u00e9tect\u00e9 dans le compartiment de d\u00e9p\u00f4t (presence_tasse.py) et d\u2019appeler les fonctions d\u2019analyse d\u2019objet (TFLite_detection_image_reCup.py).<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">i2c_lib.py, lcd_py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programmes appel\u00e9s par le programme afficheur.py afin de permettre le fonctionnement de l\u2019\u00e9cran I2C. Ces programmes contiennent des librairies ainsi que des fonctions d\u2019affichage intrins\u00e8ques au mat\u00e9riel.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">liberation_tasse.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec le servomoteur bloquant le passage de la tasse vers le chariot mobile. Si une tasse est d\u00e9tect\u00e9e dans le compartiment, la fonction de d\u00e9blocage du servomoteur de ce programme est appel\u00e9e.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">machine.py\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ce programme permet de communiquer en s\u00e9rie avec le programme GRBL qui tourne sur l\u2019arduino. Il permet d\u2019envoyer des commandes pour initialiser le syst\u00e8me de stockage ou d\u00e9placer le chariot vers une position particuli\u00e8re.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">presence_plateau.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec les interrupteurs d\u00e9tectant la pr\u00e9sence des diff\u00e9rents casiers. Pour que le syst\u00e8me fonctionne correctement, il est n\u00e9cessaire que l\u2019ensemble des interrupteurs soient press\u00e9s. Sinon le programme g\u00e9n\u00e9ral (main) se met en attente.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">presence_plateau_distri.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ce programme permet de savoir si le chariot du syst\u00e8me de stockage est pr\u00eat \u00e0 recevoir une tasse. Il v\u00e9rifie l\u2019\u00e9tat d\u2019un interrupteur \u00e0 lamelle. Si le chariot n\u2019est pas au bon endroit, il demande au syst\u00e8me de stockage de le replacer.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">presence_tasse.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec le capteur ultrason afin de d\u00e9tecter la pr\u00e9sence d\u2019un objet d\u00e9pos\u00e9 dans le compartiment de d\u00e9p\u00f4t.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">requete_sql.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme r\u00e9alisant les requ\u00eates SQL n\u00e9cessaires \u00e0 la gestion des cautions des utilisateurs inscrits dans la base de donn\u00e9es.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">rfid.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec le module RFID afin de r\u00e9cup\u00e9rer l\u2019ID du badge qui lui est pr\u00e9sent\u00e9.\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">stockage.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ce programme permet de lancer le stockage d\u2019une tasse qui a \u00e9t\u00e9 d\u00e9pos\u00e9e et valid\u00e9e. Suivant la taille de la tasse et la place restante dans les diff\u00e9rents casiers, il va choisir le bon endroit o\u00f9 d\u00e9poser la tasse<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">tasse.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u00e9finir un objet tasse. Il comporte un attribut qui permet de savoir si la tasse est grande ou petite.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">TFLite_detection_image_reCup.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Programme interagissant avec l\u2019outil de deep learning Tensorflow Lite afin d\u2019analyser la photo de l\u2019objet d\u00e9pos\u00e9 dans le compartiment de d\u00e9p\u00f4t prise par la cam\u00e9ra.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">TFLite_detection_video.py, TFLite_detection_webcam.py<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Autres programmes d\u2019analyse d\u2019\u00e9l\u00e9ments dans le cadre de vid\u00e9os, de stream ou de webcam. Ces programmes ne sont pas appel\u00e9s dans notre programme principal mais peuvent servir pour d\u2019autres applications du syst\u00e8me.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>3.Diagrammes de s\u00e9quence<\/p>\n<p><span style=\"font-weight: 400;\">Lorsque l\u2019utilisateur interagit avec le syst\u00e8me, il appelle des fonctions de programmes r\u00e9alisant les services attendus. Ces fonctions peuvent elles-m\u00eames appeler d\u2019autres fonctions d\u2019autres programmes de l\u2019arborescence pour leur propre fonctionnement et ainsi pouvoir r\u00e9aliser la s\u00e9quence d\u2019actions attendue. Il est donc n\u00e9cessaire de d\u00e9crire les diff\u00e9rents appels de fonctions permettant de r\u00e9aliser la suite d\u2019action attendue afin qu\u2019un n\u00e9ophyte puisse comprendre la m\u00e9canique logicielle interne du syst\u00e8me. Nous avons pour cela mis en place plusieurs diagrammes de s\u00e9quence d\u00e9crivant les sc\u00e9narii possibles.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Diagramme de s\u00e9quence indiquant l\u2019utilisation d\u2019un badge invalide pour l\u2019identification<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6746\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture5.png\" alt=\"\" width=\"1058\" height=\"631\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Diagramme de s\u00e9quence indiquant un processus complet de d\u00e9p\u00f4t d\u2019une tasse<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6747\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture6.png\" alt=\"\" width=\"1058\" height=\"672\" \/><\/a><br \/>\n<b><\/b><\/p>\n<h3><b>4. Logigrammes (avec interaction entre les programmes)<\/b><\/h3>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Avant toute r\u00e9alisation technique, nous avons d\u00e9fini le chemin logique que notre syst\u00e8me doit suivre pour r\u00e9aliser nos diff\u00e9rents services et \u00e9viter des sc\u00e9narios d\u2019erreurs non trait\u00e9s. L\u2019ensemble des programmes ont \u00e9t\u00e9 \u00e9tablis selon cette logique d\u00e9cisionnelle repr\u00e9sent\u00e9e dans les sch\u00e9mas suivants.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Logigramme du fonctionnement du syst\u00e8me :<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6748\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture7.png\" alt=\"\" width=\"660\" height=\"703\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">Logigramme du programme PHP :<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6749\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture8.png\" alt=\"\" width=\"712\" height=\"776\" \/><\/a><\/p>\n<h3><span style=\"font-weight: 400;\">5. Logique de stockage<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me R\u00e9Cup est pens\u00e9 pour stocker un grand nombre de tasses. Il accepte les deux formats de tasse existants \u00e0 la caf\u00e9t\u00e9ria de l\u2019IMT Atlantique, les grandes et les petites. Il peut stocker jusqu\u2019\u00e0 36 petites tasses et 30 grandes tasses.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pour ce faire, chaque casier est compartiment\u00e9 en 4 colonnes ; deux pouvant accueillir chacune 6 petites tasses (p1 et p2), et deux autres pouvant accueillir chacune 5 grandes tasses(g1 et g2).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me comporte trois casiers identiques.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il range alors les tasses en commen\u00e7ant par le premier casier au plus bas (si celui-ci n\u2019est pas plein, auquel cas le programme monte la tasse au deuxi\u00e8me. Il remplit toujours les casiers de la m\u00eame mani\u00e8re ; il commence par stocker en \u201cp1\u201d si la tasse est petite. Lorsque \u201cp1\u201d est plein, il passe \u00e0 \u201cp2\u201d. Si \u201cp2\u201d est plein, il passe au \u201cp1\u201d du casier suivant. Le fonctionnement est identique pour les grandes tasses, en utilisant les emplacements \u201cg1\u201d et \u201cg2\u201d.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6751\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture9.png\" alt=\"\" width=\"379\" height=\"524\" \/><\/a><\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">organisation d\u2019un casier<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-weight: 400;\">C. Interactions avec le syst\u00e8me<\/span><\/h2>\n<ol>\n<li style=\"font-weight: 400;\">\n<h3><span style=\"font-weight: 400;\">Fonctionnalit\u00e9s et mise en situation<\/span><\/h3>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me R\u00e9Cup r\u00e9alise un grand nombre de fonctionnalit\u00e9s visant \u00e0 automatiser la gestion des emprunts et d\u00e9p\u00f4ts de tasse. Nous avons d\u00e9fini dans cette partie les fonctionnalit\u00e9s majeures de notre syst\u00e8me incluant une mise en situation afin de mieux discerner les diff\u00e9rentes interactions avec le syst\u00e8me.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pr\u00e9l\u00e8vement d\u2019une caution lors de l\u2019emprunt d\u2019une tasse<\/span><\/p>\n<p><span style=\"font-weight: 400;\">L\u2019une des fonctionnalit\u00e9s principales de notre syst\u00e8me R\u00e9Cup est le m\u00e9canisme de caution visant \u00e0 inciter les consommateurs \u00e0 ramener leur tasse. Ce pr\u00e9l\u00e8vement est r\u00e9alis\u00e9 de mani\u00e8re transparente lors de la commande de boisson chaude r\u00e9alis\u00e9e par les collaborateurs. Pour cela, l\u2019utilisateur s\u2019identifie en pr\u00e9sentant son badge au niveau du lecteur RFID afin de pouvoir effectuer une requ\u00eate vers la base de donn\u00e9es pour r\u00e9cup\u00e9rer les donn\u00e9es de l\u2019utilisateur. Suite \u00e0 \u00e7a, le collaborateur indique sur sa machine la boisson command\u00e9e par l\u2019utilisateur, ce qui d\u00e9clenche une seconde requ\u00eate vers la base de donn\u00e9es. Cette derni\u00e8re a pour but de modifier le nombre de tasses emprunt\u00e9es pour l\u2019utilisateur identifi\u00e9.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Le sch\u00e9ma fonctionnel d\u00e9crivant la situation est le suivant :\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6752\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture10.png\" alt=\"\" width=\"750\" height=\"181\" \/><\/a><\/p>\n<p><strong>D\u00e9poser une tasse<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me R\u00e9Cup fournit aussi la possibilit\u00e9 aux utilisateurs de pouvoir d\u00e9poser leur tasse dans un syst\u00e8me de collecte sans l\u2019intervention d\u2019un collaborateur de la caf\u00e9t\u00e9ria. Pour ceci, l\u2019utilisateur s\u2019identifie en pr\u00e9sentant son badge au niveau du lecteur RFID permettant ainsi d\u2019effectuer une requ\u00eate vers la BDD permettant de r\u00e9cup\u00e9rer les informations du compte de l\u2019utilisateur. L\u2019utilisateur peut \u00e0 pr\u00e9sent d\u00e9poser l\u2019objet \u00e0 l\u2019int\u00e9rieur du compartiment de stockage afin que le syst\u00e8me puisse l\u2019analyser: Si l\u2019objet d\u00e9tect\u00e9 est une tasse alors le syst\u00e8me s\u2019occupe de la distribution de la tasse vers les bacs de stockage. L\u2019utilisateur peut alors simultan\u00e9ment disposer une nouvelle tasse ou terminer son op\u00e9ration de d\u00e9p\u00f4t. Dans ce second cas, une derni\u00e8re requ\u00eate sera faite vers la base de donn\u00e9es afin de supprimer la caution et cr\u00e9diter le solde de l\u2019utilisateur.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6753\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture11.png\" alt=\"\" width=\"761\" height=\"272\" \/><\/a><\/p>\n<p><strong>Consultation des informations de l\u2019utilisateur depuis le site Web<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Un utilisateur peut consulter les informations relatives \u00e0 ses emprunts de tasse depuis le site Web pr\u00e9vu \u00e0 cet effet. L\u2019utilisateur renseigne pour ceci l\u2019URL du syst\u00e8me <\/span><a href=\"http:\/\/192.168.1.98\"><span style=\"font-weight: 400;\">http:\/\/192.168.1.98<\/span><\/a><span style=\"font-weight: 400;\"> afin d\u2019\u00eatre redirig\u00e9 vers la page d\u2019accueil et choisir son mode de connexion : collaborateur ou utilisateur.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture12.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6754\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture12.png\" alt=\"\" width=\"491\" height=\"166\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Dans les deux cas l\u2019utilisateur devra au pr\u00e9alable s\u2019authentifier aupr\u00e8s du syst\u00e8me en renseignant son identifiant et son mot de passe. Ces derniers seront envoy\u00e9s via une requ\u00eate vers la BDD permettant ainsi de v\u00e9rifier si l\u2019utilisateur appartient bien au groupe d\u2019utilisateur ou collaborateur.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture13.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6755\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture13.png\" alt=\"\" width=\"488\" height=\"147\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Une fois authentifi\u00e9, l\u2019utilisateur peut alors consulter les informations pr\u00e9sentes sur la page web de son compte.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture14.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6756\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture14.png\" alt=\"\" width=\"588\" height=\"245\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Une fois authentifi\u00e9, le collaborateur peut alors consulter les informations pr\u00e9sentes sur la page web li\u00e9e \u00e0 son profil.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6757\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture21.png\" alt=\"\" width=\"854\" height=\"466\" \/><\/a><\/p>\n<h3><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture21.png\">2.<\/a><span style=\"font-weight: 400;\">Diagrammes de cas d\u2019utilisation<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Selon le r\u00f4le des acteurs interagissant avec le syst\u00e8me nous pouvons r\u00e9pertorier plusieurs use-cases. Ceux qui ont \u00e9t\u00e9 mis en place ont \u00e9t\u00e9 repr\u00e9sent\u00e9s dans les diagrammes de use-case ci-dessous :\u00a0<\/span><\/p>\n<p><b>Utilisateur :\u00a0<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6758\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture15.png\" alt=\"\" width=\"710\" height=\"495\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><b>Collaborateur :\u00a0<\/b><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture16.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6759\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture16.png\" alt=\"\" width=\"892\" height=\"512\" \/><\/a><\/p>\n<h1><span style=\"font-weight: 400;\">III. Choix de conception<\/span><\/h1>\n<h2><span style=\"font-weight: 400;\">A. Caution et avantages participatifs<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me visant \u00e0 inciter les utilisateurs \u00e0 rendre leur tasse a \u00e9t\u00e9 complexe \u00e0 mettre en place car il doit respecter un grand nombre de contraintes :\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u00catre abordable financi\u00e8rement pour les utilisateurs<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Ne pas cr\u00e9er des flux d\u2019argents illicites<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Ne pas \u00eatre \u00e9thiquement r\u00e9pr\u00e9hensible<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Engager les utilisateurs \u00e0 rendre leur tasse intuitivement<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Plusieurs solutions ont \u00e9t\u00e9 pens\u00e9es pour r\u00e9pondre \u00e0 ce besoin. Tout d\u2019abord, nous avions pens\u00e9 \u00e0 un syst\u00e8me de caution qui ponctionne aux utilisateurs une petite somme permettant ainsi de rembourser automatiquement l\u2019organisme qui pr\u00eate les tasses en cas de casse, perte ou vol.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dans la premi\u00e8re version de ce syst\u00e8me nous avions estim\u00e9 que la possibilit\u00e9 de r\u00e9cup\u00e9rer la caution des utilisateurs qui abandonnent leur tasses pourrait \u00eatre int\u00e9ressante afin d\u2019inciter les utilisateurs \u00e0 ramener leur tasse. Cependant cette possibilit\u00e9 soul\u00e8ve \u00e0 la fois des probl\u00e8mes \u00e9thiques et juridiques. D\u2019une part, un tel syst\u00e8me peut inciter des utilisateurs malveillants \u00e0 d\u00e9rober les tasses des autres afin de r\u00e9cup\u00e9rer les cautions des autres utilisateurs. De plus, un syst\u00e8me g\u00e9n\u00e9rant de tels flux financiers entre les utilisateurs est totalement ill\u00e9gal.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons donc imagin\u00e9 un second syst\u00e8me bas\u00e9 sur des avantages fournis selon le nombre de tasses rendues. Par exemple, lorsqu\u2019un utilisateur ram\u00e8ne une vingtaine de tasses, la caf\u00e9t\u00e9ria lui offre une boisson chaude ou un soda. Cependant, dans le cadre d\u2019une \u00e9cole avec un grand nombre d\u2019\u00e9l\u00e8ves qui consomment fr\u00e9quemment des boissons chaudes, ce type de solution peut s\u2019av\u00e9rer tr\u00e8s on\u00e9reux ce qui ne respecte pas la contrainte budg\u00e9taire du syst\u00e8me.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons donc finalement opt\u00e9 pour la premi\u00e8re option en repensant le syst\u00e8me de caution pour qu\u2019il respecte \u00e0 la fois l\u2019\u00e9thique et la loi. Contrairement au syst\u00e8me de caution classique, il n\u2019est pas possible de r\u00e9cup\u00e9rer plus d\u2019argent que la caution qui nous a \u00e9t\u00e9 pr\u00e9lev\u00e9e. Nous avons jug\u00e9 qu\u2019appliquer une caution que l\u2019utilisateur peut perdre s\u2019il ne ram\u00e8ne pas sa tasse serait suffisante pour impliquer les utilisateurs dans le processus de collecte des tasses. Par cons\u00e9quent, nous avons estim\u00e9 que cette solution est celle qui r\u00e9pond le mieux au cahier des charges.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">B. Structure m\u00e9canique<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Pour \u00eatre utilisable ce projet a n\u00e9cessit\u00e9 une importante phase de conception m\u00e9canique. En effet, une fois la tasse analys\u00e9e et accept\u00e9e, il faut la stocker ; c\u2019est le but d\u2019une consigne.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Casiers\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Au d\u00e9but du projet, la mani\u00e8re dont nous allions r\u00e9aliser ce stockage \u00e9tait notre principal questionnement. Nous voulions stocker un nombre assez important de tasses afin que la consigne ne soit pas trop vite pleine, par exemple lors des pauses, o\u00f9 beaucoup de personnes restituent leur tasse au m\u00eame moment. Nous savions qu\u2019il nous fallait un syst\u00e8me qui permette d\u2019empiler plusieurs couches de tasses, afin d\u2019avoir un maximum de tasses dans un volume donn\u00e9. Nous avons pens\u00e9 \u00e0 diff\u00e9rents syst\u00e8mes ; par exemple un bras robotis\u00e9 qui pourrait empiler des tasses. Mais cela semblait trop complexe \u00e0 r\u00e9aliser. Une autre id\u00e9e \u00e9tait de faire un tunnel inclin\u00e9 avec des fentes de diff\u00e9rentes tailles menant \u00e0 un casier semblable \u00e0 ceux r\u00e9alis\u00e9s, les tasses seraient tomb\u00e9es aux bons emplacements par gravit\u00e9. Finalement, nous avons m\u00eal\u00e9 cette solution \u00e0 un syst\u00e8me actif permettant de d\u00e9placer la tasse gr\u00e2ce \u00e0 un chariot, puis de la laisser tomber dans le casier par gravit\u00e9. Ainsi nous pouvons empiler trois casiers et stocker un nombre important de tasses. Il est facile pour le personnel de retirer ces casiers en ouvrant la porte arri\u00e8re puis en les faisant glisser.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture17.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6760\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture17.png\" alt=\"\" width=\"887\" height=\"533\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0prototype en carton pour trouver l\u2019angle d\u2019inclinaison<\/span><\/i>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<i><span style=\"font-weight: 400;\">rendu 3D des casiers\u00a0<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">Syst\u00e8me de d\u00e9placement de la tasse<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Comme expliqu\u00e9 juste avant, en plus des casiers, il est n\u00e9cessaire d\u2019avoir un syst\u00e8me qui permet d\u2019amener la tasse devant une colonne d\u2019un casier pour ensuite la stocker en la faisant glisser par gravit\u00e9.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pour ce faire, il nous fallait un syst\u00e8me permettant un d\u00e9placement vertical et horizontal. Nous avons \u00e9t\u00e9 inspir\u00e9s par des structures de CNC ou imprimantes 3D. Nous avons con\u00e7u un cadre en profil\u00e9s aluminiums 2040, courant pour des r\u00e9alisations de CNC ou imprimantes 3D. Il nous fallait un syst\u00e8me rapide, nous avons donc pr\u00e9f\u00e9r\u00e9 un entra\u00eenement par courroie plut\u00f4t que des vis sans fin, qui auraient \u00e9t\u00e9 plus lentes. Le choix d\u2019un guidage par roues mont\u00e9es sur roulements est \u00e9galement un syst\u00e8me \u00e9prouv\u00e9, nous l\u2019avons donc retenu pour notre r\u00e9alisation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Les moteurs pas \u00e0 pas retenus sont \u00e9galement tr\u00e8s r\u00e9pandus dans le domaine de l\u2019impression 3D\/ d\u00e9coupe CNC. En faisant des recherches nous avons pu constater qu\u2019une architecture simple et \u00e9prouv\u00e9e est l\u2019utilisation d\u2019un shield avec les drivers moteurs a4988 sur un Arduino Uno. Le logiciel GRBL install\u00e9 sur l\u2019arduino permet ensuite de contr\u00f4ler les moteurs en leur envoyant des commandes standardis\u00e9es en GCODE.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture18.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6761\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture18.png\" alt=\"\" width=\"790\" height=\"571\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">arduino, cnc shield et drivers moteurs<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">En dehors des composants assez classiques, nous n\u00e9cessitions un syst\u00e8me sur mesure, au vu de nos besoins sp\u00e9cifiques, qui sont diff\u00e9rents d\u2019une CNC ou d\u2019une imprimante 3D. Nous avons enti\u00e8rement mod\u00e9lis\u00e9 le syst\u00e8me de d\u00e9placement en 3D sur un logiciel de CAO. Cette \u00e9tape \u00e9tait n\u00e9cessaire car un grand nombre de pi\u00e8ces a ensuite \u00e9t\u00e9 imprim\u00e9 en 3D, en PETG pour avoir des pi\u00e8ces suffisamment solides. Le fait de tout r\u00e9aliser en CAO nous a permis d\u2019identifier de potentiels probl\u00e8mes (manque d\u2019espace entre deux pi\u00e8ces,&#8230;) et de les corriger avant la r\u00e9alisation. Le temps pass\u00e9 en CAO a \u00e9t\u00e9 rentabilis\u00e9 car il a permis un montage sans accrocs.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6762\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture19.png\" alt=\"\" width=\"467\" height=\"401\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">Mod\u00e9lisation du syst\u00e8me de d\u00e9placement en CAO<\/span><\/i><\/p>\n<h2><span style=\"font-weight: 400;\">C. Analyse de tasses (d\u00e9tection + pr\u00e9sence)<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Le syst\u00e8me de d\u00e9tection de pr\u00e9sence d\u2019objet et de son analyse a aussi \u00e9t\u00e9 sujet \u00e0 des choix de conceptions complexes. Il est possible d\u2019utiliser le Raspberry Pi afin qu\u2019il utilise la cam\u00e9ra en permanence pour analyser en temps r\u00e9el les objets d\u00e9pos\u00e9s dans le compartiment. Dans un tel cas de figure, les processus d\u2019utilisation de la cam\u00e9ra et d\u2019analyse de l\u2019objet sont constamment actifs. Par cons\u00e9quent, un grand volume de ressources logicielles sont requis pour cette op\u00e9ration. Si l\u2019on cumule cette utilisation de ressources \u00e0 celles li\u00e9es aux actions de distribution des tasses, d\u2019identification et autres, la qualit\u00e9 de service peut \u00eatre fortement d\u00e9t\u00e9rior\u00e9e et le mat\u00e9riel peut \u00eatre \u00e0 terme endommag\u00e9. Il est donc n\u00e9cessaire d\u2019optimiser au maximum les ressources utilis\u00e9es par le syst\u00e8me d\u2019analyse de l\u2019objet. Pour cela, une avons envisag\u00e9 deux solutions qui permettent de grandement limiter l\u2019utilisation des ressources sans d\u00e9t\u00e9riorer la qualit\u00e9 de service.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tout d\u2019abord, nous avons utilis\u00e9 le TensorFlow Lite comme outil d\u2019ex\u00e9cution des mod\u00e8les de pr\u00e9diction TensorFlow plut\u00f4t que l\u2019outil classique Tensorflow. Tensorflow Lite est plus adapt\u00e9 pour ex\u00e9cuter des mod\u00e8les de pr\u00e9diction sur des appareils mobiles et des objets connect\u00e9s. Les inf\u00e9rences d\u2019apprentissage profond r\u00e9alis\u00e9es avec Tensorflow Lite sont plus rapides et occupent une plus faible taille. Bien que les r\u00e9sultats fournis avant un tel outil soient de moins bonne qualit\u00e9, un objet tel qu\u2019une tasse \u00e9tant tr\u00e8s simple \u00e0 d\u00e9tecter, les performances d\u2019analyse de l\u2019objet ne seront pas amoindries.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Apr\u00e8s avoir \u00e9tudi\u00e9 les divers programmes de d\u00e9tections d\u2019objet, nous avons r\u00e9ussi \u00e0 impl\u00e9menter un code capable de r\u00e9aliser une d\u00e9tection \u00e0 partir d\u2019une image \u00e0 la place d\u2019un flux vid\u00e9o en temps r\u00e9el r\u00e9cup\u00e9r\u00e9 par la cam\u00e9ra. Ainsi il sera possible de prendre une photo du compartiment lorsqu\u2019un objet y est d\u00e9pos\u00e9 afin de l\u2019analyser et donc de limiter grandement les ressources allou\u00e9es pour l\u2019analyse de l\u2019objet. Cependant, un tel mode de fonctionnement requiert de d\u00e9terminer lorsqu\u2019un objet a \u00e9t\u00e9 d\u00e9pos\u00e9 afin de d\u00e9clencher la photographie. Pour r\u00e9pondre \u00e0 ce besoin, nous avons ajout\u00e9 un syst\u00e8me de d\u00e9tection de pr\u00e9sence \u00e0 l\u2019int\u00e9rieur du compartiment de d\u00e9p\u00f4t. Apr\u00e8s avoir r\u00e9alis\u00e9 plusieurs tests, nous avons de plus observ\u00e9 que les inf\u00e9rences et donc les scores de d\u00e9tection faites sur une photographie plut\u00f4t qu\u2019une vid\u00e9o sont de meilleure qualit\u00e9.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gr\u00e2ce \u00e0 ces deux m\u00e9thodes nous avons pu r\u00e9duire significativement les ressources logicielles tout en am\u00e9liorant les r\u00e9sultats d\u2019analyse de l\u2019objet.<\/span><\/p>\n<h1><span style=\"font-weight: 400;\">IV. Am\u00e9liorations possibles du syst\u00e8me<\/span><\/h1>\n<p><span style=\"font-weight: 400;\">Bien que notre syst\u00e8me soit \u00e0 pr\u00e9sent op\u00e9rationnel et qu\u2019il offre les fonctionnalit\u00e9s principales, il peut \u00eatre grandement am\u00e9lior\u00e9. Ces modifications visent \u00e0 am\u00e9liorer les performances de notre syst\u00e8me, son accessibilit\u00e9 et son esth\u00e9tique.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">A. Esth\u00e9tisme et ergonomie (site Web avec CSS + design physique)<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">L\u2019esth\u00e9tisme et l\u2019ergonomie sont deux points d\u2019am\u00e9lioration qui peuvent \u00eatre importants dans l\u2019optique de produire notre syst\u00e8me. En effet, notre syst\u00e8me fait appel \u00e0 la civilit\u00e9 des utilisateurs en leur pr\u00e9levant une caution pour l\u2019emprunt des tasses. Il est donc tr\u00e8s important qu\u2019il soit accept\u00e9 par la majorit\u00e9 des utilisateurs. Cette acceptation du syst\u00e8me passe \u00e9videmment par une esth\u00e9tique travaill\u00e9e et une bonne ergonomie permettant aux utilisateurs d\u2019utiliser le syst\u00e8me intuitivement.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">L\u2019esth\u00e9tisme et l\u2019ergonomie du syst\u00e8me passe par une r\u00e9\u00e9dition de l\u2019interface web graphique permettant la gestion des tasses pour les utilisateurs et les collaborateurs. Celle-ci n\u2019est pour l\u2019instant bas\u00e9e que sur un code fournissant les fonctionnalit\u00e9s mais ne propose pas d\u2019interface web intuitive pour les utilisateurs. Il sera donc n\u00e9cessaire de concevoir un menu et une navigation intuitive pour ce site Web. De plus, notre page web n\u2019est pas li\u00e9e \u00e0 une fiche CSS. Une autre am\u00e9lioration serait donc d\u2019impl\u00e9menter cette fiche CSS pour am\u00e9liorer l\u2019esth\u00e9tique du site Web et en organiser les diff\u00e9rents \u00e9l\u00e9ments qui la composent.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">B. Mise en ligne du syst\u00e8me et mise en place d\u2019une application Android<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Notre site web n\u2019est actuellement joignable que lorsque l\u2019utilisateur se trouve sur le m\u00eame r\u00e9seau IP que notre syst\u00e8me. Afin que les utilisateurs puissent acc\u00e9der \u00e0 distance \u00e0 notre service il sera n\u00e9cessaire d\u2019assigner une adresse IP publique et un nom de domaine \u00e0 notre syst\u00e8me. Lorsque cette IP ou le nom de domaine sont renseign\u00e9s, les utilisateurs et collaborateurs seront redirig\u00e9s vers notre site web leur permettant ainsi de r\u00e9aliser leurs actions ou consulter leurs informations \u00e0 distance.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous pourrions aussi envisager de cr\u00e9er une application Android qui r\u00e9aliserait les m\u00eames fonctionnalit\u00e9s que notre site Web mais qui serait plus adapt\u00e9e pour l\u2019utilisation des services depuis un smartphone.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">C. Am\u00e9lioration des performances<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Actuellement notre syst\u00e8me n\u2019a pas \u00e9t\u00e9 optimis\u00e9 et les performances sont donc grandement am\u00e9liorables. Cette optimisation passe tout d\u2019abord par une revue du code utilis\u00e9 au niveau des diff\u00e9rentes boucles et conditions. Pour cela, il nous faudrait d\u00e9terminer un chemin logique optimal permettant de r\u00e9duire le nombre d\u2019op\u00e9rations effectu\u00e9es tout en conservant les m\u00eames fonctionnalit\u00e9s. Une optimisation des ressources utilis\u00e9es par le syst\u00e8me de d\u00e9tection de tasse pourrait aussi \u00eatre r\u00e9alis\u00e9e. En effet, ce syst\u00e8me n\u00e9cessite pour l\u2019instant un grand nombre de ressources logicielles pour fonctionner. Une analyse du fonctionnement logiciel de la cam\u00e9ra et des syst\u00e8mes de pr\u00e9diction permettrait de mieux comprendre leur fonctionnement et ensuite de limiter le nombre d\u2019op\u00e9rations n\u00e9cessaires et donc optimiser les ressources.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La r\u00e9alisation de l\u2019ensemble de ces points permettrait une am\u00e9lioration significative de la qualit\u00e9 de service rendue par le produit et nous permettrait d\u2019envisager une mise en production.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">D. S\u00e9curit\u00e9 physique de la consigne<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Notre syst\u00e8me \u00e9tait pens\u00e9 pour \u00eatre une bo\u00eete ferm\u00e9e, dont l\u2019int\u00e9rieur est inaccessible aux utilisateurs. Par manque de temps et de mat\u00e9riaux nous n\u2019avons pu totalement satisfaire cette condition. Il faudrait qu\u2019on monte les panneaux lat\u00e9raux et le panneau sup\u00e9rieur pour garantir ce niveau de s\u00e9curit\u00e9.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">D\u2019autre part, les collaborateurs doivent avoir acc\u00e8s aux casiers via la porte arri\u00e8re de la machine. \u00c9galement par manque de temps, nous n\u2019avons mis qu\u2019un loquet symbolique pour fermer la porte. Il faudrait qu\u2019on r\u00e9alise un syst\u00e8me de blocage de la porte plus s\u00e9curis\u00e9, par exemple gr\u00e2ce \u00e0 un servomoteur.<\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture20.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6763\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/Capture20.png\" alt=\"\" width=\"563\" height=\"336\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">exemple de verrou actionn\u00e9 par un servomoteur, trouv\u00e9 sur internet<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Le collaborateur pourrait d\u00e9verrouiller la porte gr\u00e2ce \u00e0 son badge IMT.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">E. Ergonomie pour le collaborateur<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Actuellement le collaborateur dispose d\u2019un bouton permettant de r\u00e9initialiser le compte de tasse lorsqu\u2019il vide les casiers pleins et les replace dans la machine une fois vid\u00e9s. Il est plac\u00e9 juste derri\u00e8re la porte donnant acc\u00e8s aux casiers. Cependant le collaborateur n\u2019a pas de retour visuel lui indiquant que la r\u00e9initialisation a \u00e9t\u00e9 effective ; il est oblig\u00e9 de faire le tour du syst\u00e8me pour consulter l\u2019\u00e9cran destin\u00e9 aux utilisateurs. On pourrait imaginer simplement une led rouge et une led verte plac\u00e9s \u00e0 c\u00f4t\u00e9 du bouton r\u00e9initialiser. Lorsque la consigne est pleine, la rouge est allum\u00e9e ; apr\u00e8s appui sur le bouton, la rouge s\u2019\u00e9teindra et la verte s\u2019allumera.<\/span><\/p>\n<p><strong>Lien github :\u00a0https:\/\/github.com\/reCup-CoOC\/reCup<\/strong><\/p>\n<p>Quelques images du prototype<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131325992_383492139604720_7318918775053910724_n-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6764\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131325992_383492139604720_7318918775053910724_n-1.jpg\" alt=\"\" width=\"1036\" height=\"795\" \/><\/a><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131296626_303815514286260_5580610736206140974_n.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6765\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131296626_303815514286260_5580610736206140974_n.jpg\" alt=\"\" width=\"924\" height=\"837\" \/><\/a><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131394469_233093521546149_6017428526955074852_n.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6767\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131394469_233093521546149_6017428526955074852_n.jpg\" alt=\"\" width=\"2048\" height=\"969\" \/><\/a><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131313038_304535947519069_5923625181764568060_n.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6766\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2020\/12\/131313038_304535947519069_5923625181764568060_n.jpg\" alt=\"\" width=\"2048\" height=\"971\" \/><\/a><\/p>\n<p>Une vid\u00e9o de fonctionnement du prototype<\/p>\n<p>https:\/\/drive.google.com\/file\/d\/1Wx0B3tlcaYPh24vZnyMJAy70tkAGq-TC\/view?usp=sharing<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solution technique &#8211; R\u00e9Cup Arthur PILETTE \u2013 Vincent GUILLON \u2013 Raphael VOYER \u2013 Pierre DUGAST I. Pr\u00e9sentation A. Objectifs B. Design II. Conception technique\u00a0 A. Structure physique (m\u00e9canique + mat\u00e9riel utilis\u00e9) Mat\u00e9riel utilis\u00e9 Structure m\u00e9canique du syst\u00e8me Circuit \u00e9lectrique B. Structure logicielle Pr\u00e9sentation des diff\u00e9rents programmes Diagrammes de s\u00e9quence Logigrammes (interactions entre les programmes et [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6765,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[113],"tags":[],"class_list":["post-6739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couad"],"acf":{"article_projet":[10707]},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/comments?post=6739"}],"version-history":[{"count":2,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6739\/revisions"}],"predecessor-version":[{"id":10715,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/6739\/revisions\/10715"}],"acf:post":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/10707"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=6739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=6739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tags?post=6739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}