Aller au contenu

GO Print

Gérer un relai sous Octoprint


Baroudeur

Messages recommandés

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 Yo'
Ajout d'un préfixe
  • J'aime 1
  • Merci ! 4
Lien vers le commentaire
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

Lien vers le commentaire
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
Lien vers le commentaire
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 Invité
Lien vers le commentaire
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

Lien vers le commentaire
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.

Lien vers le commentaire
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
Lien vers le commentaire
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 :)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
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 :)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
  • 4 months later...

bonjour,

je cherche également a piloter via mon raspberry (octoprint) un relais pour allumer ou éteindre mon imprimante (CR-10)

je comprends pas comment brancher l'alimentation de l'imprimante sur le relais (220v directement ?!?)

merci pour l'échange de ton travail

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, cafewah a dit :

je comprends pas comment brancher l'alimentation de l'imprimante sur le relais (220v directement ?!?)

Nah, dérive l'un des deux câbles qui partent de l'alim vers la carte électronique du boîtier de la CR-10 vers le relais et sors du relais pour repiquer sur le connecteur fraîchement libéré sur la carte. :) 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Bonjour, J'ai suivie ton tuto mais je n'arrive pas à contrôler les relais avec octoprint.

Ensuite, j'ai installé le wiki de keyestudio et quand je fais un test avec la commande sudo relay ça fonctionne.

Mais dés que je redémarre le RPI ça ne fonctionne plus.

Avez vous des pistes sur mon problème ? merci

Lien vers le commentaire
Partager sur d’autres sites

@Fabriceee

Vérifies bien qu'il n'y a pas d'erreur de frappe lors de la saisie des instructions sur le RaspB. J'ai reçu des messages persos pour ce problème, et il y avait à chaque fois une erreur de saisie.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Bonjour,

Merci tout d'abord pour ces différents posts !

Pour ma part je n'arrive pas non plus à contrôler les relais correctement en passant par le SSH (petit problème suite à l'installation de Wiring Pi et avec l'interface Octoprint).

Puis je suis tombé sur le plug-in "Enclosure Plugin" qui simplifie clairement la tâche et permet beaucoup de chose :

  • On peut piloter des GPIO, faire des commandes G-Code, PWM les définires comme entrées ou sorties  
  • Programmer un démarrage automatique lorsque le serveur s'allume ou en début d'impression
  • Programmer une extinction après la fin d'impression avec un timer possible
  • Ajouter des entrées (capteurs, boutons, détecteur fin filament ...) pour déclencher une action sur les GPIO par exemple.
  • Et rajouter un raccourci dans la NavBar (juste à côté des boutons systèmes, tout en haut)
  • ...

info : https://github.com/vitormhenrique/OctoPrint-Enclosure

Bref tout à l'air de marcher pile poil ! Très intuitif, pas de commandes spécifiques à faire en SSH ou autres ...

Voila, si cela peut aider 😛 

 

Enclosure Plugin pic1.PNG

Exclosure plugin pic2.PNG

  • J'aime 1
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Bonjour à tous,

merci pour le tuto, pour ma part je bloque sur les GPIO, j'ai branché le IN1 sur la pin GPIO 21, le VCC au 5 et le GND. Installé winringPi mais lorsque je fais les "gpio mode 21 out" puis "gpio write 21 1" rien ne se passe, la sortie testée au voltmètre entre GND et le GPIO21 reste à 0V

des idées ?

Merci
 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Bonjour,

 

Juste une petite note pour ceux qui aurait des problemes de conf des GPIO.

J'ai suivis ce tuto et j'ai installé le plugin enclosure. Mais rien ne fonctionnait ou presque, en effet un seul relais était contrôlé.

Apres recherche il se trouve que ma carte , modele KEYESTUDIO comme ci-dessus, acheté sur amazon, n'as pas les meme numéros de GPIO associé au relais.

Apres recherche il semble y avoir une correspondance q faire entre les numeros de port dans la librairie wiringPI et les numeros GPIO.

Bref en utilisant les ports 4,6,22,26 dans rc.local et dans le plugin Enclosure les 4 relais fonctionne normalement.

 

Ci dessous les sources pour les curieux :

https://www.raspberrypi.org/forums/viewtopic.php?t=209357

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas réussi avec le ssh mais la soluce de @fontanetflo en utilisant les ports 4,6,22,26 comme l'a indiqué @sixbras c'est parfait, merci à vous 😉

J'essai tout de même d'aller un peu plus loin en essayant de les piloter à distance avec API Control

J'ai trouvé des infos ici : https://github.com/vitormhenrique/OctoPrint-Enclosure/wiki/API-Control

Avec ça je peux presque commander les relais http://192.168.0.25/plugin/enclosure/setIO?status=false&index_id=2&apikey=CA8DCA8......

Mais ça ne fonctionne pas complètement, peu importe que je mette false ou true (setIO?status=false), le relais s’éteint mais ne s'allume jamais, il doit me manquer une connerie de parenthèse ou de point pour faire passer le "true" mais j'ai trifouillé dans tous les sens 

Dans les deux cas, j'ai une réponse "true" qui s'affiche :

{
  "success": true
}

Une idée? Passez vous par autre chose pour la commande à distance? l'idéal serait un accès direct sur l'appli Octoclient sur le smartphone, avec un gcode peut être...

 
 

 

Finalement, j'ai trouvé une solution avec le gcode, pour ceux que ça intéresse :

ENC O[numero id] S[1pourON, 0pourOFF]
Attention ENC puis la lettre O et non pas 0

par exemple ENC O3 S1 pour allumer le port 3

Comme ça j'ai juste eu à créer des raccourcis dans l'appli et je peux commander chaque fonction en un clique sur le smartphone 😁

Modifié (le) par David590
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bonjour

j'ai aussi un soucis avec la commande à distance:

j'ai installé enclosure plugin sur mon Octoprint, un module 2 relais sur le raspberry.

Je commande l'allumage/extinction de l'imprimante et les LED d’éclairage.

depuis Octoprint pas de soucis, tout fonctionne.

pour la commande à distance j'utilise Printoid, je me suis servi du proxy intégré au Rasberry Haproxy. j'ai donc créé 4 scripts pour commander les Gpio
les commandes ne fonctionne pas alors que le streaming et le reste des infos marchent impec.

j'ai testé depuis Putty le lancement des scripts (./script) ou les commandes en direct, ça ne fonctionne pas non plus.

avant de le faire fonctionner depuis le smartphone, j'aimerai bien le faire marcher en direct depuis putty .

Lien vers le commentaire
Partager sur d’autres sites

J'ai réussi à faire fonctionner les scripts.

premier truc, ma carte SD était HS, impossible de modifier les fichiers. quand je modifiait un script, la modif était dans la RAM, mais quand je faisait un reboot, retour à la case départ!
du coup dés que tout a marché, j'ai sauvegardé la nouvelle carte SD avec Win32disk imager.

les GPIO sont différent entre Enclosure plugin et les scripts SSH sous Putty.

exemple pour activer la broche GPIO 6, branchée sur la PIN physique 22, il faut noter le gpio 25 dans enclosure plugin et gpio 6 dans le script. C'est bien la pin N° 22 qui sera activée dans les 2 cas.

mes relais se mettent sur ON quand la tension de la broche passe à zéro. Pour que le relais colle, il faut la commande gpio write 6 0....

et du coup mes scripts fonctionnement depuis mon smartphone sur Printoid pro

 

broches Pi.JPG

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bonjour,

Petite question, est ce que toutes les pins du raspberry sont utilisées? j'aurai besoin de la pin 18 pour piloter un ruban de led du coup je me posais la question de savoir si je devais me prendre un contrôleur usb supplémentaire ou si je pouvais la récupérer directement 🙂

Lien vers le commentaire
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
×
×
  • Créer...