Aller au contenu

Anycubic Kobra 3 Combo

Activer une Broche de CM via Gcode


Oze

Messages recommandés

Bonjour bonjour !

Une question me trotte depuis plusieurs jours suite à la re-lecture d'un poste sur le blog de prusa dans lequel il explique activé un appareil photo directement via sa carte mère à l'aide d'une broche de celle-ci

https://blog.prusaprinters.org/fr/how-to-create-beautiful-3d-print-timelapse-videos/

Citation

M42 S255 P73 - Le code G M42 active la broche 73 (P73) avec 5V. S0 = 0V, S255 = 5V. Puisque nous utilisons une mise au point fixe (manuelle), nous n'avons pas à nous soucier de la mise au point de la caméra en premier

Voici une partie traduite du blog dans lequel il dit qu'une fois le tout connecté, il appel un M42 puis le N° d'une broche de la carte mère, ici la P73, pour faire déclencheur

Même chose un peu plus bas dans son article mais pour la Mk2 qui ne possède pas la même carte mère il explique simplement changer le nom de la broche qui n'est plus P73 mais P20

J'en déduis donc que chaque connectique d'une carte mère à son numéro et je pense qu'il est possible d'exploité cette idée sur n'importe quel carte mère

Alors j'ai commencé à regarder un peu plus en détail ma carte mère actuel, une Skr mini e3

Par exemple nous avons le E0-STOP en bas droite de la CM qui pourrait correspondre la PC15 étant un +5V et le GND à côté 

Mais il y a bon nombre d'autres broches inutilisé qui pourraient faire l'affaire !

2086579638_Skrminie3.thumb.png.f7172c144fe2df1946b8a0df00665d51.png

 

Pensez vous que c'est faisable, est-ce qu'il y a un danger en particulier ?

Bonne journée !

Lien vers le commentaire
Partager sur d’autres sites

Il y a 8 heures, Oze a dit :

Pensez vous que c'est faisable

Oui

Il y a 8 heures, Oze a dit :

est-ce qu'il y a un danger en particulier ?

Ça dépend de ce que tu entends par danger 😉 donc oui. Il vaut mieux savoir ce que l'on fait (qui le fait, pourquoi on le fait, où on le fait et probablement aussi quand on le fait)

🙂

Lien vers le commentaire
Partager sur d’autres sites

Ce que j'entend pas danger c'est clairement flinguer la carte mère voir pire flinguer l'élément rapporté et connecté a la CM via ces broches ... Que se soit un téléphone, un capteur ou autre appareil

La question que je me pose est la suivante : comment connaître le Nom ou Numéro d'une broche ? Est ce via le plan que j'ai mis ci-dessus ? Si c'est le cas la PC15 s'appel tout simplement PC15 ? Ou bien est-ce plus complexe que ça ?

Ensuite Prusa explique avoir mis à jour le firmware afin d'utiliser le M42, ce qui signifie qu'à un endroit dans le firmware il a rajouter cette information mais où ?.. Est ce le genre de code comme les M600 et autres ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 24 minutes, Oze a dit :

Si c'est le cas la PC15 s'appel tout simplement PC15 ? Ou bien est-ce plus complexe que ça ?

Sur les cartes de Bigtreetech (SKR), c'est ainsi qu'il faut faire (les broches se trouvent dans le fichier pin_nomdelacarte.h dans le dossier Marlin/src/pins/«processeur» (pour un Marlin2).

Exemple pour une carte SKR E3-mini :

Citation

//
// Limit Switches
//
#define X_STOP_PIN                          PC0
#define Y_STOP_PIN                          PC1
#define Z_STOP_PIN                          PC2

//
// Z Probe must be this pins
//
#define Z_MIN_PROBE_PIN                     PC14

//
// Filament Runout Sensor
//
#ifndef FIL_RUNOUT_PIN
  #define FIL_RUNOUT_PIN                    PC15  // "E0-STOP"
#endif

//
// Steppers

 

il y a 31 minutes, Oze a dit :

flinguer la carte mère voir pire flinguer l'élément rapporté et connecté a la CM via ces broches

Oui, il y a toujours le risque: mauvaise tension envoyée (balancer du 5V sur une broche n'acceptant que du 3.3V par exemple) et d'autres encore… C'est bien pour ça que je disais «savoir pourquoi / comment / … on le fait».

Un gcode reste un gcode, le M42 est référencé mais n'ayant pas de Prusa je ne peux te répondre quant au firmware ( @Kachidoki qui en possède quelques unes pourrait éventuellement répondre s'il n'est pas trop occupé à imprimer des visières). L'activation de prises de photos s'active dans le configuration_adv.h (n'en ayant pas l'utilité, je ne l'ai jamais testé, mon Octoprint étant capable de le faire si besoin) :

Citation

/**
 * Photo G-code
 * Add the M240 G-code to take a photo.
 * The photo can be triggered by a digital pin or a physical movement.
 */
//#define PHOTO_GCODE
#if ENABLED(PHOTO_GCODE)
  // A position to move to (and raise Z) before taking the photo
  //#define PHOTO_POSITION { X_MAX_POS - 5, Y_MAX_POS, 0 }  // { xpos, ypos, zraise } (M240 X Y Z)
  //#define PHOTO_DELAY_MS   100                            // (ms) Duration to pause before moving back (M240 P)
  //#define PHOTO_RETRACT_MM   6.5                          // (mm) E retract/recover for the photo move (M240 R S)

 

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 10 minutes, fran6p a dit :

( @Kachidoki qui en possède quelques unes pourrait éventuellement répondre s'il n'est pas trop occupé à imprimer des visières)

Je suis assez tranquille, ce sont les machines qui bossent. 🙂 Justement je suis en train de me battre pour faire tourner Marlin 2.0 avec une vieille MKS Sbase, je vais peut-être finir par ouvrir un sujet.

Pour le M42 sur une MK3, rien de tel que de lire le code :

    /*!
	### M42 - Set pin state <a href="https://reprap.org/wiki/G-code#M42:_Switch_I.2FO_pin">M42: Switch I/O pin</a>
    #### Usage
    
        M42 [ P | S ]
        
    #### Parameters
    - `P` - Pin number.
    - `S` - Pin value. If the pin is analog, values are from 0 to 255. If the pin is digital, values are from 0 to 1.
    
    */
    case 42:
      if (code_seen('S'))
      {
        int pin_status = code_value();
        int pin_number = LED_PIN;
        if (code_seen('P') && pin_status >= 0 && pin_status <= 255)
          pin_number = code_value();
        for(int8_t i = 0; i < (int8_t)(sizeof(sensitive_pins)/sizeof(int)); i++)
        {
          if (sensitive_pins[i] == pin_number)
          {
            pin_number = -1;
            break;
          }
        }
      #if defined(FAN_PIN) && FAN_PIN > -1
        if (pin_number == FAN_PIN)
          fanSpeed = pin_status;
      #endif
        if (pin_number > -1)
        {
          pinMode(pin_number, OUTPUT);
          digitalWrite(pin_number, pin_status);
          analogWrite(pin_number, pin_status);
        }
      }
     break;

En fait c'est paramétrable directement via le G-Code, ce n'est pas propre à déclencher un APN, mais bien pour piloter une IO quelconque.

Mais sur une SKR E3 mini je peux pas trop aider. Il faut aller voir l'implémentation dans le code utilisé pour savoir si M42 est implémenté et lever tous les doutes.

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

Merci pour vos retours !

 

Suite à vos réponses j'ai fais une petite recherche, déjà @fran6p dans le Config_adv.h j'ai trouvé la partie photo et dans celle ci nous avons plusieurs liens don un qui amène à l'article suivant https://captain-slow.dk/2014/03/09/3d-printing-timelapses/

Visiblement le M240 dans l 'onglet Config_adv remplace le M42, si j'ai bien pigé ils ont tous deux la même utilité. Dans tous les cas connecté son appareil photo par exemple directement à la CM est donc bien possible et visiblement d'après l'article ci-dessus il mentionne un logiciel du nom de "chdk" mais je n'ai pas encore regarder en détail késako...

Après j'ai cherché à ouvrir le pin.h de la Skr_mini_e3_v1_2 en suivant ( du moins je crois ) le chemin que tu m'a donné fran6p et je tombe sur ça :

#pragma once

#include "pins_BTT_SKR_MINI_E3.h"

#define BOARD_INFO_NAME "BIGTREE SKR Mini E3 V1.2"

#define NEOPIXEL_PIN       PC7  // LED driving pin

/**
 * TMC2208/TMC2209 stepper drivers
 */
#if HAS_TMC220x
  //
  // Software serial
  //
  #define X_SERIAL_TX_PIN  PB15
  #define X_SERIAL_RX_PIN  PB15

  #define Y_SERIAL_TX_PIN  PC6
  #define Y_SERIAL_RX_PIN  PC6

  #define Z_SERIAL_TX_PIN  PC10
  #define Z_SERIAL_RX_PIN  PC10

  #define E0_SERIAL_TX_PIN PC11
  #define E0_SERIAL_RX_PIN PC11

  // Reduce baud rate to improve software serial reliability
  #define TMC_BAUD_RATE 19200
#endif

Ducoup il faudrait que je rajoute ici le PC15 //E0-STOP en "define" ? Mais dans se cas pourquoi les autres PIN pour le X, Y et Z ne sont pas décoché du #define ? Puisqu'ils sont bien utilisé ... J'ai l'impression de me planter là 😅 Je vais re-regarder tout ça demain matin quand j'aurais les idées un peu plus clair

Lien vers le commentaire
Partager sur d’autres sites

Il y a 19 heures, Oze a dit :

en suivant ( du moins je crois ) le chemin que tu m'a donné fran6p et je tombe sur ça :

Tu as bien trouvé le fichier des «pattes» MAIS as-tu vu ça ?

Citation

#include "pins_BTT_SKR_MINI_E3.h"

La suite des attributions des pins se trouve complétée par le fichier (inclus lors de la compilation 😉 ) ci-dessus d'où est extrait mon post précédent 😄

🙂

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

En effet Fran6p je n'avais pas vue que le 1er fichier en appelait un autre ! bon est bien je vais pouvoir avancer 🙂 merci à toi !

Bon j'ai donc à la maison un Adafruit Feather 32u4 BlueFruit LE il s'agit d'une carte avec un module bluetooth utilisé par prusa lors de l'un de ses tutos afin de présenter la possibilité de faire du timelapse à l'aide d'un téléphone via bluetooth

Le but de la carte BlueFruit étant d'émuler un clavier bluetooth afin de déclencher à distance le téléphone pour la prise photo

bt-trigger-spoust-1.jpg

Ce que je ne comprend pas bien dans cette version c'est le fil bleu nommé TRIG. En effet dans le cas ou je branche une caméra via connectique je n'ai besoin que de deux files, là il y en a un troisième 

Je me demande si je ne pourrais pas exploité la partie NEOPIXEL de ma carte et le cablé de la façon suivante :

La carte Bluetooth Adafruit :                                                               Carte mère SKR MINI E3 V1.2

+5 V  --------------------------------------------------------------------------------------------> +5V NEOPIXEL

GND ---------------------------------------------------------------------------------------------> GND NEOPIXEL

TRIG ---------------------------------------------------------------------------------------------> PC7

Je dis surement une monstrueuse absurdité mais j'ai l'impression que dans cette version là c'est le câble Trig qui simule une action sur la touche du clavier émuler par le Adafruit. Alors que sur un branchement standard sur une caméra c'est l'activation de la prise +5v qui à pour effet de déclencheur

Du-coup si dans mon Gcode je fais appel au PIN7 avec le câblage si dessus je devrais réussir à faire un déclenchement photo

Qu'en pensez vous ?

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

Bon j'apporte des new's !

Alors j'ai essayé la connexion de l'Adafruit à la carte mère

Au début je me suis servis comme convenu des pins du NEOPIXEL mais l'Adafruit n'a pas démarré alors j'ai de nouveau regarder le plan de la CM puis je suis aller me brancher sur PT-DET en suivant le branchement standard cette fois ci le système  bluetooth à démarré ! J'ai également pu connecté un téléphone sans soucis

Afin d'être sur qu'il fonctionnait bien je suis donc aller sur mon octoprint, j'ai demandé un M42 S255 P12 puis un M42 S0 P12, l'information part bien mais rien ne se passe

J'ai donc essayé "PC12" mais rien non plus... J'ai essayé avec un autre pin comme le PC15 du E0-STOP même chose rien ne déclenche 

Je ne comprend pas si se système fonctionnait sous la PRUSA pourquoi ne pas marcher sous la CM de la ender ? 

Faudrait il que dans le Firmware de la machine je définisse un PIN ?

//
// Filament Runout Sensor
//
#ifndef FIL_RUNOUT_PIN
  #define FIL_RUNOUT_PIN   PC15   // "E0-STOP"
#endif

 

Pourtant le PC15 devrait être actif...

Lien vers le commentaire
Partager sur d’autres sites

Bon est bien j'ai réussi à avancer sur le projet !

N'arrivant pas à comprendre j'ai reformater l'adafruit puis j'ai re-téléverser le programme du blogueur de prusa sur la carte ( Au passage j'ai changer le PIN "déclencheur" qui était le 5 dans le tuto prusa j'ai choisi le 10, au cas où le 5 pour je ne sais qu'elle raison ne fonctionnerait plus ).

Ensuite j'ai connecté mon Adafruit en 5v à mon ordinateur ( supprimant ainsi du câblage le fil GND et le fil +5V et j'ai connecté en bluetooth un téléphone

Jusque là pas de problème le tel est connecté tout baigne

Pour finir j'ai pris un câble, j'allais le connecter à une source 5v puis le connecter à mon adafruit, afin de faire le déclencheur en manuel

Je débranche donc tout, je connecte un un câble PIN10 puis redémarre l'adafruit en le reconnectant à mon ordinateur ( donc en l'alimentant de nouveau avec le 5v. ) le téléphone se reconnecte en bluetooth immédiatement et là sur le volume monte et en même temps une led fait un petit clignotement sur l'adafruit...

J'attends un peu ça recommence, j'ouvre donc l'apli téléphone et il prend une photo ?!

C'est super le système marche donc très bien mais bon dieu pourquoi fait il déclencheur alors que mon PIN 10 n'est pas connecté à quoique ce soit !??? Il y a juste un câble sur le PIN10 mais rien relié à celui ci

Je touche au but si quelqu'un peu me donner une info, une route, un chemin ou autre ...

Voici le code dans l'adafruit

* General configuration
   ---------------------
   INITIAL_DELAY = delay after reset to initialize serial port in ms
   PERFORM_FACTORY_RESET = define to perform BT module factory reset on restart
   SHUTTER_MIN_INTERVAL = minimum interval between shutter presses
*/
#define INITIAL_DELAY                       1000 // ms
//#define PERFORM_FACTORY_RESET
#define SHUTTER_MIN_INTERVAL                10000 // ms

/* Interval shooting feature configuration
   ---------------------------------------
   USE_INTERVAL = define to enable interval shooting
   INTERVAL_DOT = show "." on serial every X ms
   INTERVAL_SHUTTER = press shutter every X ms
*/
//#define USE_INTERVAL
#define INTERVAL_SHUTTER                    30000 // ms

/* Trigger pin feature configuration
   ---------------------------------
   USE_TRIGGER = define to enable triggered shooting
   TRIGGER_ON_LH = true to trigger on switching from low to high
   TRIGGER_ON_HL = true to trigger on switching from high to low
   TRIGGER_PIN = GPIO pin used for trigger
*/
#define USE_TRIGGER
#define TRIGGER_PIN                         10
#define TRIGGER_ON_LH                       true
#define TRIGGER_ON_HL                       false

/* Bluefruit BLE module configuration
   ----------------------------------
   If you use the recommended board Adafruit Feather 32u4 Bluefruit LE,
   (product #2829), then do not modify anything below -- these settings 
   are required for this board.
*/
#define BLUEFRUIT_MINIMUM_FIRMWARE_VERSION  "0.6.6"
#define BLUEFRUIT_SPI_CS                    8
#define BLUEFRUIT_SPI_IRQ                   7
#define BLUEFRUIT_SPI_RST                   4
#define BLUEFRUIT_VERBOSE_MODE              false
Modifié (le) par Oze
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...