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 une utilisation sans tête

Cet article est une contribution de @Erez Zukerman

J'aime beaucoup utiliser mon traceur iDraw 2.0, mais je préfère le faire fonctionner lentement – donc mes tracés peuvent prendre un certain temps. J'ai utilisé la configuration Inkscape prête à l'emploi pendant un bon moment, mais je devais garder mon ordinateur principal allumé et connecté au traceur pendant qu'il fonctionnait. Ce n'était pas idéal – alors j'ai décidé de voir si je pouvais trouver une configuration « sans tête » avec un Raspberry Pi.
Cela s'est avéré bien plus simple que je ne le pensais, 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 réellement le traceur, en envoyant du GCode via le câble.
●Nous prendrons aussi un moment pour configurer le démarrage automatique de CNCjs à chaque démarrage du Pi, sans que vous ayez à vous connecter ou faire quoi que ce soit.
●Trouver comment convertir nos SVG en GCode (avec contrôle de la vitesse du stylo).
Veuillez noter que ce tutoriel suppose que vous êtes à l'aise avec l'utilisation de la ligne de commande Linux. Si vous suivez ce guide plusieurs mois ou années après sa publication, vous pourriez rencontrer toutes sortes d'erreurs en cours de route – c'est la nature du sujet. Au moment de la rédaction, le système décrit fonctionnait bien pour moi.
Commençons !

Configurer le Pi

Il est préférable de dédier un Pi uniquement à ce projet, pour qu'il soit votre « contrôleur de traceur ». Sinon, pas de souci – ça fonctionnera quand même, mais ce sera peut-être moins pratique à long terme.
Une autre bonne raison de dédier un Pi uniquement à ce projet est que vous pouvez le configurer de zéro avec des valeurs par défaut qui ont du sens. C'est exactement ce que j'ai fait : j'ai pris une carte SD de 32 Go et utilisé l'outil officiel Raspberry Pi Imager pour la flasher avec Raspberry Pi OS.
Une chose que l'outil permet de faire, et que je recommande, c'est de configurer des valeurs par défaut dès le départ. J'ai utilisé l'installateur pour configurer ce qui suit :
●Mon nom d'utilisateur et mon mot de passe
●Un nom d'hôte local pour le contrôleur de traceur (plotter.local dans mon cas)
●Ma clé SSH publique, pour pouvoir me connecter en SSH à la machine immédiatement
●Mon SSID/mot de passe WLAN, pour que le Pi se connecte à mon réseau au démarrage
J'ai tout configuré puis laissé l'Imager faire son travail. Une fois terminé, j'ai éjecté la carte microSD et l'ai insérée dans le Pi. Juste pour le premier démarrage, j'ai connecté le Pi à un clavier et un écran – mais ce n'était pas strictement nécessaire. Le nom d'hôte plotter.local que j'ai choisi a mis quelques instants à se enregistrer sur mon réseau, alors j'ai utilisé le clavier et l'écran pour récupérer l'IP actuelle (en lançant ifconfig depuis le terminal).
Je me suis connecté en SSH à la machine, et il était temps de passer à l’étape suivante : installer CNCjs

Installer CNCjs

Comme vous pouvez le deviner d’après le nom, CNCjs est basé sur Node. Nous devons donc d’abord installer Node.
●Connectez-vous en SSH sur le Pi
●Installons NVM :
○curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
●Quittez le terminal puis reconnectez-vous en ssh. Cela charge NVM.
●Installons maintenant node :
○nvm install node
●Super ! Il est temps d’installer CNCjs :
○npm install -g cncjs
●Si tout a bien fonctionné jusqu'ici, lançons CNCjs une fois. Cela créera notre fichier de configuration, ~/.cncrc :
○Depuis la ligne de commande, dans votre répertoire personnel, lancez cncjs
○Ctrl+C pour en sortir
●Vous êtes maintenant l'heureux propriétaire d'un tout nouveau ~/.cncrc, félicitations. Éditons-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.
●Relancez cncjs sur le Pi.
●Avec votre navigateur sur votre machine principale, allez à plotter.local:8000. Cela devrait ouvrir CNCjs.

Ensuite, il est temps de brancher le traceur et de voir 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).
○Appuyez sur le bouton Actualiser sous Port.
○Ouvrez le menu déroulant et choisissez le port.

●Cliquez sur Ouvrir. Si tout a fonctionné, la console Gcode devrait maintenant afficher du texte.

Déplaçons les moteurs !


●Avec le widget Axes, appuyez sur + et - sur les différents axes pour déplacer les moteurs. Vous pouvez aussi activer le « jogging au clavier » et utiliser les flèches pour déplacer le traceur. Si vous y placez un stylo et abaissez l'axe Z, c’est comme un Etch-a-Sketch coûteux.


Une remarque : la position 0 sur l'axe Y est l'inverse de ce à quoi vous pourriez vous attendre : elle va vers le bas de la zone de tracé. Nous y reviendrons plus tard.

Faire démarrer CNCjs au démarrage

Continuons, nous voulons maintenant revenir à ce point idéal à chaque redémarrage du Pi, sans que vous ayez à faire quoi que ce soit. Donc :
●De retour dans la session SSH vers le Pi, tuez CNCjs en appuyant sur Ctrl-C.
●Assurez-vous qu’il est vraiment arrêté en actualisant le navigateur (plotter.local:8000, en supposant que c’est le nom d’hôte que vous avez configuré). 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 bien démarré et fonctionne comme prévu : attendez quelques instants, puis allez sur plotter.local:8000 et vérifiez que ça charge.
●Créez un script de démarrage : pm2 startup. Cela affichera une commande à exécuter avec sudo, faites-le.
●Sauvegardez la liste des processus : pm2 save
●Redémarrez le Pi pour vérifier si ça a fonctionné : sudo reboot
●Attendez qu’il redémarre, peut-être 3 à 5 minutes, puis allez sur http://plotter.local:8000/ pour voir si vous pouvez accéder à CNCjs à nouveau. Si vous avez bien fait, il devrait simplement redémarrer.
Victoire ! Nous y sommes presque – CNCjs est maintenant entièrement configuré. Mais pour tracer quelque chose, nous devons lui fournir un fichier GCode – il ne gère pas nativement les SVG.

Créez 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.
Un grand changement ici est que nous remettons à zéro par rapport au coin inférieur gauche de votre papier, pas en haut à droite ! Ce changement peut demander un peu d’adaptation. Je vous le rappellerai plus tard.
●Sur votre machine principale, téléchargez le binaire de la version Juicy-Gcode pour votre système d’exploitation : https://github.com/domoszlai/juicy-gcode/releases
●La configuration Juicy-Gcode est enregistrée dans ce qu’ils appellent un « fichier de saveur ». C’est juste un fichier yaml. Voici un bon fichier de départ, vous pouvez le copier/coller dans flavor.yaml sur votre machine :
begin: |
  G21 ; unités en millimètres
  G17 ; sélection du plan XY
  G90 ; positionnement absolu
  F600  ; régler la vitesse à 600 mm/min -- c’est vraiment lent, vous pouvez modifier
  G00 Z0 ; stylo relevé
  G92 X0 Y0 ; considérer la position actuelle comme 0,0 -- c’est le coin INFÉRIEUR GAUCHE
end: |
  G0Z0 ; stylo relevé
  G00 X0 Y0 Z0
toolon: |
  G0Z6 ; stylo abaissé sur le papier
tooloff: |
  G0Z0 ; stylo relevé
  
Quelques points importants à noter à propos de ce fichier de configuration :
●Je fais fonctionner le traceur à 600 mm/min, ce qui est très lent. Vous voudrez peut-être accélérer cela, selon vos stylos et préférences.
●L'autre ligne notable est celle qui commence par G92. Dans cette ligne, nous disons au traceur « où que tu sois en ce moment, c’est la maison ». Donc, pour calibrer un tracé, nous attendons que vous déplaciez manuellement (et doucement) la tête du traceur vers le coin inférieur gauche du papier.
Vous voulez que la taille de votre papier soit correctement configurée dans le SVG, c’est important.
Pour lancer Juicy-Gcode, la commande ressemble à ceci :
juicy-gcode -f flavor.yaml image.svg -o image.gcode
C’est un peu long à taper à chaque fois, alors j’ai fait ce petit script pour rendre les choses un peu plus pratiques :
#!/bin/bash
# Utilisation : ./run-juicy.sh input.svg [speed]
# Si la vitesse n’est pas fournie, la valeur par défaut est 600

# Vérifie qu’au moins un argument est fourni

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

inputfile="$1"

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

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

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

# Exécutez la commande juicy-gcode

juicy-gcode -f "$flavor_file" "$inputfile" -o "$outputfile"
Vous pouvez maintenant avoir plusieurs fichiers de saveurs différents, chacun avec une vitesse d’exécution différente, et spécifier facilement la vitesse en passant le numéro correspondant au nom du fichier de saveur.
Maintenant que vous avez un fichier GCode, il est temps de le télécharger et de tracer !

Téléchargez le GCode et tracez

CNCjs nous offre deux façons d’importer un fichier GCode : nous pouvons le télécharger via le navigateur en cliquant sur « Upload G-code », ou configurer un répertoire de surveillance (de sorte que chaque fois qu’un fichier GCode y apparaît, le traceur commence à fonctionner).
Cela semble intéressant en théorie, mais n’a pas beaucoup de sens : chaque tracé nécessite de toute façon une configuration manuelle. Il faut placer la feuille, installer le stylo, etc. Donc pour moi, il est bien plus logique de télécharger manuellement le fichier via le navigateur.
Une fois cela fait, dézoomez pour voir l’aperçu. 

Cela nous donne quelques vérifications importantes de bon sens :
●On nous rappelle encore une fois (…) que le tracé commencera depuis le coin inférieur gauche de notre feuille.
●Nous pouvons voir les mesures sur les axes X et Y. Il vaut la peine de prendre un moment pour les lire et vérifier qu’elles ne dépassent pas votre zone de tracé. Si c’est le cas, il y a un problème avec votre SVG – ne commencez pas à le tracer, sinon vos servomoteurs risquent d’être très mécontents.
En supposant que votre stylo soit en bas à gauche de votre feuille et que les mesures soient cohérentes, il est temps de tracer ! Appuyez sur le bouton Lecture et regardez votre traceur. Vous pouvez maintenant éteindre votre ordinateur ou le déplacer 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.