How to Set Up an iDraw 2.0 Plotter and a Raspberry Pi for Headless Operation

Comment configurer un traceur iDraw 2.0 et un Raspberry Pi pour un fonctionnement sans tête

Cet article est une contribution de @Erez Zukerman

J'aime beaucoup utiliser mon traceur iDraw 2.0, mais j'aime le faire tourner lentement ; mes tracés peuvent donc prendre un certain temps. J'ai utilisé la configuration Inkscape standard pendant un certain temps, mais je devais laisser mon ordinateur principal allumé et connecté au traceur lorsqu'il fonctionnait. Ce n'était pas idéal ; j'ai donc décidé de voir si je pouvais concevoir une configuration « sans écran » avec un Raspberry Pi.
Cela s'est avéré bien plus facile que prévu, et amusant aussi. Voici ce que nous allons faire :
●Configurer le Pi lui-même ;
●Installer CNCjs et ses dépendances. C'est ce que nous utiliserons pour contrôler le traceur, en envoyant du GCode par câble.
●Nous allons également prendre un moment pour configurer CNCjs afin que CNCjs démarre automatiquement au démarrage du Pi, sans que vous ayez à vous connecter ni à intervenir.
●Découvrez comment convertir nos fichiers SVG en GCode (avec contrôle de la vitesse du stylet).
Veuillez noter que ce tutoriel suppose que vous maîtrisez la ligne de commande Linux. Si vous suivez ce tutoriel des mois, voire des années après sa publication, vous risquez de rencontrer toutes sortes d'erreurs en cours de route ; c'est la nature du métier. Au moment de la rédaction de cet article, le système décrit fonctionnait bien pour moi.
Commençons !

Configurer le Pi

Il est préférable de dédier un Pi exclusivement à ce projet, afin qu'il serve de « contrôleur de traceur ». Sinon, pas d'inquiétude ! Cela fonctionnera toujours, mais cela pourrait devenir moins pratique avec le temps.
Une autre bonne raison de dédier un Pi uniquement à ce projet est que vous pouvez le configurer de A à Z avec des paramètres par défaut pertinents. C'est exactement ce que j'ai fait : j'ai récupéré une carte SD de 32 Go et utilisé l'outil officiel Raspberry Pi Imager pour le flasher avec Raspberry Pi OS.
L'outil permet notamment de configurer des paramètres par défaut dès le départ, ce que je recommande. J'ai utilisé le programme d'installation pour configurer les éléments suivants :
● Mon nom d'utilisateur et mon mot de passe ;
● Un nom d'hôte local pour le contrôleur du traceur (plotter.local dans mon cas) ;
● Ma clé SSH publique, pour pouvoir me connecter immédiatement à la machine en SSH ;
● Mon SSID/mot de passe WLAN, pour que le Pi se connecte à mon réseau au démarrage.
J'ai configuré tout cela, puis j'ai laissé l'imageur faire son travail. Une fois terminé, j'ai éjecté la carte microSD et l'ai insérée dans le Pi. Pour le premier démarrage, j'ai connecté le Pi à un clavier et un écran, mais ce n'était pas indispensable. Le nom d'hôte plotter.local que j'ai choisi a mis un certain temps à s'enregistrer sur mon réseau ; j'ai donc utilisé le clavier et l'écran pour récupérer l'adresse IP actuelle (en exécutant ifconfig depuis le terminal).
Je me suis connecté en SSH à la machine, et il était temps de passer à l'étape suivante : l'installation de CNCjs.

Installer CNCjs

Comme son nom l'indique, CNCjs est basé sur Node. Nous devons donc d'abord installer Node.
●Connectez-vous en SSH au Pi.
●Installons NVM :
○curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
●Quittez le terminal, puis reconnectez-vous par SSH. NVM est alors chargé.
●Installons maintenant node :
○nvm install node
●Super ! Il est temps d’installer CNCjs :
○npm install -g cncjs
●En supposant que tout ait bien fonctionné jusqu’à présent, exécutons CNCjs une seule fois. Cela créera notre fichier de configuration, ~/.cncrc :
○Depuis la ligne de commande, dans votre répertoire personnel, exécutez cncjs
○Ctrl+C hors de celui-ci
●Vous êtes maintenant l’heureux propriétaire d’un tout nouveau fichier ~/.cncrc, félicitations. Modifions-le, principalement pour permettre l'accès à distance :
○vi .cncrc
{
    "allowRemoteAccess": true,
    "state": {
        "allowAnonymousUsageDataCollection": false,
        "checkForUpdates": true,
        "controller": {
            "exception": {
                "ignoreErrors": false
            }
        }
    },
    "secret": VOTRE_SECRET ICI
}
La ligne cruciale à ajouter ici est la première, allowRemoteAccess.
●Exécutez à nouveau cncjs sur le Pi.
●À l'aide de votre navigateur sur votre machine principale, accédez à plotter.local:8000. CNCjs devrait s'afficher.

Ensuite, branchez le traceur et vérifiez si CNCjs peut communiquer avec lui.
●Connectez le traceur iDraw 2.0 au port USB du Pi.
●Allumez le traceur.
●Dans CNCjs, localisez le widget Connexion (en haut à gauche par défaut).
○Cliquez sur le bouton Actualiser sous Port.
○Ouvrez le menu déroulant et choisissez l'option port.

●Cliquez sur « Ouvrir ». Si tout fonctionne correctement, la console Gcode devrait maintenant afficher du texte.

Déplaçons les moteurs !


●À l'aide du widget Axes, appuyez sur + et - sur les différents axes pour déplacer les moteurs. Vous pouvez également activer le « jogging au clavier », puis utiliser les touches fléchées pour déplacer le traceur. Si vous enfoncez un stylo et abaissez la toucheL'axe Z, c'est comme un Etch-a-Sketch coûteux.


À noter : la position 0 sur l'axe Y est à l'opposé de ce que l'on pourrait attendre : elle se trouve en bas de la zone de tracé. Nous y reviendrons plus tard.

Exécuter CNCjs au démarrage

Poursuivons : nous souhaitons maintenant revenir à ce point idéal au redémarrage du Pi, sans intervention de votre part. Donc :
●De retour à la session SSH sur le Pi, arrêtez CNCjs en appuyant sur Ctrl-C.
●Assurez-vous qu'il est vraiment mort en actualisant le navigateur (plotter.local:8000, en supposant que c'est le nom d'hôte que vous avez configuré ci-dessus). Cela devrait maintenant échouer.
●Sur le Pi, installez pm2 : npm install -g pm2
●Démarrez CNCjs avec pm2 : pm2 start cncjs --name cncjs
●Assurez-vous qu'il a vraiment démarré et qu'il fonctionne comme prévu : attendez quelques instants, puis accédez à plotter.local:8000 et vérifiez qu'il se charge.
●Créez un script de démarrage : pm2 startup. Cela affichera une commande que vous devrez exécuter avec sudo. Faites-le.
●Enregistrez la liste des processus : pm2 save
●Redémarrez le Pi pour voir si cela a fonctionné : sudo reboot
●Attendez qu'il redémarre, environ 3 à 5 minutes, puis cliquez sur http://plotter.local:8000/ pour voir si vous pouvez à nouveau accéder à CNCjs. Si vous avez réussi, il devrait revenir immédiatement.
Victoire ! Nous y sommes presque : CNCjs est maintenant configuré. Mais pour tracer quelque chose, nous devons l'alimenter avec un fichier GCode ; il ne gère pas nativement les SVG.

Créer un pipeline pour convertir les SVG en Gcode

Pour convertir notre SVG en Gcode, nous allons utiliser Juicy-Gcode, un petit utilitaire en ligne de commande.
Le principal changement est que nous mettons à zéro le coin inférieur gauche de votre feuille, et non le coin supérieur droit ! Ce changement peut demander un peu de temps d'adaptation. Je vous le rappellerai plus tard.
●Sur votre machine principale, téléchargez le binaire de version Juicy-Gcode pour votre système d'exploitation : https://github.com/domoszlai/juicy-gcode/releases
●La configuration de Juicy-Gcode est enregistrée dans ce qu'ils appellent un « fichier de saveur ». Il s'agit simplement d'un fichier YAML. Voici un bon fichier de saveur de départ, vous pouvez le copier/coller dans flavor.yaml sur votre machine :
begin: |
  G21 ; Définir les unités en millimètres
  G17 ; Définir la sélection du plan en XY
  G90 ; Définir le positionnement absolu
  F600  ; Réglez la vitesse à 600 mm/min -- c'est vraiment lent, vous voudrez peut-être modifier
  G00 Z0 ; stylo levé
  G92 X0 Y0 ; considérez la position actuelle comme 0,0 -- c'est le coin INFÉRIEUR GAUCHE
end: |
  G0Z0 ; stylo levé
  G00 X0 Y0 Z0
toolon: |
  G0Z6 ; stylo posé sur le papier
tooloff: |
  G0Z0 ; stylo levé
  
Quelques points importants à noter à propos de ce fichier de saveur :
●J'exécute le traceur à 600 mm/min, ce qui est très lent. Vous souhaiterez peut-être accélérer cette vitesse, en fonction de vos stylos et de vos préférences.
●L'autre ligne notable est celle qui démarre avec G92. Dans cette ligne, nous indiquons au traceur « où que vous soyez en ce moment, c'est chez vous ». Pour calibrer un tracé, nous vous demandons de déplacer manuellement (et délicatement) la tête du traceur vers le coin inférieur gauche du papier.
Il est important que le format de votre papier soit correctement configuré dans le SVG.
Pour exécuter Juicy-Gcode, la commande ressemble à ceci :
juicy-gcode -f flavor.yaml image.svg -o image.gcode
C'est un peu long à saisir à chaque fois, j'ai donc créé ce petit script pour simplifier les choses :
#!/bin/bash
# Usage : ./run-juicy.sh input.svg [speed]
# Si la vitesse n'est pas fournie, la valeur par défaut est 600

# Vérifie si au moins un argument est fourni

if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
echo "Utilisation : $0 <input-svg> [vitesse]"
echo " Si la vitesse n'est pas fournie, la valeur par défaut est 600"
exit 1
fi

inputfile="$1"

# Définir la vitesse par défaut à 600 si elle n'est pas fournie
speed="${2:-600}"

# Créer le nom du fichier de saveur
flavor_file="flavor-${speed}mm-speed.yaml"

# Générer le nom du fichier de sortie en remplaçant l'extension .svg par .gcode
outputfile="${inputfile%.*}.gcode"

# Exécuter la commande juicy-gcode

juicy-gcode -f "$flavor_file" "$inputfile" -o "$outputfile"
Vous pouvez désormais créer plusieurs fichiers de configuration différents, chacun avec une vitesse d'exécution différente, et spécifier facilement cette vitesse en indiquant le numéro correspondant au nom du fichier de configuration.
Maintenant que vous avez un fichier GCode, il est temps de l'importer et de tracer !

Importer le GCode et tracer

CNCjs nous offre deux façons d'insérer un fichier GCode : nous pouvons l'importer via le navigateur en cliquant sur « Importer le GCode », ou configurer un répertoire de surveillance (afin que le traceur démarre dès qu'un fichier GCode s'y trouve).
Cette dernière solution semble intéressante en théorie, mais elle n'a pas beaucoup de sens : chaque tracé nécessite de toute façon une configuration manuelle. Il faut placer le papier, installer le stylo, etc. Donc, pour moi, il est beaucoup plus logique d'importer manuellement le fichier via le navigateur.
Une foisUne fois cela fait, effectuez un zoom arrière pour voir l'aperçu.

Cela nous permet de vérifier deux points importants :
●Nous rappelons une fois de plus (…) que le tracé débutera dans le coin inférieur gauche de notre feuille.
●Nous pouvons voir les mesures sur les axes X et Y. Prenez un moment pour lire ceci et vérifier qu'elles ne dépassent pas votre zone de traçage. Si c'est le cas, votre SVG présente un problème ; ne commencez pas à tracer, sinon vos servomoteurs seraient mécontents.
Si votre stylo se trouve en bas à gauche de votre feuille et que les mesures sont correctes, il est temps de tracer ! Appuyez sur le bouton Lecture et observez votre traceur. Vous pouvez maintenant éteindre votre ordinateur ou le transporter dans une autre pièce pendant que le Pi et le traceur travaillent. Victoire !

Retour au blog

Laisser un commentaire

Veuillez noter que les commentaires doivent être approuvés avant d'être publiés.