Support pour webcam =================== :date: 2022-01-18 :tags: Impression 3D, modélisation 3D :slug: support-pour-webcam :url: support-pour-webcam TL;DR (trop long, flemme de lire). Télécharger, découper et imprimer le fichier `support-logitech-streamcam.stl `_. Contexte -------- Cela fait plusieurs mois que j'utilise une webcam[ref]Logitech Streamcam[/ref], mais son positionnement n'était pas super. En effet, ayant changé de moniteurs PC et ayant fini par craquer et les positionner sur des bras articulés, je n'avais plus d'emplacement pour poser la webcam. La solution de la poser au dessus de l'un des écrans n'étant plus possible [ref]Parce que trop fin[/ref], il m'a fallu trouver une autre solution. L'une des possibilité était de poser la webcam sur la colonne centrale [ref]celle maintenant les deux bras articulés[/ref], mais cela ne convenait pas du tout. .. image:: images/supportWebcam/image1.jpg Jugez par vous-même. C'est pas terrible. Modélisation ------------ D'abord, avant de toucher au PC, il faut réfléchir sur la forme de la pièce. Par habitude, j'ai dessiné vite-fait une esquisse sur un cahier. Une partie circulaire qui ira sur le montant, une fente rectangulaire dans laquelle coulissera le support d'origine de la webcam. Ensuite, armé d'un pied à coulisse, j'ai mesuré le diamètre du montant (~35,5 mm), et aussi le support de la webcam (36 mm × 12 mm). .. image:: images/supportWebcam/support.jpg Jusque là, pas de soucis. Ayant galéré avec FreeCAD (crash, instable, tutos plus à jour), je suis parti sur OpenSCAD. OpenSCAD ~~~~~~~~ .. warning:: Le code présenté ici correspond à la version 2 du support. Une erreur de mesure et l'absence de marge ont fait que la pièce imprimée initialement était en fait trop petite. Les corrections sur les cotes ont été faites. D'un aspect plutôt austère, cet outil de modélisation a une approche « script ». En résumé, la souris ne sert qu'à regarder la pièce sous différents angles. .. image:: images/supportWebcam/openScad1.jpg La pièce sera composée d'un rectangle, et d'un demi-cercle dépassant de ce rectangle. On commence par le rectangle (44 mm × 40 mm). Taper dans la zone de texte, dans l'éditeur : .. code-block:: javascript square([44,40]); Appuyer sur la touche F5. Un rectangle doit apparaître dans la zone de visualisation. .. image:: images/supportWebcam/openScad2.jpg Maintenant, on ajoute un cercle, de diamètre 44 mm : .. code-block:: javascript circle(d=44); Un appui sur F5 et… ah, ben, c'est pas bon en fait. .. image:: images/supportWebcam/openScad3.jpg Le cercle a été tracé en utilisant les coordonnées x = 0, y = 0, Z = 0 comme point central. Il faut donc déplacer le centre de ce cercle, disons, de 22 mm sur l'axe des x (axe rouge indiqué dans le coin en bas à gauche, dans la visualisation). On va utiliser l'instruction `translate` sur le cercle. Modifier le code comme suit : .. code-block:: javascript translate([22,0,0]) { circle(d=44); }; .. image:: images/supportWebcam/openScad4.jpg Les deux éléments se superposent, ça serait bien de les fusionner réellement. Modifier le code comme suit :  .. code-block:: javascript union() { square([44,40]); translate([22,0,0]) { circle(d=44); }; } .. note:: Ne pas hésiter à indenter le code pour le rendre plus lisible. .. image:: images/supportWebcam/openScad5.jpg Maintenant, on va enlever de la matière (soustraire), via l'instruction `difference`. Le cercle correspondant à la matière à retirer devra avoir son centre positionné au même endroit que le cercle initial ; donc déplacement sur l'axe des x de 22 mm. On va prendre un peu de marge, et creuser avec un diamètre de 37mm. Il y aura un léger jeu dans la pièce, mais ce n'est pas trop grave [ref]Au pire, on peut caler avec un morceau de carton, bristol, feuille pliée…[/ref]. .. code-block:: javascript difference() { //Pièce de base union() { square([44,40]); translate([22,0,0]) { circle(d=44); }; } //cercle (matière à retirer) translate([22,0,0]) { circle(d=37); }; } .. image:: images/supportWebcam/openScad6.jpg .. note:: On peut ajouter des commentaires dans le code. Cela permet de s'y retrouver, ou de tester une petite partie du code, sans impacter le reste. .. code-block:: JavaScript //ce commentaire tient sur une seule ligne /* * Ce commentaire tient * sur plusieurs lignes. */ Admettons que l'on veuille juste tester l'instruction `difference` sur le cercle. On modifierait le code comme ceci :  .. code-block:: JavaScript difference() { //Pièce de base // union() { // square([44,40]); translate([22,0,0]) { circle(d=44); }; // } //cercle (matière à retirer) translate([22,0,0]) { circle(d=37); }; } .. image:: images/supportWebcam/openScad7.jpg C'était juste pour l'exemple. Décommenter le code. On va maintenant découper la fente. On ajoute une nouvelle différence dans l'ensemble, avec un rectangle de 37 mm × 13 mm, et centré par rapport au rectangle, mais décalé par rapport au cercle. .. code-block:: javaScript difference() { difference() { //Pièce de base union() { square([44,40]); translate([22,0,0]) { circle(d=44); }; } //cercle (matière à retirer) translate([22,0,0]) { circle(d=37); }; } //rectangle (matière à retirer) translate([3.5,22,0]) { square([37,13]); }; } .. image:: images/supportWebcam/openScad8.jpg Maintenant, il faut donner du « volume » à la pièce. On va faire alors une extrusion linéaire, via `linear_extrude`, d'une hauteur de 50 mm. .. code-block:: JavaScript linear_extrude(height=50) { difference() { difference() { //Pièce de base union() { square([44,40]); translate([22,0,0]) { circle(d=44); }; } //cercle (matière à retirer) translate([22,0,0]) { circle(d=37); }; } //rectangle (matière à retirer) translate([3.5,22,0]) { square([37,13]); }; } } .. image:: images/supportWebcam/openScad9.jpg .. note:: Ne pas hésiter à changer l'angle de vue avec la souris. .. image:: images/supportWebcam/openScad10.jpg On a presque fini avec la modélisation. Pour éviter que ce support ne tombe, ça serait bien de boucher l'une des extrémités circulaire. On va alors ajouter un cylindre dans la partie circulaire, d'une épaisseur de 5 mm. .. code-block:: JavaScript union() { linear_extrude(height=50) { difference() { difference() { //Pièce de base union() { square([44,40]); translate([22,0,0]) { circle(d=44); }; } //cercle (matière à retirer) translate([22,0,0]) { circle(d=37); }; } //rectangle (matière à retirer) translate([3.5,22,0]) { square([37,13]); }; } } //cylindre servant de « bouchon » translate([22,0,0]) { cylinder(h=5, d=44); } } .. image:: images/supportWebcam/openScad11.jpg .. image:: images/supportWebcam/openScad12.jpg On a presque fini. Appuyer sur F6 pour calculer le rendu (F5 ne fait qu'un aperçu). Appuyer ensuite sur F7 pour générer un fichier .stl. .. image:: images/supportWebcam/openScad13.jpg Le fichier .scad est disponible ici : `support-logitech-streamcam.scad `_. ; tout comme le fichier .stl `support-logitech-streamcam.stl `_. La partie modélisation est terminée. Préparation de l'impression 3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bien, maintenant que l'on a notre fichier stl, on va pouvoir l'imprimer ? En fait, non. Il y a une étape intermédiaire : transformer un modèle 3D en un fichier interprétable par l'imprimante, le fichier gcode[ref]Ce fichier contient les instructions comme chauffe la buse à telle température, avance le plateau (bed) de 30 mm sur l'axe des x, etc.[/ref]. Prenez votre logiciel préféré [ref]pour moi, c'est PrusaSlicer, basé sur Slic 3r[/ref], et importez le fichier .stl. .. image:: images/supportWebcam/slicer1.jpg Faire les réglages habituels, je n'entrerai pas dans les détails, ça change d'une imprimante 3D à l'autre[ref]Je me suis fait des profils d'impression, celui que j'utilise le plus, c'est épaisseur 0,2mm, rapide, avec remplissage rectiligne à 30%. Ce réglage me convient pour la plupart des trucs que j'imprime[/ref]. Faire le découpage/trancher/slicer (le mot peut varier). .. image:: images/supportWebcam/slicer2.jpg Ne pas hésiter à visualiser le résultat couche par couche. .. image:: images/supportWebcam/slicer3.jpg Enfin, générez le G-Code, et l'envoyer à l'imprimante (via Octoprint, avec une microSD, etc). Impression 3D ~~~~~~~~~~~~~ Patienter quelques heures, le temps que la machine imprime la pièce[ref]4 heures et 20 minutes pour moi, avec une Ender 3 Pro[/ref]. .. image:: images/supportWebcam/print.jpg Résultat ~~~~~~~~ Résultat en images : .. image:: images/supportWebcam/print2.jpg .. image:: images/supportWebcam/print3.jpg .. image:: images/supportWebcam/print4.jpg Et une fois en place :  .. image:: images/supportWebcam/resultat1.jpg .. image:: images/supportWebcam/resultat2.jpg .. image:: images/supportWebcam/resultat3.jpg Conclusion ---------- Créer une pièce en plastique à partir de rien, ce n'est pas compliqué. C'est juste un peu long, mais le résultat en valait la peine. -- .