La RepRap en ligne de commande

La RepRap peut être pilotée en ligne de commande grâce à un script écrit en Python présent dans la distribution de Skeinforge. Ce script permet d’imprimer un ou plusieurs fichiers G-code qu’on lui transmet en paramètre. Je l’utilise avec un Raspberry Pi sur lequel une distribution Debian est installée.

pySerial

pySerial (Python Serial Port Extension) doit être installé. Pour Debian/Ubuntu : apt-get install python-serial. Pour d’autres systèmes télécharger l’archive pyserial-2.6.tar.gz où les instructions d’installation figurent.

send.py

Le script servant à l’impression est send.py, dans l’arborescence de Skeinforge :

   skeinforge_50/fabmetheus_utilities/miscellaneous/fabricate/send.py

Groupe dialout

Sous Debian, l’utilisateur du script doit appartenir au groupe dialout, on aura une erreur « access denied » sinon. Pour connaître les groupes auxquels appartient un utilisateur faire la commande :

   groups nomUtilisateur

Si dialout n’apparaît pas dans les groupes affichés, l’ajouter :

   sudo usermod -aG dialout nomUtilisateur

Réglages

Avant de pouvoir utiliser send.py il faut modifier deux lignes d’une bibliothèque importée, RepRapArduinoSerialSender.py, également présente dans le dossier fabricate, où les ligne 96 et 97 :

   block=block.replace(' ','')
   block=block.replace("\t",'')

doivent être commentées pour devenir :

   # block=block.replace(' ','')
   # block=block.replace("\t",'')

Commande directe

On lance l’impression après un cd dans le dossier fabricate, la fin de la commande indiquant le fichier à imprimer :

   python send.py fichieràImprimer.gcode

Paramètres de send.py

-n ou --noreset, pas de reset du microcontrôleur commandant la RepRap avant impression. Mieux vaut commencer toute impression avec un reset et ne pas utiliser ce paramètre.

-v ou --verbose, affiche les communications RepRap/console.

-p ou --port, précise le port où est reliée l’imprimante. Sous Linux ce port est par défaut /dev/ttyUSB0, sous Windows COM3, et il n’y a normalement pas à le préciser. Avec Mac OS X, par exemple :

   python send.py -v -p /dev/tty.usbserial-A700eJah fichieràImprimer.gcode

On peut modifier les ports par défaut dans les lignes 78 à 83 de send.py, sous OS X ou avec une configuration particulière, pour ne pas avoir à indiquer de port en ligne de commande.

Commande par script

On peut utiliser un script pour faciliter le lancement d’impression en ligne de commande. Le script print.sh ci-dessous une fois paramétré permet de lancer l’impression en tapant :

   ./print.sh fichieràImprimer

On n'indique pas l’extension .gcode du fichier à imprimer. Si un alias figure dans le fichier de configuration du shell, par exemple dans .bash_aliases pour Bash :

   alias p='/chemin/vers/print.sh'

il suffit d’indiquer :

   p fichieràImprimer

Pour paramétrer print.sh, indiquer le nom du port USB, le chemin vers send.py et le nom du dossier contenant les fichiers à imprimer, dans les trois variables indiquées dans le script.

print.sh doit être rendu exécutable en faisant :

   chmod +x print.sh

À télécharger

print.sh — TXT, 1 Ko.

Sources

Des précisions sur send.py dans le fichier send.html du dossier fabricate. J’ai trouvé comment pallier les erreurs d’impression (ça ne marchait pas du tout au début…!) dans ce fil de discussion du forum RepRap. Les indications données ici sont un peu différentes et plus simples.

• Publié le 09/12/2011 - modifié le 11/02/2013