OctoPrint : Imprimez et surveillez votre imprimante 3D !
Je possède depuis septembre 2016 une imprimante 3D et le plus ennuyant est de devoir préparer l’imprimante 3D pour lancer l’impression le lendemain matin. Pour pallier à cette tâche fastidieuse, il existe des tas d’outils permettant de prendre le contrôle de votre imprimante 3D à distance et de la surveiller. Et aujourd’hui je vais vous parler de la solution open-source : OctoPrint.
Qu’est-ce qu’OctoPrint ?
OctoPrint est une interface Web entièrement conçu en Python permettant de prendre le contrôle de votre imprimante pour la régler, la faire exécuter une tâche, stocker vos fichiers GCODE et les envoyer à l’imprimante. Il permet aussi de superviser l’imprimante 3D, récupérer les informations en temps réel comme : la température du lit, de l’extruder ou encore, voir l’état de l’impression avec un visuel en direct graphiquement ou depuis une Webcam. De plus le programme est entièrement modulable car il possible d’installer des plugins afin d’ajouter des alertes en temps réel ou encore des fonctionnalités de supervision comme un capteur de fin de bobine de filament.
Mais les fonctionnalités que ce logiciel propose ne s’arrêtent pas ici car il est possible de découper « slice » vos modèles 3D directement depuis l’interface Web et les envoyer en impression !
Enfin, le programme est suffisamment léger pour fonctionner sur une RaspberryPi (tout modèles confondus) ! Mais il est possible de l’installer sur tout type de machines que ce soit sous Linux, Windows ou Mac OS.
Installation
Comme d’habitude, je vais vous guider sur l’installation sous Linux. Si vous souhaitez installer sur un autre système, je vous invite à cliquer sur ce lien pour l’installation Windows et ici pour l’installation sur Mac OS. Si vous ne souhaitez pas vous embêter sur l’installation d’OctoPrint sur votre Raspberry, sachez qu’il existe une distribution toute faite disponible juste ici.
Pré-requis
Vous aurez besoin pour l’installation d’OctoPrint :
- Une machine (ordinateur, serveur, RPi/clone) sous Linux (je ferais l’installation sous Debian)
- Une imprimante 3D
- Un cordon permettant de raccorder l’imprimante 3D à la machine
- (Optionnel) Une WebCam ou une PiCamera ou pour ceux qui ont plus de moyens : une caméra IP :p
Installation de base
Dans un premier temps, on va commencer par créer un nouvel utilisateur pour OctoPrint et l’ajouter au groupe tty et dialout :
sudo adduser octoprint sudo usermod -a -G tty pi sudo usermod -a -G dialout pi
On ajoute les droits sudo à notre utilisateur en ajoutant la ligne suivante dans le fichier /etc/sudoers
:
octoprint ALL=(ALL) NOPASSWD: ALL
Puis, on se connecte sur l’utilisateur puis on envoi cette liste de commande qui va installer les dépendances, cloner le dépôt et installer toutes les librairies Python pour OctoPrint :
sudo apt install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential git clone https://github.com/foosel/OctoPrint.git cd OctoPrint virtualenv venv ./venv/bin/pip install pip --upgrade ./venv/bin/python setup.py install mkdir ~/.octoprint
Une fois terminé, vous pouvez tapez la commande suivante qui va lancer le serveur Web afin de tester l’installation :
./venv/bin/octoprint
Mettre à jour OctoPrint
Pour mettre à jour OctoPrint, il vous suffit d’entrer les commandes suivantes dans le dossier d’OctoPrint :
git pull ./venv/bin/python setup.py clean ./venv/bin/python setup.py install
Mise en place du daemon
Dans un premier temps, on va vérifier que le chemin vers les fichiers binaires d’OctoPrint sont corrects dans les fichiers scripts/octoprint.init
et scripts/octoprint.default
. Le chemin doit ressembler à celui-ci (sauf si vous l’avez installé autre part sur votre système) :
DAEMON=/home/octoprint/OctoPrint/venv/bin/octoprint
Ensuite on copie le fichier octoprint.init
vers /etc/init.d
puis octoprint.default
vers /etc/defaults
puis on dit au système d’exécuter le script au démarrage :
sudo cp scripts/octoprint.init /etc/init.d/octoprint sudo chmod +x /etc/init.d/octoprint sudo cp scripts/octoprint.default /etc/default/octoprint sudo update-rc.d octoprint defaults
Si vous ne souhaitez pas utiliser la WebCam, l’installation est terminée ! Il ne vous reste plus qu’à passer à la partie Utilisation de cet article
Mise en place de la caméra
La dernière étape de l’installation consiste à configurer une caméra pour l’utiliser avec OctoPrint. La procédure suivante n’est valable uniquement pour ceux souhaitant utiliser une Webcam ou la PiCamera. Ceux souhaitant utiliser une caméra IP ont juste besoin d’installer les paquets imagemagick libav-tools
et éditer le fichier config.yaml
comme expliqué un peu plus bas.
Nous allons installer d’autres dépendances système, cloner un autre dépôt Git puis compiler un bout de code :
sudo apt install subversion libjpeg8-dev imagemagick libav-tools cmake git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental export LD_LIBRARY_PATH=. make
Nous allons créer les deux petits scripts dont le premier qui se nommera webcam
dans le dossier scripts
:
#!/bin/bash # Start / stop streamer daemon case "$1" in start) sudo /home/themimitoof/OctoPrint/scripts/webcamDaemon >/dev/null 2>&1 & echo "$0: started" ;; stop) sudo pkill -x webcamDaemon sudo pkill -x mjpg_streamer echo "$0: stopped" ;; *) echo "Usage: $0 {start|stop}" >&2 ;; esac
Toujours dans le même dossier, on va créer et remplir le fichier webcamDaemon
avec le contenu suivant :
#!/bin/bash MJPGSTREAMER_HOME=/home/octoprint/mjpg-streamer/mjpg-streamer-experimental MJPGSTREAMER_INPUT_USB="input_uvc.so" MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so" # init configuration camera="auto" camera_usb_options="-r 640x480 -f 10" camera_raspi_options="-fps 10" if [ -e "/boot/octopi.txt" ]; then source "/boot/octopi.txt" fi # runs MJPG Streamer, using the provided input plugin + configuration function runMjpgStreamer { input=$1 pushd $MJPGSTREAMER_HOME echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" popd } # starts up the RasPiCam function startRaspi { logger "Starting Raspberry Pi camera" runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options" } # starts up the USB webcam function startUsb { logger "Starting USB webcam" runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options" } # we need this to prevent the later calls to vcgencmd from blocking # I have no idea why, but that's how it is... vcgencmd version # echo configuration echo camera: $camera echo usb options: $camera_usb_options echo raspi options: $camera_raspi_options # keep mjpg streamer running if some camera is attached while true; do if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then startUsb elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then startRaspi fi sleep 120 done
Par défaut, le port utilisé par MJPGStreamer est le numéro 8080. Si vous le souhaitez, vous pouvez le changer en éditant les deux lignes suivantes en ajoutant le petit argument -p nport
:
# Remplacer ses deux lignes echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" # Par echo Running ./mjpg_streamer -o "output_http.so -w ./www -p 5066" -i "$input" LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www -p 5066" -i "$input"
On rend les deux scripts exécutables donc un petit chmod +x
s’impose :
chmod +x scripts/webcam chmod +x scripts/webcamDaemon
Enfin, il ne nous reste plus qu’à éditer le fichier de configuration d’OctoPrint (~/.octodroid/config.yaml) et d’y ajouter le contenu suivant :
webcam: stream: http://<adresse_ip ou localhost>:<port par défaut (8080) ou port que vous avez choisi>/?action=stream // Si vous utilisez une caméra IP, mettez ici le lien vers le flux MJPEG snapshot: http://<adresse_ip ou localhost>:<port par défaut (8080) ou port que vous avez choisi>/?action=snapshot ffmpeg: /usr/bin/avconv system: actions: - action: streamon command: /home/octoprint/OctoPrint/scripts/webcam start confirm: false name: Start video stream - action: streamoff command: /home/octoprint/OctoPrint/scripts/webcam stop confirm: false name: Stop video stream
Puis on démarre (ou on redémarre) le serveur OctoPrint et le tour est joué!
sudo service octoprint start
Configuration et utilisation
Après 30 minutes/1 heure d’installation, nous voilà enfin prêt à découvrir l’interface d’OctoPrint ! Lancez votre navigateur web et tapez l’adresse : http://<ip_octoprint>:5000
. On nous demande dans un premier temps si l’on souhaite créer le premier utilisateur qui possédera tous les droits. Mais sachez qu’il est possible de refuser mais niveau sécurité… bah il n’y a plus rien
L’interface est relativement simple, il est possible de préchauffer le lit chauffant, l’extracteur, voir les courbes de températures, changer la position des axes et les faire retourner à leurs points par défaut, examiner le code GCode et voir l’état en direct, ajouter/supprimer des fichiers GCode/STL et envoyer l’impression très rapidement et facilement.
Dans les paramètres de configuration, nous allons modifier quelques paramètres importants. Le premier permet de dire au logiciel sur quelle interface série et le baudrate faut-il utiliser pour se connecter à l’imprimante. La majeure partie des imprimantes utilisent le baudrate 115200.
Ensuite vous devrez modifier le profil par défaut ou créer un nouveau profil pour votre imprimante avec toutes les informations techniques comme la taille d’impression, la vitesse de chaque axe, la forme de votre imprimante, etc…
Enfin, vous pouvez modifier les températures pour chaque type de matériaux et par marque de filament (par exemple dans mon cas, j’ai créé un profil spécialement pour mon PLA de chez Prima 3D).
Vous pourrez ensuite importer vos fichiers GCode et envoyer vos impressions
Pour finir, j’ai cherché l’application ultime pour piloter l’imprimante depuis mon smartphone malheureusement, toutes les applications que j’ai pu tester sont plus ou moins bugué et ne permettent pas d’imprimer ou encore de voir l’état de l’impression. Néanmoins, je peux faire le malin et allumer/éteindre l’imprimante à distance depuis l’application Hue
Conclusion
Malgré le fait que je n’ai trouvé aucune application qui fait le job, allumer/éteindre mon imprimante 3D et envoyer l’impression à distance sans être physiquement présent est très pratique. Cela m’évite de devoir copier les fichiers GCode sur la carte SD et d’allumer l’imprimante le matin quand le réveil est plutôt difficile. Je verrais prochainement pour intégrer l’API Philips Hue pour piloter la prise connecté de l’imprimante directement depuis l’interface Web par le biais d’un plugin ou de commandes systèmes comme nous avons pu faire pour les scripts de la Webcam. Une solution que je propose à tous les possesseurs d’imprimantes 3D
Sources : octoprint.org
L’article OctoPrint : Imprimez et surveillez votre imprimante 3D ! est apparu en premier sur Themimitoof.fr.