Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Domotique, objets connectés et objet 3D; DomoChris
4 avril 2016

Octoprint ou comment imprimer en wifi sur une imprimante 3D via un Raspberry 3(ou plus ancien)

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:

1

2

 

Les caractéristiques du Rapsberry PI 3

rasp3



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"

ultimaker

-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"

ultimaker2

-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

hotend.PNG.59ebd7acce920e9b07eae68763e42

-Cliquer sur imprimer

print.PNG.f73ff586586f84c93dd031a8f61d20

 

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

rasp


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

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.

gpio rasp

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

rc



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.
gpio rasp
 
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

 

confi

 

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 

 

menu


On va vérifier physiquement que les ports GPIO 4 et 5 basculent bien à 1 ou 0:

gpio 2 rasp

 

CameraZOOM-20160405161135788Voilà 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)

CameraZOOM-20160406104031025

CameraZOOM-20160406105042165

 

 

 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).

Cura

 

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:

Installer OctoPrint sur une Orange PI One pour piloter son imprimante 3D

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 :

Domochris

Domo Geek R2D2 BB8 Voyage et tour du monde Il était une fois...(petites histoires)

http://domochris.nexgate.ch

 


 

Publicité
Publicité
Commentaires
C
Merci Lademan :-)<br /> <br /> J'essairais cette astuce.
Répondre
L
Hello,<br /> <br /> <br /> <br /> Super tuto, mis en oeuvre chez moi.<br /> <br /> <br /> <br /> Pour régler le pb du mode des GPIO au redémarrage du raspi, voici la soluce :<br /> <br /> <br /> <br /> #positionner l'état du GPIO<br /> <br /> /usr/bin/gpio write 7 0<br /> <br /> #le positionner en mode sortie<br /> <br /> /usr/bin/gpio mode 7 out<br /> <br /> <br /> <br /> L'important étant à mon avis le chemin absolu de l'utilitaire GPIO...<br /> <br /> <br /> <br /> lademan
Répondre
G
Intéressant, que donne la dagoma pour l'impression?
Répondre
Domotique, objets connectés et objet 3D; DomoChris
Publicité
Archives
Publicité