Traceur de dessin

image:
image: rolanddxy.png
fabricant:
Roland
modele:
DXY-1200
utilisation:
traçage de dessin
materiaux:
papier
zonedetravail:
432 mm x 297 mm (A3)
acces:
Libre
dangerosite:
Peu dangereux
etat:
Opérationnelle
documentation:
95%

Manuel

apprentiLAB dispose de traceurs de dessin de récup, un Roland DXY-1100, un DXY-1200, et un DXY-1250 mais ce dernier ne semble pas fonctionner.

Ils permettent de faire des tracés 2D au stylo (ou autre) sur du papier.

Ce sont de vieilles machines, mais il existe quelques hacks pour adapter des fichiers SVG et la piloter depuis une Raspberry Pi notamment.

Exemples emblématiques, exemples inspirants de ce qui se fait ailleurs avec ce type de machine :

Le plateau

Le DXY-1200 possède un plateau électrostatique, qui permet de maintenir le papier plaqué lorsque la machine est branchée et le bouton Paper Hold allumé. NE JAMAIS LE NETTOYER AVEC DE L'EAU, sous peine de l'abîmer.

Le DXY-1100 possède lui un plateau magnétique, on peut maintenir le papier à laide de bandelettes métalliques

La tête de traçage

C'est la partie mobile de la machine, avec une pince pour saisir un stylo

Le magasin de stylos

8 emplacements pour disposer différentes couleurs ou qualités de stylos / feutres / crayons.

Les ports d'entrée

La machine possède deux ports d'entrée : un série et un parallèle. On utilisera le port série, qui a un connecteur DB-25 femelle. Il nous faut donc un adaptateur pour le raccorder en USB à notre ordinateur. Les connecteur se trouvent sous la machine.

Les DIP switches

C'est une série d'interrupteurs qui se trouvent sous la machine, et servent à la configurer. On trouve également un tableau de configuration des DIP switches moulé en relief dans le plastique sous la machine. Celui-ci n'étant pas forcément très lisible, nous l'avons décalqué :

On lit ces paramètres de droite à gauche, voici quelques explications mais c'est également bien détaillé dans le manuel utilisateur Roland :

  • Switch-2 :
    • Baud Rate : vitesse de transmission de données pour la communication. Valeurs possibles : 150, 300, 600, 1200, 2400, 4800, 9600 baud. On le met en général à 9600 (001), car c'est le réglage standard dans les libs qu'on va utiliser (notamment Chiplotle), et que c'est le réglage le plus rapide. Plus d'explications : https://fr.wikipedia.org/wiki/Baud_(mesure)
    • Dataflow : Normal (0) ou Y-drop. Le mode Y-drop c'est quand un ordinateur est connecté à un terminal, et qu'on raccorde le plotter en Y, ce n'est à priori pas un cas de figure qu'on reproduirait aujourd'hui.
    • Parity : None, Even ou Odd (Nulle, Paire ou Impaire). On choisit ce réglage selon comment c'est réglé sur le logiciel ou driver qu'on utilise pour la communication série sur l'ordi (avec Chiplotle, None (00), mais on peut aussi le changer dans la config de Chiplotle…).
    • Data : 8 bits ou 7 bits. Idem, vérifier au niveau du logiciel/driver… Ici 8 bits (0)
    • Stop bit : 1 bit ou 2 bits. Idem, le plus souvent 1 bit (0)
    • Command mode : type de commandes RD-GL I (0) ou DXY-GL, RD-GL I est proche du HPGL, plus standard et utilisé par Chiplotle (les commandes sont des mots de 2 lettres séparées par un ;). Explications simples par ici : https://lesporteslogiques.net/wiki/materiel/plotter_roland_dxy-1200#langage_de_commande
    • Unit : seulement pour le mode DXY-GL, mais ce n'est pas celui qu'on utilise, laisser donc à 0
  • Switch-1 :
    • Character : jeu de caractères, voir l'appendice C de la référence RD-GL : https://archive.org/details/rolanddxy130012001100commandreferencemanualaf/page/n143/mode/2up. Le jeu de caractère peut aussi être réglé par la commande CS, passant alors outre ce réglage du DIP switch, on peut donc le laisser sur le jeu 0000, l'ASCII de base.
    • Input : depuis quelle entrée on va lire les commandes, or on se branche sur le port série, donc 1
    • Expand : pour utiliser toute la surface de dessin, et bypasser le format de papier (voir ci-dessous). 1 pour activer ce paramètre
    • Paper size : format du papier, on aura en général du A4 (01) ou A3 (00). Ce réglage n'est pas actif si Expand l'est.
    • Kanji mode : pour le japonais, inutile, laisser à 00

Config par défaut de Chiplotle. Fichier de config dans $HOME/.chiplotle/config.py (pour trouver $HOME : echo $HOME) :

baudrate = 9600
bytesize = 8
parity = 'N'
stopbits = 1
timeout = 1
xonxoff = 1
rtscts = 0

Donc config des DIP switches : 0010000000 ; 0000110000

  • Mot : description

Stylos, feutres, crayons

La pince à crayon/stylo/feutre de la machine est assez large, et ne peut pas saisir n'importe quel stylo qu'on utilise pour écrire à la main. La machine est normalement fournie avec des stylos (dont certans rechargeables avec des cartouches d'encre de stylo plume) adaptés qui se fixent dans les emplacements prévus à cet effet.

Il faudrait donc acheter des stylos pour plotter Roland DXY :

Ils sont tous assez chers, il vaudrait mieux faire un adaptateur pour stylos, par exemple des feutres stabilo à pointe fine.

Tentative en cours sur le nuage : https://nuage.apprentilab.cnam.fr/s/zt6SeoKxtSrTJqi — 2022/09/15 : le stylo rentre ! par contre la pince a du mal à le reposer, sans doute est-il trop gros… Le petit rebord s'imprime assez mal, peut-être que ça bloque aussi car il est plus large que prévu à cause des bavures → supports, ou faire en deux parties…

— 2022/10/03 : nouvelle version, minimale, plus rapide à imprimer. Il faudra virer le petit rebord et rallonger légèrement le corps pour que ce soit plus facile à mettre dans le magasin.

Ressources :

Adaptateur DB-25 ↔ USB

Pour brancher le port série (RS232, DB-25) de la machine à un ordinateur moderne sans port série, il faut passer par l'USB. Ça n'est pas du tout trivial…

Il est difficile de trouver des convertisseurs-adaptateurs USB ↔ DB-25, alors on va mettre dans un premier temps un adaptateur DB-25 ↔ DB-9 (le DB-9 a moins de broche et est plus répandu), puis un adaptateur Null Modem (DB-9 DB-9), puis un convertisseur DB-9 ↔ USB. Ça tombe bien, il y avait justement tout ça dans un carton avec les machines. Le seul câble qui manque pour l'instant c'est un DB-9 femelle-femelle car on doit raccorder le Null modem (mâle) au convertisseur (mâle), on l'a donc fait avec des jumpers F/F pour l'instant…

Le convertisseur USB doit avoir un chip FTDI, comme requis par chiplotle : https://chiplotle.readthedocs.io/en/latest/chapters/hardware/index.html#usb-to-serial-adapters Celui qu'on a n'est pas étiqueté, on ne savait donc pas s'il y avait un chip dedans, cependant, quand on va dans le device manager de Windows, le driver du port COM qui apparait s'appelle FTDI, donc c'est bon…

Pour plus de détails, voir la section Câblage

  • papier
  • dimensions max : A3

Avec Inkscape

Régler la taille de la page dans les propriétés du document (A4 ou A3, format portrait ou paysage).

Dessiner en vectoriel, voir la page de Inkscape pour plus de détails…

Avec Processing

On ne va pas faire un guide de programmation sous Processing, il y a déjà des super ressources pour ça sur le site officiel : https://processing.org/tutorials Pour commencer rapidement à prendre en main le langage, aller voir dans Fichier/Examples, ou encore parcourir les démos créées par les utilisateurs sur https://openprocessing.org/

Coder ou trouver un sketch intéressant et adapté au traçage (voir les règles plus bas). On ne va générer qu'une seule image, on n'a donc pas besoin de la boucle draw(), on peut tout faire dans le setup().

Pas de background(….

Attention, on ne pourra pas utiliser les fill pour “couvrir” des éléments, il faudra trouver des techniques pour contourner, par exemple les opérations booléennes de la lib PGS.

Règles générales

Garder des marges !

On ne place jamais parfaitement le papier sur la table, on risque alors de dessiner en dehors de celui-ci. Prévoir des marges d'environ 1.5 cm de chaque côté (comme dans un document Word…).

Inkscape : facile à mesurer / redimensionner.

Processing : convertir les marges voulues en cm (dépend de la taille de la fenêtre définie dans size(…) et adapter son code en fonction pour dessiner avec un offset.

Maximum 8 couleurs

Choisir des couleurs qui correspondent aux feutres disponibles sur le plotter.

Inkscape : mettre chaque couleur dans un calque “Pen1”, “Pen2”, etc. La couleur de l'objet n'a pas d'importance, ça peut juste être une aide visuelle, ce sont les calques qui vont séparer les objets en couleurs.

Processing : on utilise directement la commande hpgl.selectPen(n); où n est un entier entre 1 et 8

Préférer les dessins à base de contours aux remplissages

Les dessins à base de traits (lignes, contours…) auront moins de chances de faire des pâtés.

Inkscape : laisser la couleur de remplissage vide

Processing : noFill()

Utiliser des motifs de remplissage

Si on souhaite quand même remplir une forme, on peut choisir un remplissage plein mais ça va prendre un peu de temps et risquer des pâtés.

Une alternative est de choisir un remplissage hachuré, ou tout autre motif de remplissage à base de traits.

Attention, dans Inkscape, il ne suffit pas de sélectionner un motif de remplissage, car ce ne sont as des chemins mais des formes avec des remplissages (donc long + pâtés). On peut créer un motif et faire une opération booléenne sur notre forme (différence, intersection…).

Avec Inkscape

Convertir en chemin

→ convertir les objets en chemin, contours en chemin, etc.

Convertir les textes en chemin ou en texte Hershey

Malgré le fait que la machine implémente des commandes d'écriture de texte optimisées et très rapides, l'export depuis Inkscape ne conserve pas les objets texte. Il faut donc les convertir en chemin. Il existe pour ceci deux méthodes :

Le texte en chemin, avec remplissage vide → on gardera le contour

Texte Hershey : ce sont des polices de caractère sous forme de chemin simple, idéal pour la gravure, etc. (voir notamment Graver des informations dans le plan de masse avec DesignPro). L'avantage c'est que c'est plus chargé, on a une seule ligne au lieu d'un contour, et c'est donc théoriquement plus rapide. Sur Inkscape → sélectionner l'objet texte, puis Extensions/Texte/Texte Hershey. Plusieurs types de font sont proposées, on peut utiliser l'aperçu en direct pour se faire une idée. Appliquer la modif…

Les techniques de tramages peuvent être intéressantes pour cette machine, surtout celles à base de hachures : Tramage d'une image pour la sérigraphie ou la gravure de tampons

Éviter de convertir bêtement un PDF (par exemple un export de fiche technique avec vues en coupe de FreeCAD, etc. Les résultats sont souvent mauvais, car les objets sont parfois constitués de formes superposées, ou de traits qui sont en réalité des chemins pleins…

Convertir son fichier en .HPGL (Fichier/Exporter… choisir le format HPGL)

Avec Processing

Importer la lib HPGL Graphics

import hpglgraphics.*;

Puis, dans le setup, déclarer un objet HPGL :

void setup() {
  HPGLGraphics hpgl = (HPGLGraphics) createGraphics(width, height, HPGLGraphics.HPGL);
  hpgl.setPaperSize("A4"); // Format du papier
  hpgl.setPath("NOMDUFICHIERHPGL.hpgl"); // Nom du fichier output

Mettre le code du dessin à l'intérieur d'un record :

  beginRecord(hpgl);
  // on écrira ici le code de dessin, les beginShape, shape(...), etc.
  endRecord();

Vérifier son fichier avec HpglView

Le logiciel permet de visualiser le rendu de son fichier HPGL. Différentes couleurs sont utilisées pour les différents stylos (pens), ça peut se régler dans Edit/Options/HPGL Pens. Je n'ai pas l'impression qu'on puisse visualiser les commandes, en afficher l'ordre, etc.

Vérifier les marges en déplaçant la souris dans les coins du dessin et en regardant les coordonnées en bas à gauche (le logiciel n'affiche que le dessin, pas les limites de la page selon le format : A4…).

Préparation

Brancher la machine en USB.

Allumer.

Placer les stylos dans les bons emplacements.

Placer le papier : bouger la tête à la position 0,0 (à l'aide des flèches) pour voir ou se situe le coin inférieur gauche, et bien aligner le reste de la page. Appuyer sur le bouton Paper Hold une fois que c'est placé, la table électrostatique s'active. Vérifier que le coin supérieur droit est bien à 29.7 , 21 (A4, paysage), ou autre si format portrait ou A3.

Avec un fichier HPGL et Chiplotle

Ouvrir un terminal (Powershell sous Windows) et entrer chiplotle.

Pour lancer le fichier HGPL, entrer plotter.write_file('CHEMIN_VERS_LE_FICHIER_HGPL') (remplacer avec le bon chemin…)

Vérifier que tout se passe bien et notamment que le plotter prend bien les stylos.

Avec un fichier et le driver WinLINE

Avec l'API Chiplotle sous Python

Pour entrer des commandes à la main, utiliser l'API de Chiplotle, par exemple plotter.write(hpgl.SP(1)) pour prendre le feutre 1.

Ces commandes peuvent nous permettre d'écrire des scripts de dessin avec Python, ou encore d'utiliser les commandes d'écriture de texte de la machine (sans passer par un logiciel qui utilise une font, etc.).

Notons qu'il existe des fonctions “raccourcis”, par exemple plotter.select_pen(1) au lieu de plotter.write(hpgl.SP(1)). On peut aussi écrire plotter.write('SP1').

Plus de détails sur les commandes HPGL plus loin

Cas particulier : écrire du texte

On peut écrire du texte avec la commande LB. Il faut finir par un caractère ETX (x03, ).

Par exemple cette commande :

plotter.write('LBCOMMANDE CHIPLOTLE : ♥')

Donnera ceci : “COMMANDE CHIPLOTLE : ”

Après l'utilisation

Vérifier le placement du papier et les marges

Si on positionne mal la feuille de papier au début, on risque de dessiner hors de celui-ci.

Vérifier le placement du papier en déplaçant manuellement la tête (avec les flèches de la machine) en 0,0, et en W,H (où W et H sont la largeur et la hauteur du papier).

Vérifier les marges sur HpglView

Vérifier que la machine prend bien les stylos

Il peut arriver que la machine ne prenne pas bien un stylo dans le magasin.

Rester à proximité et se tenir prêt à appuyer sur pause s'il y a un changement de stylo.

Si on veut absolument éviter un “trou” dans le dessin, et se donner le temps de réagir, on peut séparer son fichier en plusieurs, un par couleur.

La machine a mal pris/reposé un stylo

Lorsque le traceur attrape ou repose un stylo, la pince ne marche pas toujours parfaitement et il arrive soit qu'on dessine à vide, soit qu'il y ait des collisions entre un stylo toujours dans la pince et un autre que la machine essaie de prendre dans le magasin.

Il faut donc toujours surveiller quand on prévoit des changements de couleurs.

En cas de pince vide : mettre sur Pause et insérer délicatement le stylo, sans forcer sur les axes sinon ils vont se décaler.

En cas de collision : la machine n'a pas le bon stylo, elle a gardé celui d'avant et bien souvent ce problème sera couplé à un décalage en X car la collision a déréglé la calibration des axes. La plupart du temps il faut juste recommencer à zéro…

Réglage des DIP switches

Réglages quand on a récupéré les machines : 9600 baud, Parity Odd, 8 bit data, Stop 1, Command RD-GL, 0.25mm unit ; French/German, Serial, Expand on, ISO A3, Kanji disabled

Réglages dans l'article Hackaday sur le DXY-990 :

  • SW-2 (left one in picture above): 100 (baud 9600), 0 (D), 1 (EN), 1 (even parity), 1 (7 data bits), 0 (1 stopbit)
  • SW-1 (right one in picture above): 0000 (charset), 1 (serial), 0 (reserved), 11 (A4; 10 = A3), 00 (reserved)

Depuis Martian Wabbit (David Diaz) :

  • Baudrate 9600, Databits 8, Parity None, Stop Bits 1, DTR and RTS ON.

Réglages finaux, adaptés à Chiplotle :

Câblage

Il a été assez difficile de comprendre comment brancher la machine à l'ordinateur, sachant que celle-ci utilise un port série DB-25, que les ordinateurs modernes n'ont plus de port série, et encore moins en DB-25, et que la machine était stockée avec un lot divers d'adaptateurs. Après avoir essayé de les raccorder au pif, ça ne marchait pas, il a donc fallu creuser un peu la question. Au final, le problème venait surtout du fait qu'on avait à un moment de la chaîne d'adaptateurs, une fiche mâle à brancher sur une autre fiche mâle, c'était pas très intuitif à trouver au pif…

Il fallait aussi comprendre que dans notre cas de figure, on branche deux DTE (voir https://fr.wikipedia.org/wiki/%C3%89quipement_terminal_de_traitement_de_donn%C3%A9es) ensemble, et que ça nécessite donc de ne pas câbler droit nos fiches série, mais d'utiliser un adaptateur Null Modem. Plus de détails et de super schémas par ici (en) → http://wilbo666.pbworks.com/w/page/49320712/RS232.

Schéma récapitulatif de nos branchements :


Brochage du port Série sur l'appareil :

Quelques explications sur le brochage : https://fr.wikipedia.org/wiki/RS-232#Brochage — (en) la version anglaise a de meilleurs schémas : https://en.wikipedia.org/wiki/RS-232#Data_and_control_signals

On pourrait alléger les branchements en achetant un DB-25 Mâle ↔ DB-9 Femelle Null Modem. Par exemple chez Netram avec qui nous avons un marché : https://www.netram.fr/Catalogue-produits/Connectique/Adaptateur/Adaptateur-Audio-Vid-o/Cordon-s-rie-Null-Modem-DB9F-DB25M-1-80m.html

↑ Revenir à la section sur les adaptateurs

Récap de quelques commandes HPGL / RD-GL usuelles, afin de pouvoir se repérer dans nos fichiers HPGL :

  • IN; : initialisation
  • SP1;Select Pen #1 : prend le stylo n°1 (de 1 à 8)
  • PD;, PDXXXX,YYYY;Pen Down : abaisse le stylo (pour tracer) et déplace la tête jusqu'au point de coordonnées XXXX,YYYY
  • PU;, PUXXXX,YYYY;Pen Up : remonte le stylo (pour se déplacer sans tracer) et déplace la tête jusqu'au point de coordonnées XXXX,YYYY
  • formes :
    • lettre + mode + param : la première lettre indique le type de forme (cercle, rectangle plein, etc.), la deuxième lettre indique le mode (absolu A, relatif R), puis les paramètres sont en général les coordonnées
      • EAEdge Rectangle Absolute : rectangle vide absolu
      • RRRectangle Relative : rectangle plein relatif
      • AA / AR : arc absolu/relatif autour d'un point central (XXXX,YYYY), selon un angle (-360 à 360), avec une résolution (précision de l'arc, qui sera en réalité une série de segments.
    • CI : cercle vide, avec un rayon et une résolution
  • LB → Label : passe en mode écriture. Le point actuel devient le coin inférieur gauche du premier caractère qui suivra, jusqu'à réception d'un code d'interruption (par défaut  = x03 = ).

Voir aussi la liste des commandes supportées par Chiplotle : https://chiplotle.readthedocs.io/en/latest/chapters/api/hpgl.html

Référence complète des commandes de la machine : https://archive.org/details/rolanddxy130012001100commandreferencemanualaf/page/n47/mode/2up

(en) HP-GL Reference Guide : https://www.isoplotec.co.jp/HPGL/eHPGL.htm

Nettoyage du plateau

Ne jamais nettoyer à l'eau !!!

Ne jamais nettoyer alors que l'appareil est sous tension !

La table de dessin est électrostatique, elle est donc fragile. Ne pas nettoyer avec : de l'eau, du tissu à base de silicone, du tissu traité chimiquement, du produit vaisselle, du solvant/dissolvant.

Nettoyer doucement avec un chiffon non-traité (quand il y a un peu de poussière), et si c'est très sale avec de l'alcool éthylique.

Nettoyage des bouchons à feutre

Les bouchons en caoutchouc du magasin de feutres peuvent accumuler de l'encre et salir les feutres, ce qui peut altérer leur couleur.

Les nettoyer dès qu'il sont sales (si on constate une couleur bizarre en début de dessin), ou à chaque fois qu'on change un feutre dans un emplacement (on met du rouge dans l'emplacement 1 alors qu'il y avait du noir…).

Nettoyer à l'eau et laisser sécher complètement avant de les remettre (sinon ça va diluer l'encre du feutre).

Caractères spéciaux dans les commandes Label

En plus de pouvoir envoyer directement des fichiers HPGL à tracer à la machine, on peut aussi directement lui envoyer des commandes, notamment pour la contrôler en temps réel, pour faire de l'art génératif, etc.

Les commandes d'impression de texte sont très intéressantes car elles sont optimisées pour dessiner du texte rapidement et proprement, là où par exemple du texte converti avec Inkscape sera plus lent et risquera parfois de faire des pâtés.

Cependant, la machine utilise des jeux de caractères ASCII très limités, surtout pour écrire en français où on utilise beaucoup d'accents : é ô à ï…

Pour l'instant, lorsqu'un caractère non-reconnu est envoyé par la commande LB (Label), la machine ignore le caractère.

Côté machine, il faudrait se pencher plus spécifiquement sur la commande CS (Caracter Set), qui règle le jeu de caractères utilisé. Côté python/chiplotle, il faudrait regarder les fonctions de conversion de texte depuis/vers l'ASCII, pour être sûr de ce qu'on envoie à la machine (en effet plus de caractères sont reconnus en python, on peut taper des é sans que ça fasse d'erreur).

Voir donc :

NOTE : on peut régler un jeu de caractères standard (avec CS) et un alternatif (CA), et ensuite les sélectionner avec SS et SA. Le jeu 0 a l'air de correspondre à l'ASCII normal. Le jeu 7 a l'air de comporter pas mal d'accents et de caractères spéciaux, ce qui en ferait un bon candidat pour être le jeu alternatif.

On pourrait écrire un fonction python d'écriture qui trie automatiquement les caractères si leur code ASCII dépasse 127 et vérifie s'il existe une équivalence dans le jeu 7, avant de changer de jeu et de l'envoyer.

Aucun résulat

  • fab/machines/traceur.txt
  • Dernière modification: 2022/11/16 12:40
  • de ApprentiLab CNAM