IMA4 2017/2018 P42 : Différence entre versions

De Wiki de Projets IMA
(Liste des tâches à effectuer)
(Réservoir de pièces)
Ligne 133 : Ligne 133 :
  
 
[[ Fichier:Reservoir.jpg|400px|thumb|center|schéma du réservoir]]
 
[[ Fichier:Reservoir.jpg|400px|thumb|center|schéma du réservoir]]
 +
 +
Ce dessin représente un rail du réservoir. Chaque rail peut recevoir une quinzaine de pièces d'un type précis. On va donc réaliser un réservoir pouvant recevoir 6 types de pièces donc contenant 6 rails. Les pièces que nous allons utiliser pour notre projet sont des pièces de Lego 1x1 qui mesurent 0,8*0,8cm.
  
 
====Tête d'impression====
 
====Tête d'impression====

Version du 24 janvier 2018 à 16:45


Présentation générale

Le but de notre projet est de recycler une imprimante 3D de façon à ce qu'elle assemble des Lego selon un modèle dessiné par l'utilisateur sur une application web.

Description

Le projet sera composé d'une imprimante 3D associée à un réservoir. Il fonctionnera avec une application web nous permettant de dessiné le modèle que l'on désire.

  • Imprimante 3D

Il nous faudra modifier la tête d'impression de l'imprimante pour qu'elle puisse récupérer les pièces de Lego et les déposer sur la plaque. Il nous faudra étudier le Gcode de l'imprimante et voir si on peut l'adapter à notre application.

  • Application web

L'application web sera séparée en deux parties:

    • Une partie permettant à l'utilisateur de dessiner le modèle qu'il désire réaliser
    • Une partie permettant à l'utilisateur de renseigner les pièces présentes dans le réservoir (position, couleur, quantité...)

Objectifs

On peut décomposer le projet en plusieurs partie:

Partie mécanique

  • Adaptation d'une base d'imprimante 3D
  • Réalisation d'un réservoir pour les pièces de Lego

Partie électronique

  • Utilisation d'un Arduino pour gérer l'imprimante 3D

Partie informatique

  • Réalisation d'une application web
  • Etude et possible modification du gcode de l'imprimante 3D
  • Réalisation d'une application pour gérer le remplissage du réservoir

Analyse du projet

Positionnement par rapport à l'existant

Notre projet possède assez peu de concurrents, la majorité d'entre eux étant des réalisations personnelles trouvables sur YouTube. Pour l'élaboration de ce projet nous nous sommes inspiré du bricasso.

Analyse du premier concurrent

Une projet similaire au notre s'appelle Bricasso [1]. Il s'agit d'un projet réalisé en Lego Mindstorm EV3.

Cette imprimante scanne un dessin papier et l'imprime en LEGO en plaçant des pièces de couleurs correspondantes. Il possèdes beaucoup de limitations dont notre projet s’affranchira : impression uniquement en 2D, un seul type de pièces, absence de connectivité.

Cependant, ce projet contient de très bonnes idées dont nous allons nous inspirer, notamment pour la tête d’impression.

Analyse du second concurrent

Au niveau de l’application WEB, notre principal concurrent serait le logiciel Lego Digital Designer qui permet de créer en 3D des objets LEGO et de les exporter sous différents formats. Ce logiciel est très complet, cependant il ne contient pas toutes les fonctionnalités dont nous aurons besoin pour notre projet. Il permet d’utiliser toutes les pièces LEGO existantes alors que seules certaines seront utilisables dans notre projet. À terme, nous voulons essayer de mettre en place une compatibilité entre notre application et le logiciel, mais les formats d’export sont très mal documentés et ce sera difficile.

Scénario d'usage du produit ou du concept envisagé

Justine, jeune elfe d’IMA4, souhaite construire des objets en LEGO pour les assembler en un robot. Elle souhaite concevoir ses LEGO en cours de réseau au lieu de travailler, mais ne dispose pas du matériel nécessaire. Une fois rentrée chez elle le soir, elle n’a pas le temps de s’en occuper car elle doit travailler son espagnol. Depuis n’importe quel ordinateur, Justine peut construire son modèle et l’enregistrer. Une fois rentrée chez elle, elle branche son imprimante LEGO et son objet se construit sans aucune intervention de sa part. Son imprimante ira chercher les pièces désirées (spécifiques à son modèle) dans le réservoir et va ensuite aller les placer sur la plaque LEGO servant de support. Le réservoir possédant 5 rails différents il est possible d'utiliser des pièces de 5 couleurs différentes. Le choix des pièces étant limité par la taille du réservoir on utilisera donc des pièces carrées LEGO 1x1.

Réponse aux questions difficiles

Comment démarrer l'imprimante à distance ?

L'impression pourra être déclenchée depuis l'application Web lorsque l'imprimante est allumée et connectée. Le processus d'impression sera divisé en plusieurs parties :

Avant ces étapes, un message est affiché à l'utilisateur pour lui rappeler de bien positionner la plaque d'impression. L'imprimante ne vérifie pas que la plaque est bien positionnée avant de lancer le processus. Si l'utilisateur valide cette étape, la processus continue.

- Connexion à l'imprimante : L'application tente de se connecter à l'Arduino de l'imprimante via Wifi. L'adresse IP de l'Arduino devra être renseignée par l'utilisateur mais pourra être enregistrée en préférences. Si la connexion échoue, un message d'erreur est affiché à l'utilisateur. Si la connexion réussit, l'impression se lance.

- Envoi des données : après la première connexion, l'application envoie les données du projet à l'Arduino.

- Impression : l'imprimante positionne la tête d'impression et lance le processus.

Comment sera calibrée la plaque d’impression ?

La plaque d'impression utilisée sera fournie avec l'imprimante. Il s'agira d'une plaque LEGO classique, ses dimensions seront donc parfaitement connues. Si l'utilisateur décide de créer un projet de dimensions inférieures dans l'application web, le coin de la plaque sera utilisé.

Étant donné que la plaque sur laquelle sera "imprimé" l'objet fait partie de l'objet il nous faut trouver un moyen pour qu'elle soit toujours à la bonne position. Nous avons pensé à réaliser un coin contre lequel un des coin de la plaque sera bloqué (comme sur un massicot pour bloquer les feuilles de papiers). L'utilisateur devra s'assurer que la plaque est dans le bon sens et qu'elle repose bien contre le coin.

Comment la plaque va se fixer sur le sol ?

Il nous faut un système qui permette de récupérer et d'installer la plaque facilement tout en s'assurant qu'elle reste en place lors de l'utilisation de l'imprimante. On pourra donc utiliser un système d'aimants en en mettant à chaque coin et au milieu de la plaque pour qu'elle reste fixée durant l'utilisation et que l'utilisateur puisse l'enlever une fois le projet terminé.

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

Choix matériel

Réutilisation d'une imprimante 3D Prusa i3 [2].

Réservoir
  • Réalisation d'un "toboggan" en polystyrène
  • Une face en plexiglas pour vérifier le remplissage
prototype de tête d'impression
Tête d'impression
  • Dans un premier temps elle sera réalisée en Lego pour la modularité
  • La version finale pourra être réalisée en impression 3D
Plaque d'impression
  • La plaque d'impression sera une plaque Lego
  • Elle sera maintenu avec des aimants
  • Le coin de calibrage pourra être réalisé en plexiglas ou en bois
Informatique
  • Arduino Mega pour contrôler l'imprimante
  • Raspberry Pi3 pour le serveur
  • ESP8266 pour la communication entre le serveur et l'Arduino

Choix logiciel

L'architecture choisie pour l'application web est basée sur trois éléments : l'utilisateur, le serveur de sauvegarde et l'imprimante. Nous avons jugé essentiel d'utiliser un serveur de sauvegarde sur un modèle type Google Drive, car un des intérêts du projet est de pouvoir concevoir son modèle depuis n'importe où. Ce serveur sera donc accessible en ligne à tout moment via un système de connexion. Depuis cette application web, l'utilisateur aura la possibilité de se connecter à son imprimante en fournissant son adresse IP. Les données seront alors transmises sous forme d'un paquet POST ou JSON. A la réception du paquet, l'imprimante lancera l'impression de l'objet.

Backend

  • Node.js : API RESTful
  • PostgreSQL : Base de données projets et utilisateurs

Frontend

  • HTML5/CSS3/JS
  • Utilisation de la balise canvas pour la conception du schéma.

Arduino

  • (provisoire)
  • Utilisation du logiciel Marlin pour le contrôle de l'imprimante [3]
  • Réutilisation de la base du projet [4]
  • Base de l'imprimante [5]

Liste des tâches à effectuer

Adaptation de l'imprimante 3D

Pour notre projet, il est nécessaire d'adapter l'imprimante 3D pour qu'elle puisse effectuer les tâches nécessaires. Le bras de l'imprimante bouge selon les axes x et z et le plateau de l'imprimante selon l'axe y.

Plateau de l'imprimante

Le plateau actuel est une planche de bois de 22*22cm et d'une épaisseur de 0,5cm. Cette surface correspond à toute la surface que la tête d'impression peut atteindre. Il nous faut donc agrandir ce plateau pour pouvoir y mettre le réservoir de pièces. On doit donc couper un rectangle d'environ 22*30cm en bois pour le nouveau plateau de l'imprimante.

Réservoir de pièces

schéma du réservoir

Ce dessin représente un rail du réservoir. Chaque rail peut recevoir une quinzaine de pièces d'un type précis. On va donc réaliser un réservoir pouvant recevoir 6 types de pièces donc contenant 6 rails. Les pièces que nous allons utiliser pour notre projet sont des pièces de Lego 1x1 qui mesurent 0,8*0,8cm.

Tête d'impression

Calendrier prévisionnel

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 0


Prologue

Layout 1.jpg

Nous avons commencé la partie développement web largement en amont, pour être sûrs que ce ne soit pas un facteur limitant à notre avancée. Nous avons commencé par la partie Front End, avec la programmation de l'application de modélisation. Celle-ci se présente sous la forme d'un canvas 2d, quadrillé comme une plaque LEGO, et d'un certain nombre de boutons.

Afin de modéliser une utilisation réaliste, nous avons effectué certains choix pour le prototype de l'application.

  • Trois types de pièces disponibles (1x1, 1x2, 2x2)
  • Nombre de calques paramétrable, dimensions max 20x20x5
  • Coloration des pièces en fonction de leur calque

Les fonctionnalités déjà réalisées lors du début du projet étaient :

  • Placement et suppression de pièces
  • Rotation des pièces
  • Changement de calque
  • Règles de placement basiques

Semaine 1

Application Web

Lors de la première semaine, nous avons commencé la partie communication de l'application web. Du côté Back End, nous avons établi une première version élémentaire de l'API RESTful, capable de recevoir et répondre des messages simples à des requêtes HTTP. Nous avons réussi à mettre en place la communication entre l'application et le serveur, et à transmettre les données de toutes les pièces en JSON. Plus tard dans la semaine, nous avons implémenté la majorité des fonctionnalités de l'API et mis en place la base de données sur le Raspberry Pi. A la fin de la première semaine, nous étions en mesure de charger la liste des pièces depuis la BDD, charger la liste des projets et sauvegarder un projet. Du côté Front End, nous avons avancé sur le protocole d'envoi des données vers l'imprimante. Pour commencer, nous avons formaté les données sous un simple format URL-encoded. A terme, l'objectif est de les envoyer également en JSON pour plus de simplicité et de clarté. Un problème que nous allons devoir réussir à contourner est la contrainte CORS de même origine pour les requêtes HTTP, qui risque de nous empêcher d'envoyer des requêtes à l'imprimante. Nous réussirons peut-être à nous affranchir de cette contrainte en configurant correctement l'imprimante.

Imprimante 3D

état de l'imprimante 3D


Cette première semaine a été dédié à tester l'imprimante 3D que nous avons récupéré d'un ancien projet et à la remettre en état. En effet, l'imprimante que nous allons utiliser n'a pas été terminé par ses précédents utilisateurs: certaines pièces ne sont pas ou mal fixées et la courroie de l'axe x n'est pas correctement tendue. Nous avons donc lu le wiki du projet de l'imprimante à chocolat pour voir comment fonctionne l'imprimante et nous l'avons testé en remettant l'imprimante en position initiale. On constate donc que les 4 moteurs et les 3 capteurs de fin de course fonctionnent correctement cependant, le capteur de fin de course de l'axe z est mal fixé et mal positionné: la pièce ne l'actionne pas et le fait descendre en même temps qu'elle descend. Une fois que nous étions assurés que l'imprimante fonctionnait correctement, nous avons commencé à nous occuper de la partie mécanique en elle même en fixant des pièces non fixées notamment le plateau d'impression et en retendant la courroie qui est actuellement maintenue avec du scotch. Il nous reste donc à trouver une solution plus solide pour la courroie, un moyen pour fixer le capteur de fin de course de l'axe x et à fixer quelques pièces.

De plus, nous avons commencé à réfléchir à comment modifié cette imprimante pour l'adapter à notre projet: notre problème est de savoir où l'on pourra positionner le réservoir pour que l'imprimante puisse aller chercher les pièces. Nous avions prévu de le mettre sur le côté de l'imprimante cependant il ne sera pas possible d'utiliser cette disposition car l'axe x est trop petit et le "bras" ne pourra pas l'atteindre. Une autre solution est d'agrandir le plateau de l'imprimante pour installer le réservoir dessus il faudra donc faire attention à sa taille et son positionnement. Cette solution réduira l'espace disponible pour monter les Lego car il faut tout de même positionner le réservoir de manière à ce que le bras puisse l'atteindre. Et il nous faut aussi trouver un moyen de fixer notre "tête d'impression".

Semaine 2

Documents Rendus