Surveillance d’une imprimante 3D et re-bobinage de bobines de matière

 

L’équipe ayant réalisée le projet :

Johann GRINAN (GEII)

Jérôme WILLIG (GEII)

Hugo MACCAGLIA (GMP)

Jonathan MEISTER (GMP)

Noémie HARDY (GMP)

 


Sommaire

                                         1. Introduction

2. Analyse fonctionnelle

3. Réalisation côté GEII

4. Réalisation côté GMP

                                         5. Conclusion

                                         6. Documents annexes

 

 


Introduction

 

 

L’impression 3D est l’appellation « grand public » des procédés de fabrication de pièces en volume par ajout ou agglomération de matière. L’impression 3D permet de réaliser un objet réel : un concepteur dessine l’objet 3D grâce à un outil de conception assistée par ordinateur (CAO). Le fichier 3D obtenu est traité par un logiciel spécifique qui organise le découpage en tranches des différentes couches nécessaires à la réalisation de la pièce. Le découpage est envoyé à l’imprimante qui dépose ou solidifie la matière couche par couche jusqu’à obtenir la pièce finale. Le principe reste proche de celui d’une imprimante 2D classique à cette grande différence près : c’est l’empilement des couches qui crée le volume.

De ce fait, cet outil est indispensable pour les étudiants du département Génie Mécanique et Productique (GMP) afin de réaliser tous types de pièces, et donc l’IUT en possède quelques unes. Cependant, les professeurs de ce département nous ont rapporté un problème à l’utilisation de leurs imprimantes : Les temps d’impression étant long (peuvent durer des jours), aucun moyen de supervision n’est mis en place pour contrôler cette machine, notamment pendant les weekend. De plus, il arrive que parfois, la matière ne s’empile pas comme on le souhaiterait et donc non seulement la pièce à imprimer n’est pas aboutie, mais en plus, de la matière est consommée « pour rien », entraînant des coûts supplémentaires.  Vous trouverez donc, ci-dessous, comment nous avons procéder pour la réalisation d’un tel projet.

 


 

Analyse fonctionnelle

 

 

Cahier des charges (CdCF) :

Intégrer un système de commande à distance (supervision) pour une des imprimante 3D du département GMP comprenant :

  • La possibilité de voir en temps réel (+ ou – 5 min) l’état de l’impression en cours, et pour y arriver, devoir d’abord allumer la lumière en actionnant un bras mécanique qui ira appuyer sur le bouton concerné de la machine
  • Pouvoir arrêter le système en cas de mauvaise impression pour limiter les dégâts

La partie mécanique (support de la caméra + bras mécanique) sera réalisée par les étudiants du département GMP

La partie électrique (supervision, câblages, intégration de l’informatique embarquée) sera réalisée par les étudiants du département GEII

Expression du besoin :

 

Diagramme des interactions :

Diagramme FAST :

 

Estimation coût projet :

 

L’IutLab (Le FabLab de l’Iut) nous a fourni tout le matériel.

 


 

Réalisation côté GEII

 

 

I.  Initialisation du Raspberry Pi

Nous avons reçu un Raspberry Pi 3 sans système d’exploitation, il a donc fallu formater une carte microSD et en télécharger un dessus. Nous avons fait le choix de prendre Raspbian, mais il en existe une variété comme Ubuntu, Fedora, etc.

Voici à quoi ressemble l’environnement de travail :

 

Il faut brancher un clavier, une souris, un écran sur le Raspberry, il est donc plus pratique pour nous de travailler depuis l’ordinateur, ce qui nécessite la prise à distance de celui-ci.

Pour avoir accès à l’invite de commande du Raspberry depuis l’ordinateur, nous avons utilisé le logiciel Putty basé sur du SSH qui sécurise la connexion à distance.

Il suffit de rentrer l’adresse IP du Raspberry dans le champ « Host Name ». Celle-ci peut être connue via la commande « ifconfig » sur le Raspberry ou « ipconfig/all » sur l’ordinateur.

Il faut ensuite rentrer des identifiants paramétrables depuis le Raspberry. De base, id : pi et pwd : raspberry

 

Cette technique permet uniquement d’avoir accès à l’invite de commande depuis l’ordinateur. Pour avoir son interface graphique, nous avons utilisé le logiciel « VNC Viewer ».

 

Il serait aussi avantageux de pouvoir envoyer des fichiers depuis l’ordinateur vers le Raspberry sans passer à chaque fois par la carte microSD. L’utilisation du logiciel « Filezilla » utilisant le protocole SFTP nous a été d’une grande utilité.

Sur la partie gauche, vous trouvez les fichiers présents sur votre machine et à droite sur celle à qui vous voulez l’envoyer.  Comme toutes les connexions à distance réalisées ci-dessus, il vous faut l’adresse IP du Raspberry.

Comme nous allons réalisé notre programme en python, il faut installer l’IDE. La commande Linux permettant de faire cette action est « wget ». Il a fallu donc nous familiariser avec les commandes principales sur Linux.

Comme pour tout autre langage de programmation, l’installation de librairies est indispensable. Voici la liste des nos librairies :

  • « paho.mqtt.client » pour la communication en MQTT
  • « RPi.GPIO » pour piloter les GPIO (pin du Rpi) comme sur un Arduino par exemple
  • « time » pour les tempos

II.  Compréhension du python et du protocole MQTT 

 

Nous avons fait le choix de programmer en python sur le Raspberry. Ce langage de programmation nous offre des fonctionnalités comme :

  • créer des interfaces graphiques

  • faire circuler des informations au travers d’un réseau

  • dialoguer d’une façon avancée avec votre système d’exploitation

 

C’est grâce à lui que l’on va interpréter les messages reçus en MQTT. Mais au fait, qu’est ce que le MQTT ?

 

MQTT (MQ Telemetry Transport) est un protocole de messagerie publish-subscribe basé sur le protocole TCP/IP. Comme nous le voyons sur l’image, un capteur va, par exemple, envoyer ses données sur un topic spécifique via le broker MQTT et les appareils abonnés à ce topic pourront recevoir ces données.

Avantages : Ceci prend en compte une de nos principales contraintes : l’ouverture d’un port à l’UHA n’est pas autorisé pour des raisons de sécurité. Si nous faisons un serveur sur le Raspberry, nous pouvons que consulter la page depuis le réseau local, ce qui n’est pas pratique et ne répond pas au cahier des charges. Or, en passant par le broker : « test.mosquitto.org » les messagent transiteront par celui-ci ce qui résout le problème.

Voir doc. annexes pour le code en python stocké sur le Raspberry

 

III. Câblage électrique Raspberry

 

Schéma de câblage du servomoteur.

 

Le Raspberry ne fournissant pas assez de courant sur ses GPIO, il a fallu rajouter une alimentation externe à pile pour que le servomoteur reçoive assez de courant, sinon des vibrations peuvent apparaître. Attention à bien brancher la masse du Raspberry avec la borne négative des piles, et celle du servomoteur ensemble pour avoir le même référentiel.

Actuellement, nous branchons les différents composants électroniques via la « breadboard » afin d’effectuer les tests, et par la suite, les composants seront soudés les uns aux autres et placés dans une boîte isolée du milieu extérieur.

 

IV.  Mise en place de la supervision

 

Nous avons dû créer un serveur Node-Red sur IBM Cloud et un sur le Raspberry Pi pour éviter l’ouverture du port (1880) du Raspberry qui mettrait le réseau de l’IUT en danger, car même sécurisé, la présence de failles peut être rapidement décelée par autrui.

Comment cela fonctionne et communique ensemble :

Sur IBM Cloud (génération de requêtes + affichage résultat de celle-ci si besoin) : Mise en forme de l’interface graphique visible par l’utilisateur qui va générer des « requêtes ». Ces dernières seront envoyées par le protocole décrit plus haut (MQTT) via un Broker. Il suffit donc d’avoir Internet pour envoyer des données.

Sur Raspberry (commande associée à la requête) : Réception des « requêtes » effectuées sur l’interface qui génère une action sur le Raspberry (ex : prendre une photo, mettre une sortie à 1 ou 0, etc…). Si besoin, nous renvoyons le résultat (toujours par MQTT) sur le Cloud (ex : l’image prise par le Pi qui a été convertie en base64).

 

Node-Red permet de créer une interface graphique très facilement par l’intermédiaire de blocs appelés « node » mappés entre eux (voir ci-dessous). Il s’installe sur Raspberry mais comme nous ne voulons pas faire de serveur dessus il faut passer par un Cloud. Le seul que nous avons trouvé permettant une utilisation gratuite est IBM Bluemix.

 

Notre « Flow » tournant sur le Cloud (voir doc. annexes pour le programme) :

Notre « Flow » tournant sur le Raspberry (voir doc. annexes pour le programme) :

 

Si les Nodes MQTT restent à l’état « connecting », changez le broker utilisé. Vous pourrez trouver sur Internet une liste de broker en ligne, en voici une liste : 

  • iot.eclipse.org
  • broker.hivemq.com
  • test.mosquitto.org
  • test.mosca.io
  • broker.mqttdashboard.com

 

L’interface actuelle pour notre supervision :

Note : L’information de la température de la CPU peut paraître inutile mais grâce à elle, nous savons si Node-RED Cloud et Node-RED sur le Raspberry communiquent bien entre eux, ce qui permet de gagner du temps pendant la maintenance en cas de problème.

 

Boitier de protection réalisé à l’aide d’une imprimante 3D :

Afin de créer une boîte sur mesure qui assurera la protection de l’électronique intégrée, nous avons procédé par CAO et réalisé le boîtier grâce à une imprimante 3D:

 

 


 

Réalisation côté GMP

 

Conception des supports de fixation :

I. Support de caméra

Ci-dessous, l’ancienne puis la nouvelle conception du support

 

 

Dans l’ancienne solution, les 2 pattes venant se glisser derrière la vitre risquant d’être trop fragile, nous les avons donc remplacés pas une seule.

Nous avons décidé de réaliser le support de la caméra en impression 3D. En effet les contraintes sur ce support étant faibles, le PLA est suffisamment résistant pour supporter le poids de la caméra.

La caméra est fixée avec du scotch double face sur la paroi.


II. Réalisation du support amovible du doigt motorisé

 

 

 

 

 

 

 

 

 

 

 

 

 


Vue d’ensemble du système de fixation

 

Graphe des liaisons :

 

 

 

 

III. Réalisation des pièces à l’atelier :

  • Sur machine CN à découpe jet d’eau :

Support moteur                                                                                                                                               Support axe

La programmation de la machine jet d’eau se fait directement depuis le poste machine. Il faut transférer le fichier .dxf contenant le profil que devra suivre la buse de la machine pour le transformer ensuite en trajectoire.

  • Sur machine traditionnelle :

Débitage du brut pour l’axe                              Usinage en pince de l’axe                          Fraisage de la rainure de passage du moteur

 

 

Les trajectoire d’entrée de la découpe jet d’eau ont dû être ébavurés ainsi que toutes les arrêtes vives.

 Modification du cahier des charges :

Changement du cahier des charges durant le projet. Ce changement est de pouvoir appuyer sur les boutons de l’imprimante manuellement sans avoir à faire pivoter le bras pour accéder aux boutons.

De ce fait nous avons usiner deux boutons venant se fixer derrière les vis de pression permettant d’appuyer sur les commandes de l’imprimante par l’intermédiaire des vis de pression.

Nous avons usiné les boutons en laiton pour plus d’esthétique, avec un léger arrondi pour améliorer l’ergonomie.

Montage du système

 


Conclusion

 

Situation actuelle :

Supervision permettant de :

  • Piloter le système conçu par les GMP avec le servomoteur
  • Envoyer une image sur un mail à sélectionner
  • Envoyer une image sur l’interface directement
  • Suivre les actions effectuées grâce à un journal d’évènement

 

Nous avons également intégré une sécurité pour notre microcontrôleur :

  • Mise en marche d’un ventilateur si la température de la CPU dépasse 50°
  • Arrêt du Raspberry si la température de la CPU dépasse 80°

 

Connaissances générales acquises :

  • Gestion de projet : Savoir respecter un cahier des charges, dans les délais et coûts souhaités
  • Humain : Dialoguer avec un autre corps de métier et se mettre d’accord sur les façons de réaliser un système
  • Programmation : Capacité d’adaptation notamment en python qui est un langage de programmation très convoité en industrie
  • Technique : Capacité à surmonter et résoudre des problèmes techniques, pouvant retarder le projet, et donc être rapide et efficace dans la recherche d’information

 

Le fait d’avoir pu répondre au cahier des charges nous a permis de voir notre projet fini, ce qui est d’autant plus motivant pour nous :

 

 


Documents annexes

 

Vous pourrez trouver ci-dessous des procédures utiles concernant le projet (méthodes à appliquer, erreurs à éviter…) ainsi que nos programmes :

Procédures pour Node-RED :

 

Création compte IBM

Duplication de notre Flow

Redémarrer le serveur IBM (tous les 10 jours en version gratuite)

Sélection du TOPIC MQTT via menu déroulant

 

Programmes python et Node-RED :

 

Programme python pour le servomoteur

Flow sur le Cloud

Flow sur le Raspberry

Flow pour la sélection via menu déroulant