RéCup – Solution technique

Envoyé par le 11 Jan 2021

This entry is part 6 of 6 in the series RéCup

Solution technique – RéCup

Arthur PILETTE – Vincent GUILLON – Raphael VOYER – Pierre DUGAST

I. Présentation

A. Objectifs

B. Design

II. Conception technique 

A. Structure physique (mécanique + matériel utilisé)

  • Matériel utilisé
  • Structure mécanique du système
  • Circuit électrique

B. Structure logicielle

  • Présentation des différents programmes
  • Diagrammes de séquence
  • Logigrammes (interactions entre les programmes et lien vers le code)

C. Interactions avec le système

  • Fonctionnalités
  • Diagrammes de cas d’utilisation

III. Choix de conception

A. Caution

B. Structure mécanique

C. Analyse de tasses (détection + présence)

IV. Améliorations possibles du système

A. Esthétisme (site Web avec CSS + design physique)

B. Mise en place d’une application Android

C. Amélioration des performances

 

I. Présentation

A. Introduction de la solution et de ses objectifs

Les cafés, restaurants et cafétérias font face depuis de nombreuses années à des vols et casses de tasses. Bien que la tasse ne soit pas un objet de valeur, à grande échelle ces actes ont de multiples conséquences. Le premier est l’impact financier. Ce sont plus de 100 tasses qui sont perdues chaque année. Le coup de rachat étant d’environ 1€20 par unité en moyenne pour les grandes et petites tasses. L’organisation a un coût minimum de 120€ chaque année pour remplacer ses tasses. Le second est l’impact environnemental. Étant donné qu’il est nécessaire d’utiliser un nouveau matériel sans que le précédent ait complété son cycle de vie, on perd l’avantage de l’impact écologique de la tasse en céramique sur ses concurrents. Il est donc nécessaire de prolonger la vie de la tasse pour améliorer le bilan environnemental des cafés, restaurants et cafétérias.

C’est pourquoi nous avons mis au point la solution RéCup afin de réduire les pertes de tasses de la cafétéria de l’IMT Atlantique. Le système réCup vise donc à répondre aux défis suivants :

  • Réduire l’impact financier liés aux pertes de tasses pour la cafétéria
  • Réduire l’impact environnemental induit par les contenants de boissons chaudes
  • Inciter les consommateurs à rendre leurs tasses

B. Design

Le design de notre système est assez simple car une grande partie du système est protégée par l’armature de notre système. Seuls les composants dont l’interaction est utile dans la réalisation d’une ou plusieurs opérations sont visibles depuis l’extérieur du système. Parmi ces éléments on retrouve l’afficheur LCD permettant d’indiquer à l’utilisateur l’avancement des opérations et les tâches à suivre, le module RFID lui permettant de s’identifier ainsi que le compartiment de dépôt de tasse. En définitive, le design final de notre prototype est le suivant :

II. Conception technique 

Le système réalisant nos divers services est relativement complexe car il intègre à la fois une partie mécanique, électronique et logicielle. Afin que vous puissiez comprendre le fonctionnement technique et la structure de ce système, nous en avons détaillé la conception technique.

A. Structure physique (mécanique + matériel utilisé)

  1. Matériel utilisé

Avant de vous présenter les différents points de la conception technique, il est important de vous présenter le matériel utilisé. La liste de matériel que nous avons établie vous permettra de mieux comprendre le rôle de chacun des composants et leur contribution dans le système global. Ce tableau comprend aussi une analyse du coût d’achat des différents composants et ainsi vous présenter le budget total nécessaire afin de mettre en place une telle solution.

 

MATÉRIEL PRIX
Raspberry Pi 3B+ 40€
Pi camera module V2 15€
Ecran LCD I2C 10€
Détecteur de présence 4€
Boutons poussoirs 1€
Led couleurs x5 

+ LED éclairage x3

2€
Module RFID + badge RFID 2€
Arduino 15€
CNC shield et drivers moteurs 6€
Axes aluminium 26€
Poulies 11€
Alimentation 12V 5A 9,3€
Visserie 13€
Moteurs pas à pas type NEMA 17  x3 21€
Roues  5,5€
Courroies  3,5€
Servomoteurs x2 2,5€
Interrupteurs fin de course x7 3€
Filament PETG environ 400 gr 12€
Bois  récup

 

Raspberry Pi 3B+

Le Raspberry Pi est un nano-ordinateur capable disposant de GPIO afin de piloter un grand nombre de composants. Nous avons opté pour le Raspberry Pi afin de piloter l’ensemble des composants du projet car le nombre de GPIO d’une carte Arduino UNO ou AT MEGA n’est pas suffisant pour brancher l’ensemble de nos composants. De plus, notre logique séquentielle implique d’utiliser plusieurs composants simultanément tels que le bouton Terminer et le capteur ultrason pour permettre à l’utilisateur de terminer son opération de dépôt ou déposer une autre tasse. Un Arduino n’est pas capable de réaliser de telles opérations alors que le Raspberry capable de gérer des processus peut utiliser les “Threads” à cet effet pour paralléliser certaines parties de notre code. Pour finir, le Raspberry dispose aussi de ressources suffisantes (RAM, CPU, …) pour accepter un module léger de deep learning qui nous sera utile pour l’analyse d’objets.

Arduino et CNC shield

En complément de notre Raspberry Pi, nous avons utilisé un Arduino afin de lui confier la tâche de gestion du système de stockage. Cela permet permet trois choses ;  tout d’abord l’utilisation d’un shield CNC qui permet d’accueillir les drivers moteurs, l’arrivée du courant de puissance pour les moteurs, les connecteurs pour les capteurs de fin de course, etc. L’utilisation de ce shield simplifie et organise grandement le câblage. De plus l’arduino est ensuite relié au Raspberry via un câble USB, ce qui est nécessaire. Brancher tout le système de stockage sur le Raspberry aurait occupé une vingtaine de pins (soit la moitié du GPIO), ne laissant alors qu’une dizaine de pins data pour le reste des composants de notre solution, ce qui n’aurait pas suffit. Finalement cette architecture permet d’utiliser le logiciel GRBL sur l’arduino, qui permet de faciliter la gestion des déplacements du système de stockage.

Ecran LCD I2C

L’écran LCD a aussi un rôle fondamental dans notre système car il joue le rôle de front-end avec notre système en affichant les informations à l’écran. Cet écran peut afficher des instructions telles que :

  • Présenter votre badge
  • Déposer la tasse
  • Retirer l’objet

L’écran indiquera aussi les résultats des opérations réalisées par notre système tels que : 

  • Caution rendue
  • L’objet déposé est une tasse

Module RFID et badge

Le module RFID est un module de radio-identification permettant la mémorisation et la récupération de données à distance. Ce module est capable de reconnaître les tags présents dans les différents badges. Ainsi le module RFID nous permet d’identifier de manière unique chacun des utilisateurs évitant ainsi d’éventuels vols liés à des usurpations d’identité.

Capteur ultrason 

Le capteur ultrason permet de détecter des éléments présents en champ proche grâce à la réverbération des ondes qu’il émet. Ce composant permet ainsi de détecter lorsqu’un objet est déposé dans le compartiment. Un tel mode de fonctionnement permet de n’utiliser la caméra utilisée pour l’analyse que lorsqu’un objet est détecté. De ce fait, la consommation en ressource et en énergie est bien plus modérée améliorant ainsi la durabilité de notre système. 

Module Pi-Caméra

Le module Pi Caméra est un module de caméra adapté pour le Raspberry Pi nous permettant de visionner l’objet qui a été déposé dans le compartiment pour que le Raspberry Pi l’analyse. Bien que ce module soit plus intéressant qu’une Webcam car il est plus petit et est plus adapté au Raspberry Pi, il est tout de même possible d’utiliser une webcam pour réaliser cette fonction.

LED éclairage

Les LED d’éclairage permettent d’illuminer le compartiment de dépôt afin que l’objet soit visible par la caméra pour l’analyse. 

Bouton poussoir “Terminer”

Ce bouton permet de réaliser de mettre en place un mécanisme d’interrupteur permettant d’indiquer au système lorsque l’utilisateur souhaite terminer l’opération de dépôt.

Distribution (Axes aluminium, roues, chariot)

Le système de distribution comprend différents éléments tels que des axes, des roues et un chariot permettant d’acheminer la tasse jusqu’aux bacs de stockage. Les axes sont des profilés 2040. Grâce à des écrous adaptés (T-nuts) qui se glissent dans la gorge des profilés, on peut facilement assembler ces axes sans les percer mais également y monter des pièces (supports moteurs, …). Le tout offre une structure solide.

Ces profilés permettent aussi de guider les roues qui permettent la mobilité du chariot transportant les tasses sur l’axe vertical et l’axe horizontal.

Moteurs pas à pas, poulies, courroies 

Les deux axes du système sont entraînés par des moteurs pas à pas de type Nema 17, de type 200 pas par révolution, avec un couple de 3.2 kg-cm. Deux moteurs fonctionnant de manière synchronisée motorisent l’axe vertical, car ceux-ci doivent supporter le poids de l’axe horizontal. Ce dernier est motorisé par un seul moteur, vu qu’il ne doit faire bouger que le chariot contenant la tasse à stocker. Les deux axes (vertical et horizontal) sont entraînés par courroie et sont guidés par des roues sur roulement, permettant un fonctionnement rapide et fluide.

Servomoteurs 

Deux servomoteurs sont utilisés pour la même fonction, mais à deux endroits différents. Ils permettent de retenir la tasse dans le compartiment d’analyse de la tasse et sur le chariot mobile qui distribue les tasses. Grâce à un système de bielle, ils contrôlent la fermeture et l’ouverture de la porte qui retient ou libère la tasse.

position fermée                                                 position ouverte

Alimentation 12V 5A

Elle permet de fournir la puissance nécessaire au bon fonctionnement des moteurs pas à pas.

Interrupteur à lame souple

Ces contacteurs servent à différentes fonctions dans la solution. Deux sont utilisés comme interrupteur de fin de course au sein du système de stockage, permettant de calibrer le système précisément au démarrage. 

Les autres servent de garde-fou. Un premier permet d’arrêter le système si la porte arrière (accès aux casiers) est ouverte. Trois autres détectent la présence des trois casiers de stockage. Si l’un d’eux manque,  la machine est également bloquée. Un autre permet de savoir si le chariot qui transporte les tasses est à sa position initiale, prêt à recevoir une tasse. Si ce n’est pas le cas, on demande au système de stockage de se replacer correctement.

Un dernier contacteur permet de savoir si la tasse déposée est grande ou petite pour la ranger dans un casier approprié.

Filament PETG

Il a permis de réaliser une grande partie des pièces mécaniques du système : liaison des axes, supports moteurs, chariot, … Toutes les pièces bleues sont réalisées en impression 3D. Ce filament s’imprime assez facilement et offre une meilleure tenue mécanique par rapport au PLA.

Bois

Du médium de 3 et 6 mm a permis de construire différents éléments du système par découpe laser : casiers, façade avant, etc. Des planches de pin de 18mm ont été nécessaires pour fixer les casiers, créer une porte et offrir une structure sur laquelle a été assemblé tout le système. 

  1. Structure mécanique du système

  1. Circuit électronique

L’ensemble des composants nécessaires au fonctionnement du système doivent chacun être branché de manière en fonction de leur mécanique interne. Nous avons donc établi le schéma de câblage global permettant le fonctionnement des composants et donc du système. Pour des raisons de lisibilité, les pin et GPIO utilisés dans notre code sont différents du schéma.

Schéma électronique lié à la Raspberry

Schéma électronique lié à l’arduino

B. Structure logicielle

Bien que notre système soit fortement basé sur des actions mécaniques et physiques celles-ci sont ordonnancées par une structure logicielle relativement importante.

  1. Base de données

 

La base de données est le système backend principal de notre système. Il permet de stocker les informations générales des comptes utilisateurs (collaborateurs et utilisateurs). Le contenu de la base de données est présent dans la capture d’écran ci-dessous :

Ces informations sont récupérées au besoin via des requêtes SQL transmises par les programmes PHP du système. On répertorie actuellement deux cas de figure nécessitant la collecte de ces informations : 

  • Lors de l’authentification d’un utilisateur au niveau du site Web car il est nécessaire de vérifier que l’identifiant et le mot de passe correspondent à ceux de l’utilisateur. Ainsi cela permet d’augmenter la sécurité du système car  seuls les utilisateurs autorisés peuvent profiter des services du système. 
  • Lors des identifications par badge réalisées afin d’emprunter ou déposer une tasse. En effet, il est nécessaire de récupérer les informations de l’utilisateur afin de modifier son nombre de tasses empruntées et son solde en conséquence.

        2.Architecture logicielle

L’architecture logicielle de notre système repose sur des programmes réalisés en différents langages de programmation. 

Programmes PHP liés au site Web 

Notre site Web nécessite de réaliser des opérations calculatoires ainsi que des requêtes, il est donc nécessaire de le mettre en place à l’aide de programmes PHP. Comme vous pouvez le voir sur l’architecture logicielle, le code lié au site Web est présent dans le répertoire appelé “HTML”. Ce dernier est composé des éléments suivants : 

 

NOM DU PROGRAMME DESCRIPTION
html/utilisateur/index.php Affiche les informations de l’utilisateur (nombre de tasses empruntées, caution et solde) s’il est authentifié sinon il est redirigé vers la page html/utilisateur/login.php
html/utilisateur/login.php Affiche la page d’authentification de l’utilisateur
html/utilisateur/logout.php Affiche la page de déconnexion de l’utilisateur
html/utilisateur/config.php Permet la connexion à la base de données 
html/collaborateur/index.php Affiche les informations de gestion des tasses (nombre de tasses total empruntées, utilisateur n’ayant pas rendu leur tasse) si le collaborateur est authentifié sinon il est redirigé vers la page html/collaborateur/login.php
html/collaborateur/login.php Affiche la page d’authentification du collaborateur
html/collaborateur/logout.php Affiche la page de déconnexion du collaborateur
html/collaborateur/config.php Permet la connexion à la base de données 

 

Programmes Python liés au fonctionnement du système

Les différentes actions garantissant le  fonctionnement général de notre système comprenant le dépôt de tasse, la gestion de la caution, la distribution des tasses dans les bacs de stockage etc. ont été établies grâce à plusieurs programmes python. Chacun de ces programmes Python interagissent avec un composant spécifique du système afin de conserver une bonne granularité de gestion du système et obtenir un programme global intelligible pour un futur lecteur. L’ensemble de ces programmes Python sont décrits dans le tableau ci-dessous.

NOM DU PROGRAMME DESCRIPTION
main.py Programme python réalisant le séquencement logique du système. Ce programme appelle pour cela les fonctions des autres programmes au besoin.
afficheur.py Programme permettant de piloter l’écran LCD afin de réaliser divers affichage selon les différentes situations (bonjour, badge invalide etc.)
bac_ouvert.py Programme interagissant avec un interrupteur qui vérifie que la porte permettant la récupération des bacs de stockage est fermée. Lorsque la porte est ouverte, le fonctionnement du système lié au dépôt de tasse se met en pause jusqu’à la porte soit refermée.
bouton_terminer.py Programme interagissant avec le bouton poussoir permettant de terminer une opération de dépôt de tasse. Si ce bouton poussoir est pressé suite au dépôt d’une tasse alors l’opération de dépôt se termine.
casier.py Défini un objet casier comportant différents attributs. Pour chaque casier, on connaît le nombre de tasses dans chaque colonne.
depose.py Ce programme sert d’intermédiaire 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és utilisés par le programme machine.py. 
detection_tasse.py Programme interagissant avec la caméra afin de l’activer si un objet est détecté dans le compartiment de dépôt (presence_tasse.py) et d’appeler les fonctions d’analyse d’objet (TFLite_detection_image_reCup.py).
i2c_lib.py, lcd_py Programmes appelés par le programme afficheur.py afin de permettre le fonctionnement de l’écran I2C. Ces programmes contiennent des librairies ainsi que des fonctions d’affichage intrinsèques au matériel.
liberation_tasse.py Programme interagissant avec le servomoteur bloquant le passage de la tasse vers le chariot mobile. Si une tasse est détectée dans le compartiment, la fonction de déblocage du servomoteur de ce programme est appelée.
machine.py  Ce programme permet de communiquer en série avec le programme GRBL qui tourne sur l’arduino. Il permet d’envoyer des commandes pour initialiser le système de stockage ou déplacer le chariot vers une position particulière.
presence_plateau.py Programme interagissant avec les interrupteurs détectant la présence des différents casiers. Pour que le système fonctionne correctement, il est nécessaire que l’ensemble des interrupteurs soient pressés. Sinon le programme général (main) se met en attente.
presence_plateau_distri.py Ce programme permet de savoir si le chariot du système de stockage est prêt à recevoir une tasse. Il vérifie l’état d’un interrupteur à lamelle. Si le chariot n’est pas au bon endroit, il demande au système de stockage de le replacer.
presence_tasse.py Programme interagissant avec le capteur ultrason afin de détecter la présence d’un objet déposé dans le compartiment de dépôt.
requete_sql.py Programme réalisant les requêtes SQL nécessaires à la gestion des cautions des utilisateurs inscrits dans la base de données.
rfid.py Programme interagissant avec le module RFID afin de récupérer l’ID du badge qui lui est présenté. 
stockage.py Ce programme permet de lancer le stockage d’une tasse qui a été déposée et validée. Suivant la taille de la tasse et la place restante dans les différents casiers, il va choisir le bon endroit où déposer la tasse
tasse.py Définir un objet tasse. Il comporte un attribut qui permet de savoir si la tasse est grande ou petite.
TFLite_detection_image_reCup.py Programme interagissant avec l’outil de deep learning Tensorflow Lite afin d’analyser la photo de l’objet déposé dans le compartiment de dépôt prise par la caméra.
TFLite_detection_video.py, TFLite_detection_webcam.py Autres programmes d’analyse d’éléments dans le cadre de vidéos, de stream ou de webcam. Ces programmes ne sont pas appelés dans notre programme principal mais peuvent servir pour d’autres applications du système.

3.Diagrammes de séquence

Lorsque l’utilisateur interagit avec le système, il appelle des fonctions de programmes réalisant les services attendus. Ces fonctions peuvent elles-mêmes appeler d’autres fonctions d’autres programmes de l’arborescence pour leur propre fonctionnement et ainsi pouvoir réaliser la séquence d’actions attendue. Il est donc nécessaire de décrire les différents appels de fonctions permettant de réaliser la suite d’action attendue afin qu’un néophyte puisse comprendre la mécanique logicielle interne du système. Nous avons pour cela mis en place plusieurs diagrammes de séquence décrivant les scénarii possibles.

Diagramme de séquence indiquant l’utilisation d’un badge invalide pour l’identification

Diagramme de séquence indiquant un processus complet de dépôt d’une tasse


4. Logigrammes (avec interaction entre les programmes)

 

 

Avant toute réalisation technique, nous avons défini le chemin logique que notre système doit suivre pour réaliser nos différents services et éviter des scénarios d’erreurs non traités. L’ensemble des programmes ont été établis selon cette logique décisionnelle représentée dans les schémas suivants.

Logigramme du fonctionnement du système :

 Logigramme du programme PHP :

5. Logique de stockage

Le système RéCup est pensé pour stocker un grand nombre de tasses. Il accepte les deux formats de tasse existants à la cafétéria de l’IMT Atlantique, les grandes et les petites. Il peut stocker jusqu’à 36 petites tasses et 30 grandes tasses.

Pour ce faire, chaque casier est compartimenté 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).

Le système comporte trois casiers identiques. 

Il range alors les tasses en commençant par le premier casier au plus bas (si celui-ci n’est pas plein, auquel cas le programme monte la tasse au deuxième. Il remplit toujours les casiers de la même manière ; il commence par stocker en “p1” si la tasse est petite. Lorsque “p1” est plein, il passe à “p2”. Si “p2” est plein, il passe au “p1” du casier suivant. Le fonctionnement est identique pour les grandes tasses, en utilisant les emplacements “g1” et “g2”.

 

organisation d’un casier

 

C. Interactions avec le système

  1. Fonctionnalités et mise en situation

Le système RéCup réalise un grand nombre de fonctionnalités visant à automatiser la gestion des emprunts et dépôts de tasse. Nous avons défini dans cette partie les fonctionnalités majeures de notre système incluant une mise en situation afin de mieux discerner les différentes interactions avec le système.

Prélèvement d’une caution lors de l’emprunt d’une tasse

L’une des fonctionnalités principales de notre système RéCup est le mécanisme de caution visant à inciter les consommateurs à ramener leur tasse. Ce prélèvement est réalisé de manière transparente lors de la commande de boisson chaude réalisée par les collaborateurs. Pour cela, l’utilisateur s’identifie en présentant son badge au niveau du lecteur RFID afin de pouvoir effectuer une requête vers la base de données pour récupérer les données de l’utilisateur. Suite à ça, le collaborateur indique sur sa machine la boisson commandée par l’utilisateur, ce qui déclenche une seconde requête vers la base de données. Cette dernière a pour but de modifier le nombre de tasses empruntées pour l’utilisateur identifié.

Le schéma fonctionnel décrivant la situation est le suivant : 

Déposer une tasse

Le système RéCup fournit aussi la possibilité aux utilisateurs de pouvoir déposer leur tasse dans un système de collecte sans l’intervention d’un collaborateur de la cafétéria. Pour ceci, l’utilisateur s’identifie en présentant son badge au niveau du lecteur RFID permettant ainsi d’effectuer une requête vers la BDD permettant de récupérer les informations du compte de l’utilisateur. L’utilisateur peut à présent déposer l’objet à l’intérieur du compartiment de stockage afin que le système puisse l’analyser: Si l’objet détecté est une tasse alors le système s’occupe de la distribution de la tasse vers les bacs de stockage. L’utilisateur peut alors simultanément disposer une nouvelle tasse ou terminer son opération de dépôt. Dans ce second cas, une dernière requête sera faite vers la base de données afin de supprimer la caution et créditer le solde de l’utilisateur.

Consultation des informations de l’utilisateur depuis le site Web

Un utilisateur peut consulter les informations relatives à ses emprunts de tasse depuis le site Web prévu à cet effet. L’utilisateur renseigne pour ceci l’URL du système http://192.168.1.98 afin d’être redirigé vers la page d’accueil et choisir son mode de connexion : collaborateur ou utilisateur.

Dans les deux cas l’utilisateur devra au préalable s’authentifier auprès du système en renseignant son identifiant et son mot de passe. Ces derniers seront envoyés via une requête vers la BDD permettant ainsi de vérifier si l’utilisateur appartient bien au groupe d’utilisateur ou collaborateur.

Une fois authentifié, l’utilisateur peut alors consulter les informations présentes sur la page web de son compte.

Une fois authentifié, le collaborateur peut alors consulter les informations présentes sur la page web liée à son profil.

2.Diagrammes de cas d’utilisation

Selon le rôle des acteurs interagissant avec le système nous pouvons répertorier plusieurs use-cases. Ceux qui ont été mis en place ont été représentés dans les diagrammes de use-case ci-dessous : 

Utilisateur : 

 

Collaborateur : 

III. Choix de conception

A. Caution et avantages participatifs

Le système visant à inciter les utilisateurs à rendre leur tasse a été complexe à mettre en place car il doit respecter un grand nombre de contraintes : 

  • Être abordable financièrement pour les utilisateurs
  • Ne pas créer des flux d’argents illicites
  • Ne pas être éthiquement répréhensible
  • Engager les utilisateurs à rendre leur tasse intuitivement

Plusieurs solutions ont été pensées pour répondre à ce besoin. Tout d’abord, nous avions pensé à un système de caution qui ponctionne aux utilisateurs une petite somme permettant ainsi de rembourser automatiquement l’organisme qui prête les tasses en cas de casse, perte ou vol. 

Dans la première version de ce système nous avions estimé que la possibilité de récupérer la caution des utilisateurs qui abandonnent leur tasses pourrait être intéressante afin d’inciter les utilisateurs à ramener leur tasse. Cependant cette possibilité soulève à la fois des problèmes éthiques et juridiques. D’une part, un tel système peut inciter des utilisateurs malveillants à dérober les tasses des autres afin de récupérer les cautions des autres utilisateurs. De plus, un système générant de tels flux financiers entre les utilisateurs est totalement illégal. 

Nous avons donc imaginé un second système basé sur des avantages fournis selon le nombre de tasses rendues. Par exemple, lorsqu’un utilisateur ramène une vingtaine de tasses, la cafétéria lui offre une boisson chaude ou un soda. Cependant, dans le cadre d’une école avec un grand nombre d’élèves qui consomment fréquemment des boissons chaudes, ce type de solution peut s’avérer très onéreux ce qui ne respecte pas la contrainte budgétaire du système.

Nous avons donc finalement opté pour la première option en repensant le système de caution pour qu’il respecte à la fois l’éthique et la loi. Contrairement au système de caution classique, il n’est pas possible de récupérer plus d’argent que la caution qui nous a été prélevée. Nous avons jugé qu’appliquer une caution que l’utilisateur peut perdre s’il ne ramène pas sa tasse serait suffisante pour impliquer les utilisateurs dans le processus de collecte des tasses. Par conséquent, nous avons estimé que cette solution est celle qui répond le mieux au cahier des charges.

B. Structure mécanique

Pour être utilisable ce projet a nécessité une importante phase de conception mécanique. En effet, une fois la tasse analysée et acceptée, il faut la stocker ; c’est le but d’une consigne.

Casiers 

Au début du projet, la manière dont nous allions réaliser ce stockage était 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ù beaucoup de personnes restituent leur tasse au même moment. Nous savions qu’il nous fallait un système qui permette d’empiler plusieurs couches de tasses, afin d’avoir un maximum de tasses dans un volume donné. Nous avons pensé à différents systèmes ; par exemple un bras robotisé qui pourrait empiler des tasses. Mais cela semblait trop complexe à réaliser. Une autre idée était de faire un tunnel incliné avec des fentes de différentes tailles menant à un casier semblable à ceux réalisés, les tasses seraient tombées aux bons emplacements par gravité. Finalement, nous avons mêlé cette solution à un système actif permettant de déplacer la tasse grâce à un chariot, puis de la laisser tomber dans le casier par gravité. 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ère puis en les faisant glisser. 

 prototype en carton pour trouver l’angle d’inclinaison                                            rendu 3D des casiers 

 

Système de déplacement de la tasse

Comme expliqué juste avant, en plus des casiers, il est nécessaire d’avoir un système qui permet d’amener la tasse devant une colonne d’un casier pour ensuite la stocker en la faisant glisser par gravité. 

Pour ce faire, il nous fallait un système permettant un déplacement vertical et horizontal. Nous avons été inspirés par des structures de CNC ou imprimantes 3D. Nous avons conçu un cadre en profilés aluminiums 2040, courant pour des réalisations de CNC ou imprimantes 3D. Il nous fallait un système rapide, nous avons donc préféré un entraînement par courroie plutôt que des vis sans fin, qui auraient été plus lentes. Le choix d’un guidage par roues montées sur roulements est également un système éprouvé, nous l’avons donc retenu pour notre réalisation.

Les moteurs pas à pas retenus sont également très répandus dans le domaine de l’impression 3D/ découpe CNC. En faisant des recherches nous avons pu constater qu’une architecture simple et éprouvée est l’utilisation d’un shield avec les drivers moteurs a4988 sur un Arduino Uno. Le logiciel GRBL installé sur l’arduino permet ensuite de contrôler les moteurs en leur envoyant des commandes standardisées en GCODE.

arduino, cnc shield et drivers moteurs

En dehors des composants assez classiques, nous nécessitions un système sur mesure, au vu de nos besoins spécifiques, qui sont différents d’une CNC ou d’une imprimante 3D. Nous avons entièrement modélisé le système de déplacement en 3D sur un logiciel de CAO. Cette étape était nécessaire car un grand nombre de pièces a ensuite été imprimé en 3D, en PETG pour avoir des pièces suffisamment solides. Le fait de tout réaliser en CAO nous a permis d’identifier de potentiels problèmes (manque d’espace entre deux pièces,…) et de les corriger avant la réalisation. Le temps passé en CAO a été rentabilisé car il a permis un montage sans accrocs.

Modélisation du système de déplacement en CAO

C. Analyse de tasses (détection + présence)

Le système de détection de présence d’objet et de son analyse a aussi été sujet à des choix de conceptions complexes. Il est possible d’utiliser le Raspberry Pi afin qu’il utilise la caméra en permanence pour analyser en temps réel les objets déposés dans le compartiment. Dans un tel cas de figure, les processus d’utilisation de la caméra et d’analyse de l’objet sont constamment actifs. Par conséquent, un grand volume de ressources logicielles sont requis pour cette opération. Si l’on cumule cette utilisation de ressources à celles liées aux actions de distribution des tasses, d’identification et autres, la qualité de service peut être fortement détériorée et le matériel peut être à terme endommagé. Il est donc nécessaire d’optimiser au maximum les ressources utilisées par le système d’analyse de l’objet. Pour cela, une avons envisagé deux solutions qui permettent de grandement limiter l’utilisation des ressources sans détériorer la qualité de service.

Tout d’abord, nous avons utilisé le TensorFlow Lite comme outil d’exécution des modèles de prédiction TensorFlow plutôt que l’outil classique Tensorflow. Tensorflow Lite est plus adapté pour exécuter des modèles de prédiction sur des appareils mobiles et des objets connectés. Les inférences d’apprentissage profond réalisées avec Tensorflow Lite sont plus rapides et occupent une plus faible taille. Bien que les résultats fournis avant un tel outil soient de moins bonne qualité, un objet tel qu’une tasse étant très simple à détecter, les performances d’analyse de l’objet ne seront pas amoindries.

Après avoir étudié les divers programmes de détections d’objet, nous avons réussi à implémenter un code capable de réaliser une détection à partir d’une image à la place d’un flux vidéo en temps réel récupéré par la caméra. Ainsi il sera possible de prendre une photo du compartiment lorsqu’un objet y est déposé afin de l’analyser et donc de limiter grandement les ressources allouées pour l’analyse de l’objet. Cependant, un tel mode de fonctionnement requiert de déterminer lorsqu’un objet a été déposé afin de déclencher la photographie. Pour répondre à ce besoin, nous avons ajouté un système de détection de présence à l’intérieur du compartiment de dépôt. Après avoir réalisé plusieurs tests, nous avons de plus observé que les inférences et donc les scores de détection faites sur une photographie plutôt qu’une vidéo sont de meilleure qualité. 

Grâce à ces deux méthodes nous avons pu réduire significativement les ressources logicielles tout en améliorant les résultats d’analyse de l’objet.

IV. Améliorations possibles du système

Bien que notre système soit à présent opérationnel et qu’il offre les fonctionnalités principales, il peut être grandement amélioré. Ces modifications visent à améliorer les performances de notre système, son accessibilité et son esthétique.

A. Esthétisme et ergonomie (site Web avec CSS + design physique)

L’esthétisme et l’ergonomie sont deux points d’amélioration qui peuvent être importants dans l’optique de produire notre système. En effet, notre système fait appel à la civilité des utilisateurs en leur prélevant une caution pour l’emprunt des tasses. Il est donc très important qu’il soit accepté par la majorité des utilisateurs. Cette acceptation du système passe évidemment par une esthétique travaillée et une bonne ergonomie permettant aux utilisateurs d’utiliser le système intuitivement.

L’esthétisme et l’ergonomie du système passe par une réédition de l’interface web graphique permettant la gestion des tasses pour les utilisateurs et les collaborateurs. Celle-ci n’est pour l’instant basée que sur un code fournissant les fonctionnalités mais ne propose pas d’interface web intuitive pour les utilisateurs. Il sera donc nécessaire de concevoir un menu et une navigation intuitive pour ce site Web. De plus, notre page web n’est pas liée à une fiche CSS. Une autre amélioration serait donc d’implémenter cette fiche CSS pour améliorer l’esthétique du site Web et en organiser les différents éléments qui la composent. 

B. Mise en ligne du système et mise en place d’une application Android

Notre site web n’est actuellement joignable que lorsque l’utilisateur se trouve sur le même réseau IP que notre système. Afin que les utilisateurs puissent accéder à distance à notre service il sera nécessaire d’assigner une adresse IP publique et un nom de domaine à notre système. Lorsque cette IP ou le nom de domaine sont renseignés, les utilisateurs et collaborateurs seront redirigés vers notre site web leur permettant ainsi de réaliser leurs actions ou consulter leurs informations à distance. 

Nous pourrions aussi envisager de créer une application Android qui réaliserait les mêmes fonctionnalités que notre site Web mais qui serait plus adaptée pour l’utilisation des services depuis un smartphone.

C. Amélioration des performances

Actuellement notre système n’a pas été optimisé et les performances sont donc grandement améliorables. Cette optimisation passe tout d’abord par une revue du code utilisé au niveau des différentes boucles et conditions. Pour cela, il nous faudrait déterminer un chemin logique optimal permettant de réduire le nombre d’opérations effectuées tout en conservant les mêmes fonctionnalités. Une optimisation des ressources utilisées par le système de détection de tasse pourrait aussi être réalisée. En effet, ce système nécessite pour l’instant un grand nombre de ressources logicielles pour fonctionner. Une analyse du fonctionnement logiciel de la caméra et des systèmes de prédiction permettrait de mieux comprendre leur fonctionnement et ensuite de limiter le nombre d’opérations nécessaires et donc optimiser les ressources.

La réalisation de l’ensemble de ces points permettrait une amélioration significative de la qualité de service rendue par le produit et nous permettrait d’envisager une mise en production.

D. Sécurité physique de la consigne

Notre système était pensé pour être une boîte fermée, dont l’intérieur est inaccessible aux utilisateurs. Par manque de temps et de matériaux nous n’avons pu totalement satisfaire cette condition. Il faudrait qu’on monte les panneaux latéraux et le panneau supérieur pour garantir ce niveau de sécurité.

D’autre part, les collaborateurs doivent avoir accès aux casiers via la porte arrière de la machine. Également par manque de temps, nous n’avons mis qu’un loquet symbolique pour fermer la porte. Il faudrait qu’on réalise un système de blocage de la porte plus sécurisé, par exemple grâce à un servomoteur.

exemple de verrou actionné par un servomoteur, trouvé sur internet

Le collaborateur pourrait déverrouiller la porte grâce à son badge IMT.

E. Ergonomie pour le collaborateur

Actuellement le collaborateur dispose d’un bouton permettant de réinitialiser le compte de tasse lorsqu’il vide les casiers pleins et les replace dans la machine une fois vidés. Il est placé juste derrière la porte donnant accès aux casiers. Cependant le collaborateur n’a pas de retour visuel lui indiquant que la réinitialisation a été effective ; il est obligé de faire le tour du système pour consulter l’écran destiné aux utilisateurs. On pourrait imaginer simplement une led rouge et une led verte placés à côté du bouton réinitialiser. Lorsque la consigne est pleine, la rouge est allumée ; après appui sur le bouton, la rouge s’éteindra et la verte s’allumera.

Lien github : https://github.com/reCup-CoOC/reCup

Quelques images du prototype

Une vidéo de fonctionnement du prototype

https://drive.google.com/file/d/1Wx0B3tlcaYPh24vZnyMJAy70tkAGq-TC/view?usp=sharing

Series Navigation<< RéCup – EXPRESSION DU BESOIN

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *