Vous ne savez pas quoi faire avec votre Raspberry Pi ? C'est étonnant, le Raspberry Pi offre tellement de possibilités ! Pour changer un peu des Media-Centers et des tutoriels expliquant comment préparer la carte SD, je vais vous présenter mon projet d'imprimante 3D entièrement conçue avec des matériaux de récupérations (bien que commandée par un Raspberry Pi). Cela peut vous paraître impossible mais il est relativement facile d'obtenir de modestes résultats sans gros investissements financiers.
Je vais donc vous présenter, étape par étape, avec les codes sources et des photos, comment j'ai réalisé mon prototype.
ATTENTION! : Mon projet n'est pas encore totalement abouti mais il est en très bonne voie. Les instructions complètes seront publiées quand j'en aurai le temps et quand tout fonctionnera parfaitement. En attendant, voila déjà un début pour vous donner une idée du projet et pour ceux qui sont pressés, voici un pack contenant mes codes sources:imprimante_arduino_4.zip.
Partie 1 : Présentation générale
Vous vous demandez sûrement comment il est possible de fabriquer une imprimante 3D sans dépenser une fortune en moteurs pas-à-pas et en contrôleurs. La solution est toute simple : des tiroirs de lecteurs CD !
L’avantage des lecteurs CD (de récupération) est que chaque lecteur CD correspond à un axe de notre imprimante 3D. Il nous faudra donc 3 lecteurs CD, un pour chaque axe de notre imprimante (un axe étant une direction selon laquelle la tête d'impression, pourra se déplacer). Il peut sembler difficile de trouver trois lecteurs CD mais il suffit de ramasser quelques vieux ordinateurs-tours avant le passage des encombrants (les gens jettent n'importe quoi !!) pour obtenir une belle collection de lecteurs CD. Généralement le mécanisme du tiroir fonctionne encore même si le lecteur CD à l'air cassé et qu'il ne peut plus lire les CD. Pour optimiser le positionnement des lecteurs CD les uns par rapport aux autres, et après avoir fait quelques tests, il me semble qu'il est plus pratique d'assembler les lecteurs CD selon le schéma ci dessous.
Les lecteurs CD en votre possession, il vous faudra trois relais, quelques résistances ou/et des potentiomètres, des transistors NPN, éventuellement des LED, des breadboards (plaques d'essais sans soudure), beaucoup de fil électrique, et beaucoup de courage pour faire le circuit de commande des moteurs. Vous aurez aussi besoin de carton, de scotch, et de petit matériel de bricolage pour faire l'assemblage final. Vous pouvez aussi utiliser des cartes relais manufacturées, mais j'ai préféré les faire moi-même car j'avais déjà des composants récupérés ici et là à la maison (... et c'est plus drôle !). Après, il ne reste plus qu'à brancher les entrées de votre "carte de relais" au Raspberry Pi et à programmer un logiciel qui gère l'impression et les mouvements des moteurs pour obtenir de magnifiques résultats.
Bon et bien, yapuka !
Partie 2 : Fabrication de la partie mécanique/électronique de notre imprimante.
1 - Une fois en possession de vos lecteurs CD, repérer sur le circuit imprimé du lecteur où sont les bornes d'alimentation du moteur (qui est généralement soudé directement sur ledit circuit, auquel cas il faudra souder directement aux bornes) et y souder deux fils car nous allons alimenter le moteur nous-même afin de pouvoir commander précisément le sens et la durée de fonctionnement du moteur.
2 - Deux options s'ouvrent alors à vous:
-soit vous utilisez une carte de relais achetée toute faite et vous n'avez pas de problèmes (sachant qu'il me semble qu'il faut alimenter les moteurs en 6V)
-soit vous décidez de faire vous-même votre carte et les ennuis commencent. (J'ai fait tous mes tests avec des blocs de 4 piles de 1.5V car je n'avais pas d'alimentation suffisamment puissante). Vous pouvez d'abord brancher les moteurs pour vous assurer de leur bon fonctionnement. Il ne s'agit pas de moteurs pas-à-pas donc il n'y a pas de gestion complexe de l'alimentation mais il faut tout de même pouvoir démarrer, arrêter, et changer le sens de rotation des moteurs. J'ai tout d'abord pensé à un pont en H avec des transistors pour la commande des moteurs mais j'ai perdu beaucoup de temps sans parvenir à faire fonctionner ce montage pourtant simple et normalement efficace. J'arrive parfaitement à commander le moteur avec le Raspberry Pi et via un transistor mais lorsque que je commande le plus et le moins du moteur avec deux transistors cela ne fonctionne plus. Ce n'est pas un problème lié au genre du transistor (NPN/PNP) car j'ai fait des tests avec les deux. Je pense que c'est lié aux caractéristiques des transistors que j'ai utilisés, peut-être un problème lorsque l'on met la charge dans la branche émetteur des transistors.
En désespoir de cause, je me suis donc tourné vers des relais, commandés à travers un transistor et équipés d'une diode de roue libre, pour gérer le sens de rotation du moteur
Voici le schéma. Les diodes de roue libre sont importantes mais pas indispensables : elles servent à faire circuler le courant en boucle jusqu'à atténuation de ce courant dans la bobine du relais lorsque celui-ci entre en commutation car des phénomènes transitoires se produisent lorsque l'on tente de couper brutalement le courant dans une bobine et c'est exactement ce que nous faisons lorsque nous commutons le relais. Lorsque votre carte de relais est prête, il peut-être intéressant de brancher les moteurs à cette carte via des potentiomètres pour essayer de ralentir un peu les moteurs (c'est toujours ça de gagné : plus le moteur ira lentement, plus notre imprimante sera précise). Pour ma part, je n'ai finalement pas mis de potentiomètre parce qu'ils me posaient des problèmes au fur et à mesure que mes piles s'usaient. J'avais réglé les potentiomètres à la limite de fonctionnement des moteurs, et la tension d'alimentation, en variant légèrement, ne permettait plus aux moteurs de démarrer à travers les potentiomètres. Cela provoquait des bugs incompréhensibles jusqu'à ce que j'ôte les potentiomètres de la breadboard (d'où l'avantage de faire le montage au brouillon sur une plaque d'essais sans soudure avant de le réaliser en dur sur une plaque de prototypage rapide).
3 - Faites des tests avec votre Rasberry Pi a l'aide de la librairie WiringPi (instruction d’installation sur le site de Drogon https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ ) Vous pouvez vous faire un petit script bash rapide qui fait avancer / reculer les moteurs en boucle pour vous assurer que tout fonctionne et régler votre potentiomètre (éventuel) précisément. Ceci fait, vous pouvez déjà dessiner des carrés sur une feuille avec seulement deux lecteurs CD (l'un poussant l'autre selon l'axe des y, et l'autre modifiant la position du stylo selon l'axe des x). Mais vous ne pouvez malheureusement pas encore lever le stylo. Je vous conseille de monter le lecteur CD poussant le stylo sur un chariot de façon à réduire les frottements et à épargner un peu le lecteur de l'axe Y. J'ai réalisé mon chariot avec des trains d'atterrissage de LEGO (empruntés à mes petits frères). Une autre solution consiste à poser le lecteur de l'axe des x sur deux plaques de carton rigide (voire glacé) pouvant glisser l'une sur l'autre.
Partie 3 : monter le tout de façon propre
La partie la plus facile !! Il est néanmoins important d'avoir un montage propre afin d'éviter les mauvais contacts et les courts circuits. J'ai monté les axes x et y sur une boite de ramette de papier dont j'ai agrandi le haut avec des plaques de carton dur scotchées solidement. Cela me permet de fixer mon axe z perpendiculairement aux deux autres et sous le crayon (remplacé plus tard par un pistolet à colle pour réaliser des objets 3D). En tout cas, il est maintenant possible de lever le crayon (en fait, baisser le plateau sur lequel est posée la feuille). Nous avons donc une super imprimante 2D Encore faut-il la programmer !
Partie 4 : Programmation du Raspberry Pi
Astuce rapide, j’ai branché mon imprimante via des dominos avec des connecteurs ce qui me permet d’arrêter facilement l'imprimante quand le programme plante et de déconnecter/connecter l'imprimante facilement pour la déplacer par exemple. Il est aussi possible de mettre un interrupteur sur le moins commun du Raspberry Pi ou de mettre un interrupteur sur l'alimentation de votre imprimante (pas pratique dans mon cas car j'utilise des blocs de piles différents pour les différents moteurs) ou de combiner différentes solutions. Ceci dit, entrons dans la partie programmation. Voici un pack contenant mes codes sources:
imprimante_arduino_4.zip.
J'ai choisi de modéliser la feuille comme un tableau dans les cases duquel nous allons tracer des petits point. Pour l'impression 3D, nous repasserons plusieurs fois sur la même feuille en descendant le plateau d'un cran à chaque fois. Pour commencer, j'ai réalisé un programme qui lit dans un fichier texte une matrice de 0 et de 1 préalablement enregistrée. Le programme imprime un point pour chaque "1".
0000000000
0001111000
0001001000
0001111000
0001111000
0010110100
0100110010
0001001000
0010000100
0010000100
Dans ce programme, j'ai mélangé le langage C bas niveau pour gérer le tableau, la matrice de caractères que je rentre et des scripts bash pour incrémenter d'une unité la position des moteurs et manipuler le plateau. Il faut lancer l'exécutable C pour lancer l'impression. Le programme appellera lui-même les scripts bash nécessaires en fonction de la façon dont il interprète la matrice. Cela permet d'avoir une configuration souple et de ne pas avoir à recompiler le programme à chaque modification. Il suffit de modifier les scripts ce qui est très facile. Le programme C lance les scripts avec la commande system(/chemins/script); qui émule un terminal linux. La gestion du temps pour le déplacement des moteurs est effectuée par les scripts avec la commande wait TPS; C’est ce que j'ai trouvé de plus précis mais ce n'est pas terrible. Le mieux serait d'utiliser une carte arduino pour une gestion du temps parfaite commandé par le Raspberry Pi pour l'interface homme-imprimante. J’essaierai plus tard. Voici les scripts et le code source C à compiler avec gcc input -output en console. Pour fonctionner, mon programme nécessite la librairie WiringPi installée sur le système. Je vous conseille de vous inspirer de mon programme, mais de le faire quand même vous-même car vous comprendrez alors mieux comment cela fonctionne (indispensable pour éviter les erreurs grossières) et, de plus, vous aurez les numéros de pins correspondant avec ceux que vous utilisez sur votre Rpi. EDIT: J'ai maintenant codé un programme permettant à l'utilisateur de dessiner dans une fenêtre à l'aide de la souris ce qu'il veut imprimer. Ce programme génère alors des sources dans le language Arduino. Il suffit alors d'uploader ce code sur l'Arduino pour imprimer le dessin. Ce programme fonctionne sur n'importe quel ordinateur et permet donc à ceux qui ne possèdent pas de Rasperry Pi de l'utiliser quand même. Les moteurs sont branchés sur les GPIO de l'arduino toujours à l'aide de la carte de relais.
Partie 5 : La 3D !!
Pour l'impression 3D, j'ai réutilisé le même programme que précédemment (celui avec la matrice de caractère) assorti d'un script qui le relance autant de fois que votre objet comprend de couches. Pour la version 3D de l'imprimante, j'utilise un pistolet à colle à la place du crayon. J'appuis sur la gâchette du pistolet au moyen d'un élastique. Ainsi, la matière utilisée (colle) est bon marché et facile à faire fondre. Attention tout de même à ce que le bout du pistolet à colle touche presque la feuille de façon à ce que la colle soit bien appliquée sur le plateau et non expulsée dans le vide. Vous pouvez "regler" l'épaisseur de la couche imprimée en jouant sur la vitesse d'impression. Le seul problème est que la colle ne sèche pas suffisament vite. On peut néanmoins imprimer de petits objets (voir photos) et si l'on n'est très patient, on peut même réaliser des choses très fines.
Avec de l'imagination, on peut même trouver une utilité à ces objets, une bague pour sa soeur, un support de brosse à dents ou de bic, des pieds pour élever l'ordinateur et dégager les aérations, ... .
Si vous avez d'autres idées, n'hésitez pas à me les communiquer. Si vous avez réalisé la même chose que moi, faites-moi signe avec des photos, cela me fera plaisir.