Suite à l'acquisition d'une nouvelle imprimante 3D (Dagoma Discovery 200) il y avait un gros problème spécial "feignant", il fallait toujours passer par une carte SD pour lancer l'impression et impossible de savoir ou en était l'impression (il n'y a pas d'écran sur l'imprimante) ou alors lancer l'impression depuis un pc qui devait toujours être allumé pendant l'impression...pas terrible.
La solution s'appelle Octoprint! un petit logiciel qui tourne sur un micro pc, le Raspberry Pi3 (50€) en wifi ou ethernet, et gère les impressions depuis n'importe oû (téléphone, pc à l'autre bout du monde!), génial pour lancer une impression le matin et arriver le soir avec l'impression finie :-)
Voici ce que ça donne comme écran de contrôle:
Les caractéristiques du Rapsberry PI 3
Processeur ARMv7 Broadcom BCM2837 – 4 Cœurs – 64 bits
Fréquence d’horloge de 1.2Ghz (+33% par rapport au Pi 2)
Port Ethernet 10/100
1GB RAM (toujours)
WiFi intégré à la carte 802.11 b/g/n (BCM43438)
Bluetooth Low Energy intégré à la carte (BCM43438)
HDMI 1.3a
Vidéo composite
Pour installer Octoprint sur un RAPSBERRY PI 3 il faut:
-Carte SD 8 Giga classe 10 (pour qu'il ne soit pas trop lent)
-Alim 2,5 Ampere 5v mcro usb
-Câble usb pour relier à l'imprimante 3D
Ensuite télé-charger l'OS (linux) pré- installé avec Octoprint dessus: OctoPi Downloads et prendre la version Nightly Builds (la version Stable Builds ne fonctionne pas avec le Raspberry PI 3).
Une fois dézippé, installer "Win32 disk imager" (http://sourceforge.net/projects/win32diskimager/) pour recopier l'OS sur la carte SD :
-Mettre la sd dans un lecteur sur le pc, lancer "Win32 disk imager", choisir le fichier "2016-03-18-octopi-jessie-lite-0.13.0.img" choisir la lettre de la carte mémoire puis cliquer sur "write"
-Une fois l'OS copier sur la SD, éditer le fichier (via notepad++ si vous n'avez rien pour éditer le fichier) "octopi-network.txt" et renseigner comme suit en décommentant les lignes suivantes (on retire le "#") pour le wifi:
## WPA/WPA2 secured
iface wlan0 inet manual
wpa-ssid "MonSuperWifi"
wpa-psk "MonSuperMotDePasseWifi"
-Ensuite éjecter la carte SD puis l'insérer dans le raspberry PI3, on doit voir d'abord une lumière rouge constante puis une verte à coté, qui s'allume par intermittence
-Pour connaître l'adresse IP du raspberry PI 3 sous windows, on peut aller dans un explorateur de fichier et cliquer sur Reseau, un périphérique au nom de "Octoprint ...."doit apparaître, faire un clic droit propriété pour connaitre l'IP
-Une fois l'IP connue, on peut modifier le mot de passe par defaut de l'OS (a ne pas confondre avec l'utilisateur / mot de passe d'octoprint), pour cela on va ce connecter dessus avec un client ssh (putty : http://www.putty.org/):
on renseigne l'ip du raspberry et le port (22 par défaut) puis le login et mot de passe (pi / raspberry).
Une invite de commande commençant par "pi@octopi ~$ doit apparaître. Pour changer le mot de passe par défaut taper "passwd" en rentrant l'ancien mot de passe et deux fois le nouveau.
On peut également spécifier àrasperry d'utiliser toute la place nécessaire,; pour celà utliser la commande : sudo raspi-config, un menu apparaît, sélectionner la 1ère option "Expand Filesystem" (via la touche Tab) puis "Finish"
-Aprés un dernier redémarrage aller sur un pc connecté au wifi et tapper l'adresse ip du rapsberry pi dans un navigateur web, il vous demandera la 1ère fois si l'on veut créer un utilisateur pour Octoprint dire oui, et renseigner le login / mot de passe.
-Brancher l'imprimante 3D sur le raspberry pi puis via le menu system / Reboot, redémarrer le raspberry pi
-Se connecter à l'interface via le navigateur web en renseignant le login / mot de passe puis cliquer sur le menu "Setting" et renseigner comme suit:
Serial Connection / Sérial Port : choisir dans la liste le port usb (genre /dev/ttyUSB0 ou /dev/ttyACM0)
Serial Connection / Baudrate : 250000
Printer Profiles / cliquer sur Add Profil pour une Dagoma mettre : Name: Dagoma Discovery 200
model: Dicovery200
Volume x: 200 mm
Volumey: 200 mm
Volume z: 200 mm
pour une Ultimaker 2 : Name : Ultimaker 2
model: Ultimaker 2
Volume x: 230 mm
Volumey: 225 mm
Volume z: 205 mm
Température : creer plusieurs profils de température exemple: PLA200 200°c(Extruder) 0(Bed) pour une Dagoma et 60(Bed) pour un Ultimaker.
Cliquer ensuite sur "Save"
-Une fois sur l'écran d'accueil cliquer sur "Connect" puis télécharger un fichier gcode (fichier machine déjà traité par un logiciel type Cura) en cliquant sur "upload"
-Chauffer la tête d'impression et le lit en cliquant sur la flèche "Set" et choisir dans le menu déroulant la température voulue
-Cliquer sur imprimer
Voilà une solution pour imprimer à distance :-)
Pour connecter une deuxième imprimantes, on peut lancer une deuxieme instance d'octoprint, pour celà il faut lancer un client ssh, se connecter avec l'ip du rapsberry pi et le login pi et mot de passe. puis lancer la commande suivante :
~/oprint/bin/python ~/OctoPrint/run --daemon start --port 5001 --pid /tmp/octoprint1 --basedir ~/.octoprint1
on peut alors atteindre la deuxième imprimante en utilisant un navigateur internet : http://IP_RASPBERRY:5001 (remplacer "
IP_RASPBERRY" par votre IP réel). Celà fonctionne temps que le raspberry pi n'est pas rebooté, à voir maintenant pour
automatiser cette tache.
Pour allumer ou éteindre les imprimantes via deux relais, on peut utiliser les ports GPIO (les broches entrée / sortie présentes sur la raspberry pî), pour celà on a besoin :
-Installer la librairie WiringPi qui va gérer les GPIO, depuis une connexion ssh avec le login pi (root).
Si ce n'est pas encore fait, on va utiliser un gestionnaire de gestion de version (GIT) avant d'installer la librairie:
sudo apt-get install git-core (il faut que l'OS Debian soit a jour sinon faire un sudo apt-get update puis
sudo apt-get upgrade)
Puis installation de la librairie WiringPi elle même:
git clone git://git.drogon.net/wiringPi
Si le clonage a déja été fait:
cd wiringPi git pull origin
puis refaire un cd pour resortir de wiringPi
Pour mettre à jour on compile le script:
cd wiringPi
./build
cd
La librairie est installée à ce niveau, maintenant on va essayer de faire basculer une sortir GPIO. On va regardé l'état de
tout les GPIO présents sur le raspeberry pi:
gpio readall
Un tableau représentant tous les GPIO doit apparaitre, on peut voir (colonne Mode)par défaut que les GPIO sont en IN
(en entrée), nous cherchons à les utiliser en sortie (OUT).
Par exemple si l'on veut basculer la GPIO 4 en sortie on regardera dans le tableau le numéro wPi (4) et l'on lancera
l'instruction suivante:
gpio mode 4 out
En refaisant gpio readall on s'aperçoit que le GPIO 4 est maintenant en OUT.
Le probléme c'est qu'a chaque redémmarrage il faudrait refaire ces manip (pas pratique) on va donc automatiser la GPIO en sortie en editent le fichier /etc/rc.local, etant donné que j'ai deux imprimantes, je vais utiliser deux port GPIO (le 4 et le 3 et donc via le tableau gpio le numéro wPi 4 et 3) :
sudo nano /etc/rc.local
On rajout les lignes avant le "exit 0" :
/usr/local/bin/gpio -g mode 4 out
/usr/local/bin/gpio -g mode 5 out
Faire ensuite Ctrl X pour quitter puis Y (en majuscule) pour sauver et enfin la touche Entrer
Celà ne fonctionne pas chez moi en automatique, j'ai donc fait des menus dans octoprint qui feront ces taches lorsque
l'on cliquera dessus (voir plus bas)
Pour tester le port GPIO on peut lancer la commande suivante:
Port GPIO4 a 1 : gpio write 4 1
Port GPIO4 a 0 : gpio write 4 0
En refaisant un gpio readall on voit que l'état des GPIO change.
On voit bien que la colonne V du gpio 4 est passée à 1, le problème c'est que physiquement le GPIO 4 ne passe pas à 1,
j'ai rajouté dans la commande un -g (mais on ne voit plus dans le tableau...)
gpio -g write 4 1
ou
gpio -g write 4 0
On peut maintenant créer des boutons dans Octoprint pour allumer et éteindre les deux imprimantes(je mets le gpio à 0
pour activer mes relais qui fonctionnent en inverse) ainsi que les port GPIO en sortie et lance une 2ème instance
d'Octoprint,pour ça on va éditer le fichier config.yml:
sudo nano ~/.octoprint/config.yaml
Puis rajouter dans la section "system:
action:"
- action: Printer on
command: gpio -g write 5 0
name: Ultimaker On
- action: Printer off
command: gpio -g write 5 1
name: Ultimaker off
- action: Printer2 On
command: gpio -g write 4 0
name: Dagoma On
- action: Printer2 off
command: gpio -g write 4 1
name: Dagoma off
- action: Printer3 on
command: gpio -g mode 5 out
name: gpio5 out
- action: Printer3 off
command: gpio -g mode 4 out
name: gpio4 out
- action: 2eme Octoprint
command: ~/oprint/bin/python ~/OctoPrint/run --daemon start --port 5001 --pid
/tmp/octoprint1 --basedir ~/.octoprint1
name: 2eme Octoprint
Faire ensuite Ctrl X pour quitter puis Y (en majuscule) pour sauver et enfin la touche Entrée
Après redémarrage du raspberry PI on obtient dans le menu Sytem les actions rajoutées
On va vérifier physiquement que les ports GPIO 4 et 5 basculent bien à 1 ou 0:
Voilà une fois les relais intégrés dans une multiprise (j'ai simplement coupé l'alimentation 220v que j'ai mise en série avec les relais)
Une dernière chose, Octoprint ne supporte, pour l'instan,t pas le UltiGCode (le fichier machine généré par Cura) il faut donc modifier les réglages de Cura (le standard pas le Cura by Dagoma mais celui- ci reprend les paramétrage xml du cura standard...), aller dans cura: Fichier / Réglages de la Machine puis au niveau "Format Gcode" changer "UltiGCode" a RepRap (Marlin/Sprinter).
Si l'on veut accéder à Octoprint depuis internet (attention c'est sensible, vous allez ouvrir une porte vers l'exterieur), il faut faire un réglage sur votre routeur internet, lorsque vous allez sur le paramétrage de votre box internet, il doit y avoir une section de redirection de port. Votre Octoprint qui est connecté à un réseau privé, n'est visible que sur votre réseau en travaillant sur le port 80 ou 5001; si l'on a une 2ème instance, il va falloir choisir un numéro de port non utilisé (par exemple le 8080 et le 8081) et dire au routeur dés que tu as une requette sur ces ports là, tu les rediriges sur l'IP du Raspberry avec le port 80 ou 5001.
A suivre, connecter plusieurs imprimantes sur Octorint (pour l'instant c'est une a la fois) en lancant plusieurs instances (automatisme de la tache a faire)et rajouter deux relais pour pouvoir allumer / eteindre a distance les imprimantes.
edit 26/04/2016: Pour faire la même chose mais avec un OrangePI (Mini ordinateur compatible RaspberryPI a 12€...) voir le site suivant:
Pour mettre en place une solution à moindre coup pour piloter mon imprimante 3D DAGOMA Discovery 200, je me suis procuré une Orange PI One. Coût de la carte 12,50 € port compris. Pour faciliter la mise en place, je pensais mettre la solution (image) toute prête d'OctoPrint pour Raspberry directement su l'Orange PI.
http://fabrogg.unblog.fr
Retrouvez tous mes blog sur Domochris.fr :
Domo Geek R2D2 BB8 Voyage et tour du monde Il était une fois...(petites histoires)
http://domochris.nexgate.ch