Octoprint, impression 3D de fichiers STL en WiFi. Partie 1, Octopi et installation manuelle sur Raspbian Stretch (Raspberry Pi 3) • Domotique et objets connectés à faire soi-même

Octoprint est un serveur d’impression de fichier 3D entièrement écrit en Python, il peut fonctionner sur un PC Windows, sur macOS et bien évidemment sur Linux. Il est parfaitement adapté au Raspberry Pi. Octoprint est maintenant un projet mature. Il peut fonctionner sur tous les modèles de Raspberry Pi (y compris le tout premier modèle A).

Le Raspberry Pi Zero W semble toutefois poser des problèmes (pertes de connexion WiFi) actuellement. Octoprint est un projet Open Source et gratuit développé par Gina Häußge, alias fossel (page GitHub).

C’est quoi et à quoi ça sert Octoprint et Octopi ?

Octoprint est un serveur d’impression pour imprimante 3D. C’est un logiciel qu’on peut installer sur un PC Windows ou Linux, un MAC. Mais c’est sur un Raspberry Pi qu’Octoprint est le plus intéressant. La petite taille et la faible consommation de ce mini-PC permet de le laisser allumer durant les longues heures nécessaire à l’impression des pièces en 3D.

Octoprint est le nom du projet qui a été démarré par Gina Häußge, alias fossel sur GitHub. Vous pouvez soutenir le projet en devenant un Patron de Gina ici. Octopi est une image de la distribution Raspbian Jessie Lite sur lequel Octoprint est pré-installé. On peut la télécharger ici. Lisez ce tutoriel si vous voulez installer ultérieurement le bureau Pixel et ré-installer des logiciels sur le Raspberry Pi.

Que peut-on faire avec Octoprint ?

Octoprint permet tout d’abord d’imprimer des fichiers STL en WiFi. Fini le transfert de fichier sur une carte SD.

Importer des modèles STL et les découper directement sans passer par un logiciel tel que Cura. En fait Octoprint utilise le moteur de découpe de Cura (CuraEngine) pour découper les modèles STL. La découpe (Slice en anglais, c’est l’opération qui permet de préparer les déplacements de la tête d’impression et de générer le fichier gcode utilisable par l’imprimante. Le Slicer de Cura est directement intégré à l’interface d’Octoprint. Tous les paramètres de découpe (de votre imprimantes 3D) sont personnalisables.

  • Piloter l’imprimante depuis l’interface WEB : déplacer les axes, renvoyer les axes aux origines, allumer/éteindre les ventilateurs, pré-chauffer la buse ou le plateau…

  • Visualiser l’impression en cours à l’aide d’une Webcam ou une caméra CSI pour le Raspberry Pi.
  • Démarrer, suspendre, annuler une impression depuis l’interface WEB ou depuis une application mobile. Octoprint permet de gérer une file d’attente de fichiers à imprimer
  • Ajouter des plugins spécialisés dont voici quelques exemples :
    • Arrêt d’urgence
    • Estimation du coût d’impression
    • Gestion du magasin de filament. La quantité consommée pour chaque pièce est déduite de la bobine. Pratique pour estimer assez précisément ce qui reste sur une bobine.
    • Réglage de la planétité du plateau (Bed Leveling)
    • … plus de 50 plugins sont disponibles

Et plein d’autres choses !

Matériel nécessaire

Pour ce premier tutoriel sur Octoprint, on va partir d’une configuration très simple à base de Raspberry Pi 3 ou Raspberry Pi Zero W. On ajoutera une caméra ou une webcam ultérieurement.

1ère solution : utiliser OctoPi, Octoprint pré-installé sur l’image de Raspbian

Rien de bien compliqué ici. Il suffit de télécharger l’image de Raspbian sur lequel Octoprint est déjà pré-installé. C’est l’image OctoPi. On utilisera un logiciel de préparation de carte SD tel que Etcher disponible sur toutes les plateformes. Allez sur la page de téléchargement pour récupérer la dernière version compatible avec le Raspberry Pi A, B, A+, B+, B2, 3, Zero et Zero W

Ne décompressez pas l’archive. Lancez Etcher et sélectionnez l’image d’Octopi. Insérez la carte SD dans le lecteur ou avec un adaptateur USB. Enfin, lancez la gravure de l’image.

Une fois l’opération terminée, Rtcher éjecte automatiquement la carte SD. Retirez celle-ci du lecteur et insérez la de nouveau. Depuis de gestionnaire de fichier sous Windows ou le Finder sur macO, ouvrez la carte SD. Elle porte le nom boot. Ouvrez le fichier octopi-network.txt avec un éditeur de texte.

Attention, n’utilisez pas le WordPad de Windows ou TextEdit sur macOS. Utilisez un éditeur de texte pour développeur. Je vous conseille d’installer l’excellent Sublime Text. Vous pouvez également utiliser Notepad++, Atom ou VSCode (Visual Studio Code). WordPad ou TextEdit risquent de modifier l’encodage des fins de lignes. Il est différent d’un système à l’autre. Le fichier de configuration WiFi serait par conséquent inutilisable.

On a plusieurs options commentées à notre disposition. .

  • WPA/WPA2 secured
  • WEP secured, à proscrire absolument. Les réseaux WEP ne sont plus sécurisés depuis des années !
  • Open/unsecured, euh décidément NON.

Dé-commentez la configuration WPA/WPA2 secured puis indiquez le SSI (nom du réseau WiFi) et le mot de passe (wpa-psk)

## WPA/WPA2 secured
iface wlan0-octopi inet manual
    wpa-ssid "NOM-DU-RESEAU-WIFI"
    wpa-psk "MOT-DE-PASSE-WIFI"

Enregistrez et éjectez la carte SD. Insérez la carte SD dans le lecteur de carte SD du Raspberry Pi puis mettez ce dernier sous tension. Ici avec un Raspberry Pi Zero W. Attendez au moins 30 secondes avant de poursuivre, le temps que le système Linux soit démarré.

Se connecter en SSH à Octopi

Octopi étant basé sur la distribution Raspbian Jessie Lite, on reste en terrain connu. Par chance (c’est aussi une belle faille de sécurité), le port SSH est ouvert par défaut. Si vous n’avez pas connecté d’écran au Raspberry Pi Zero, vous pouvez utiliser Angry IP Scanner (gratuit) pour trouver l’adresse IP d’Octopi sur votre réseau. POur en savoir plus sur SSH, lisez cet article.

Mais ce n’est pas nécessaire. On peut s’y connecter avec le nom de domaine. Par défaut, c’est octopi, ce qui donne ssh pi@octopi.local. Au passage, on récupère l’adresse IP du Raspberry Pi Zero W, ici 192.168.1.35.

ssh pi@octopi.local
The authenticity of host 'octopi.local (192.168.1.35)' can't be established.
ECDSA key fingerprint is 1e:e6:f7:2d:a6:14:fd:60:b1:08:b9:36:25:e4:83:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'octopi.local' (ECDSA) to the list of known hosts.
pi@octopi.local's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)

------------------------------------------------------------------------------
Access OctoPrint from a web browser on your network by navigating to any of:

    http://octopi.local
    http://192.168.1.35

https is also available, with a self-signed certificate.
------------------------------------------------------------------------------
This image comes without a desktop environment installed because it's not 
required for running OctoPrint. If you want a desktop environment you can 
install it via

    sudo /home/pi/scripts/install-desktop
------------------------------------------------------------------------------
OctoPrint version : 1.3.4
OctoPi version    : 0.14.0
------------------------------------------------------------------------------

2nd solution : installer Octoprint sur Raspbian Stretch sur un Raspberry Pi 3

OctoPrint est suffisamment léger pour fonctionner en parallèle d’autres logiciels sur le Raspberry Pi 3. Si vous découvrez le Raspberry Pi, commencez par ce tutoriel pour installer et configurer Raspbian (WiFi, clavier, SSH…). Comme j’utilise toujours le même Raspberry Pi 3 pour écrire mes tutoriels, je vous propose de passer un peu plus de temps sur l’installation manuelle depuis les sources.

Avant d’installer OctoPrint, vous pouvez commencer par mettre Raspbian à jour

sudo apt-get -y update

OctoPrint étant écrit en Python, on va vérifier et installer les librairies nécessaires

sudo apt-get -y install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential

Si vous êtes connecté en root, changez d’utilisateur. Placez vous à la racine du compte pi par exemple (c’est plus facile pour la maintenance). Téléchargez ensuite le dépôt du projet depuis GitHub puis ouvrez le dossier du projet

cd
git clone --depth 1 https://github.com/foosel/OctoPrint.git
cd Octoprint

Octoprint a été développé en Python2, si vous avez les deux versions de Python (2.7 et 3.5) sur votre distribution, on va devoir spécifier la version de Python qu’il faut utiliser. Octoprint s’installe dans un environnement virtuel Python. Pour faire (très très) simple, c’est un répertoire dans lequel on installe tout ce qu’il faut pour faire fonctionner un script Python.

Pour savoir si Python3 est installé sur votre distribution, exécutez cette commande.

python3 --version
Python 3.4.2

Pour connaître le chemin du python2.7, on peut utiliser la commande Linux whereis. Vous pouvez également vous rendre dans le dossier /usr/bin/. Donc ici Python 2.7 se trouve dans le dossier /usr/bin/python2.7

whereis python2
python2: /usr/bin/python2 /usr/bin/python2.7 /usr/bin/python2.7-config /usr/lib/python2.6 /usr/lib/python2.7 /etc/python2.7 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz

Maintenant qu’on connait l’emplacement de Python2.7, on va créer un environnement virtuel Python dans lequel on installera Octoprint. On indique le chemin de Python2 avec le paramètre –python.

virtualenv --python=/usr/bin/python2.7 venv

On installe la commande PIP qui permet à Python d’installer des dépendances dans cet environnement virtuel

./venv/bin/pip install pip --upgrade

Enfin, on lance l’installation d’Octoprint. L’installation est assez longue, comptez au moins 15 minutes.

./venv/bin/python setup.py install

Par sécurité, on va autoriser l’utilisateur Pi à utiliser le port série. Exécutez ces deux commandes

sudo usermod -a -G tty pi
sudo usermod -a -G dialout pi

L’installation terminée, on lance Octoprint manuellement avec la commande ./venv/bin/octoprint

Installer manuellement le Slicer CuraEngine

CuraEngine est pré-installé sur l’image Octopi, mais il faut le faire nous même lorsqu’on installe manuellement Octoprint sur Raspbian. Octoprint n’est pas compatible avec la nouvelle version de Cura. Actuellement la compatibilité s’arrête à la version 15.04.

Les étapes à suivre pour installer CuraEngine sont disponibles ici, ce tutoriel explique comment compiler CuraEngine à partir du code source du projet. Il existe une version pré-compilée (la 14.12) qui est disponible sur le site du projet. Elle convient parfaitement. Placez vous à la racine de votre compte puis récupérez CuraEngine avec la commande Linux wget. A la fin du téléchargement, on rend le fichier exécutable.

cd
wget http://octoprint.org/files/octopi/cura_engine_14.12/cura_engine
chmod +x cura_engine

Pour s’assurer que le Slicer fonctionne, exécutez la commande suivante pour afficher l’aide

./cura_engine --help
Cura_SteamEngine version 14.12.1
Copyright (C) 2014 David Braam

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see .
Default config 'default.cfg' not used
usage: CuraEngine [-h] [-v] [-m 3x3matrix] [-c ] [-s =] -o  

Première connexion à l’interface Web d’Octoprint

Octoprint est accessible depuis n’importe quel ordinateur sur votre réseau local (on verra dans un prochain tutoriel comment utiliser Octorpint depuis un smartphone). C’est son principal intérêt. Pour accéder à l’interface WEB d’Octoprint, on dispose de plusieurs solutions :

  • Avec son adresse IP, http://ADRESSE_IP:5000. Pour connaître l’adresse IP, exécutez la commande ifconfig dans un autre Terminal.
  • Avec le nom de domaine du Raspberry Pi. Avec l’image OctoPi, l’adresse par défaut est http://octopi.local:5000. Sur la distribution Raspbian, ouvrez l’adresse http://raspberrypi.local:5000 

A la première connexion, on arrive sur un assistant de configuration

Il est fortement conseillé de définir un utilisateur surtout si vous avez l’intention de rendre accessible votre imprimante 3D depuis internet. Cliquez sur Keep Access Control Enable pour activer la sécurité entrante.

Octoprint vérifie à intervalle régulier que la connexion internet est disponible. Vous pouvez indiquer un serveur DNS ou laisser celui de google par défaut.

Si vous avez déjà CuraEngine d’installé (paragraphe précédent), indiquez le chemin vers celui-ci. Sur Octopi, il n’y a que le profile de découpe de votre imprimante 3D (slicing profile) à télécharger.

La découpe nécessite de disposer d’un profile d’imprimante. Vous pouvez récupérer celui de votre imprimante directement sur Cura. Attention toutefois, Octoprint prend en charge les profiles jusqu’à la version 15.04 de Cura. Si vous avez la nouvelle version d’installée (2.x ou 3.x), il faudra re-créer un profile pour votre imprimante en téléchargeant une ancienne version de Cura ici. Ici j’ai récupéré le profile de l’Anet A8. 

Voilà, c’est prêt

Si vous avez loupé une étape ou que vous ne disposiez pas de tous les éléments, pas de panique, vous pourrez terminer la configuration en cliquant sur la petite clé plate dans le coin supérieur droit de l’écran.

C’est terminé pour ce premier tutoriel. Dans les prochains articles, nous découvrirons comment importer des fichiers STL, les découper (Slice) avec le moteur de découpe Cura Engine, les imprimer et comment piloter l’imprimante 3D depuis Octoprint.

Tous les tutoriels sur Octoprint

Avez-vous aimé cet article ?