Aller au contenu

Filament ABS

Baroudeur

Gérer un relai sous Octoprint

Recommended Posts

Bonjour

Je voulais mettre un relai utilisable sous Octoprint avec ma DiscoEasy mais sans brancher des tonnes de fils, sans avoir à souder des transistors ou des résistances et sans trop bidouiller le code. Je suis tout nouveau dans l'impression 3D et je n'y connais pas grand chose, mais j'ai fouillé un peu partout et j'ai enfin trouvé une solution très simple pour gérer un relai.

Bon, je ne vous parle pas d'Octoprint qui est à mon avis un truc absolument génial pour surveiller et modifier des paramètres d'impression à distance. Pleins de tutos expliquent comment l'installer sur un Raspberry.

Des relais, il y en a des tonnes ! Pour faire un choix, ce n'est pas facile. Celui pour lequel j'ai opté est un relai 4 voies (https://www.amazon.fr/gp/product/B073367N1Z/ref=oh_aui_detailpage_o05_s00) qui a la particularité de venir s'enficher directement sur le Raspberry :

relai.PNG.9a74f26ac76bbc97c288bfcca0bef9d4.PNG

Ce module permet donc de s'affranchir de toute la partie câblage entre le Raspberry et le module relai, ce qui rentre dans mes objectifs de départ.

Maintenant il va falloir le commander et savoir à quels GPIO sont affectés les 4 relais. Le problème quand vous recevez l'article, c'est qu'il arrive nu, aucune doc. Le vendeur, après contact, m'a bien envoyé une documentation, mais qui ne correspondait pas à l'article acheté. Le wiki du fabricant (Keyestudio) permet d'avoir un peu plus d'informations : http://wiki.keyestudio.com/index.php/KS0212_keyestudio_RPI_4-channel_Relay_Shield

On sait désormais que les 4 relais communiquent respectivement avec les GPIO 7, 3, 22 et 25. Ben voilà ! Yapluka

Coté Octoprint, je ne souhaitais pas mettre trop les mains dans le camboui pour ne pas le détraquer, mais il a fallu un petit peu.

Je me suis inspiré d'un excellent blog http://jpg32190.fr/blog/2016/05/25/retour-configuration-doctoprint/ pour arriver à mes fins.

Il va donc falloir installer une bibliothèque sur votre carte microSD où se trouve Octoprint, wiringPi qui permet de dialoguer avec les ports GPIO du connecteur du Raspberry.

Branchez le Rasberry sur votre TV ou utilisez Putty pour vous connecter dessus en SSH.

1 - Installez wiringPi en tapant les lignes :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

2 - Maintenant il va falloir éditer un fichier :

sudo nano /etc/rc.local

Comme il est dit dans le blog avant la ligne exit 0, tapez ceci :

/usr/local/bin/gpio write 7 0
/usr/local/bin/gpio mode 7 out
/usr/local/bin/gpio write 3 0
/usr/local/bin/gpio mode 3 out

Ceci permet au lancement d'Octoprint de mettre les 2 relais 7 et 3 à zéro et de communiquer avec l'extérieur. Si vous souhaitez utiliser les 2 autres relais (22 et 25), il suffit de rajouter les lignes en changeant les chiffres, je vais en rester à 2 relais activables.

Vous pouvez relancer Octoprint, il saura désormais reconnaitre les ports GPIO, éteindra les 7 et 3 (2 premiers relais du module acheté) et permettra de communiquer avec l'extérieur.

De retour dans Octoprint, il va falloir gérer ces relais facilement. Pour ce faire, allez dans le Plugin Manager et installez 'System Command Editor'

Ce plugin permet de rajouter très facilement des lignes au menu system accessible en haut de l'écran d'Octoprint, vous obtiendrez un truc comme ça :

sce2.PNG.da62153b7b7c673b6271240a06fe5801.PNG

Dans cet exemple l'éclairage par bandes leds est géré par le relai 7 et l'imprimante par le relai 3.

Pour rajouter ces lignes dans le menu system, allez dans le plugin System Command Editor qui affiche au départ une fenêtre vide avec un rectangle vert. Clic droit dessus pour soit créer une commande ou une ligne de séparation dans le menu. A noter qu'une ligne est automatiquement ajoutée lors de la création de la première commande.

sce1.PNG.c564636f9dceea307b27edb27c31cdd4.PNG

J'ai donc créé 4 commandes pour allumer et éteindre l'éclairage et l'imprimante. Voici par exemple comment créer la commande pour allumer les leds. On demande au gpio en rapport avec le relai voulu de se mettre à 1.

sce3.PNG.06c0066f84022b6a32830b491e2fcae2.PNG

Pour les autres commandes, on fait la même chose, il suffit de taper gpio write 7 0 par exemple pour éteindre le relai du gpio 7 et donc les leds.

Dans System Command Editor, pour éditer une commande, il suffit de faire un clic droit dessus et d'apporter les modifications.

Et, c'est terminé ! Lorsque dans le menu system d'Octoprint vous cliquez sur une ligne, le relai va allumer ou éteindre l'accessoire branché dessus, sans avoir quoi que ce soit à souder en plus sur le module relai. Une petite led placée sous chaque relai vous indique sont état (actif ou pas)

Voilà, par exemple mon branchement pour les leds :

branchement.PNG.dab5adb66bd2407f0e62f95e7034502d.PNG

Plus simple, c'est pas possible ! Il suffit juste de prendre un fil alimentant les leds pour le faire passer par le relai. A noter que dans les cosses de chaque relai, la partie centrale se connecte avec le picot à droite ou à gauche, celui de gauche étant fermé par défaut et celui de droite ouvert. Vous pouvez donc imaginer des montages divers avec des accessoires étant allumés dès le démarrage d'Octoprint ou bien éteints. De même dans le fichier que vous avez édité, il suffit par exemple de taper

/usr/local/bin/gpio write 3 1

pour activer le relai 3 (sur lequel est connecté l'alimentation de l'imprimante) dès le lancement d'Octoprint.

Voilà, j'ai fini. Un minimum de fils grâce au module relais enfichable et un minimum de codage grâce au plugin 'System Command Editor', c'est ce que je voulais. Et en plus ça marche parfaitement et à distance. Méfiez vous, tous les relais ne fonctionnent pas aussi simplement, il faut en effet alimenter le module en 3V et 5V pour gérer les relais. Ici, le constructeur a fait tout le câblage, vous n'avez plus qu'à enficher le module sur le Raspberry. J'ai cependant mis un film autocollant isolant sous le module relais car mon Raspberry ayant des dissipateurs de chaleur, je voulais éviter les contacts. Les entretoises fournies sont à mon avis un peu trop courtes, j'en ai imprimé 4 de 11mm de haut. Et j'ai aussi imprimé des plaques venant s'enficher dans l'arrière de la DiscoEasy pour brancher les alimentations de l'imprimante et des leds, ainsi qu'un branchement déporté pour l'imprimante.

Merci de votre attention, bon bricolage et bonnes impressions !

Modifié (le) par Baroudeur
  • Merci ! 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Très bon tuto ;-)

 

Je le déplace dans la section en question :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Super tuto qui semble faire la moitié du chemin que j'ai en tête. donc merci pour ça.

Bon maintenant que tu peux piloter l'éclairage LED à distance via Octoprint... penses-tu qu'il y aurait moyen (c'est ça le problème ) de déclencher l'allumage de manière semi-auto c'est à dire en fonction d'un événement ?

Je m'explique : j'ai mis en place un bot telegram qui m’envoie selon un rythme au choix (toutes les n minutes ou tous les n millimètres en Z) une photo de mon impression (oui j'ai la CAM bien sûr) avec un petit compte rendu : hauteur en Z, T° du bed et de la buse, temps écoulé, temps restant... bref c'est par défaut dans le bot telegram.

Quand j'imprime la nuit j'éteins donc le bot me notifie bien ; mais la photo est noire.

Soluce 1 : laisser la lumière de la pièce "ON" toute la nuit  (bof...)

Soluce 2 : allumer le bandeau LED 1 seconde ou plus ou moins (suffisamment tôt) pour que la lumière soit là, à la prise de photo du bot (moi c toutes les 15 minutes et à la fin du print pour info) et éteindre après.

je me suis dit "événement Octoprint ?" "où je capture ça ?"  "événement telegram qui envoie un ordre à Octoprint que l'on pourrait intercepter ?"

bref je sèche.

Aurais-tu par hasard une idée ?

D'avance merci et de toutes façon merci pour ton tuto qui déjà traite de la partie "physique"

Cdt

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci à tous pour vos encouragements, c'est mon premier message un peu important.

@corethan

Je cherche aussi une solution pour le problème qui se pose à toi, je crois avoir une petite idée, il faut que je teste avant ;-)

J'aurais aussi une question à poser aux habitués. Concernant ce relai, je souhaite le mettre dans un boitier fixé sur le Mod Ultime de Bezain au niveau du pied arrière droit, et pour ce faire je pense le mettre dans ce boitier en particulier, voilà ce que cela donne :

IMG_1096.thumb.JPG.58a05224b902cbf2913772f1c2d25277.JPG

IMG_1097.thumb.JPG.640f22f3e70b6ac8f2e62f8042af754c.JPG

Pouvez vous me dire si je risque des problèmes de surchauffe de la part du Raspberry, sachant qu'il ne gère que Octoprint ? Autre question similaire, la nappe de la camera passe juste au dessus du dissipateur, supporte-t-elle la chaleur ?

Modifié (le) par Baroudeur

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 10/08/2017 at 09:29, corethan a dit :

Quand j'imprime la nuit j'éteins donc le bot me notifie bien ; mais la photo est noire.

 

Il y a 15 heures, Baroudeur a dit :

Je cherche aussi une solution pour le problème qui se pose à toi, je crois avoir une petite idée, il faut que je teste avant ;-)

Pour ma part j'allume mon éclairage pile à la fin de l'impression, je patiente un peu le temps que PushBullet ait capturé mon image, et je l'éteins.

events:
  enabled: true
  subscriptions:
  - command: (gpio -g write 18 0; sleep 120s; gpio -g write 18 1)
    event: PrintDone
    type: system

Environ un an que j'emploie ce système et ça marche fort bien. :) 

Modifié (le) par Chris V.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci  @Chris V.

donc il y a moyen. Moi en fait je cherche à allumer pas seulement à la fin du print mais à chaque fois un peu avant l'envoi de la notif telegram qui se fait soit toutes les x minutes (paramétrable) soit tous les x millimètres en Z (là aussi paramétrable)

 

Cdt

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux peut-être jouer sur l'événement "début d'impression" avec des sleeps à intervalles régulières. Jamais testé. Ou directement hacker le code du plugin pour exécuter une commande système (en l'occurrence celle qui allume ton éclairage) juste avant la prise de vue.

Partager ce message


Lien à poster
Partager sur d’autres sites

Juste un petit clein d'oeil pour vous montrer mon installation finale

IMG_1105.thumb.JPG.648a174aa5bc54a84f0b2bd1de4ffdb8.JPG

Notez aussi que pour les lego, ils s'encastrent parfaitement sur la tête d'une vis M3 avec tête cylindrique, comme celles équipant la Dagoma. J'ai fait des relevés avec sonde thermique pour voir si le Raspberry chauffait avec Octoprint, les températures ne vont pas au delà de 30 à 35°, donc j'ai gardé ce boitier.

Et voici même mon installation complète

IMG_1106.thumb.JPG.3e13fe2bd2981f1b58d4f1009e70c3b9.JPG

Modifié (le) par Baroudeur

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Baroudeur a dit :

Juste un petit clein d'oeil pour vous montrer mon installation finale

IMG_1105.thumb.JPG.648a174aa5bc54a84f0b2bd1de4ffdb8.JPG

 

 

 

excellent , j'adore cette photo :)

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 11/08/2017 at 17:39, corethan a dit :

Merci  @Chris V.

donc il y a moyen. Moi en fait je cherche à allumer pas seulement à la fin du print mais à chaque fois un peu avant l'envoi de la notif telegram qui se fait soit toutes les x minutes (paramétrable) soit tous les x millimètres en Z (là aussi paramétrable)

 

Cdt

Eric

Et via une camera avec led infrarouge ?

Sinon parfait le tuto :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×