FR
  • English
  • Italiano
  • Deutsch
  • Polski
Se Connecter
Menu
Dernière mise à jour a month ago
Cette article est également disponible dans les langues suivantes : 
ENPLDEIT

Le module GPIO (General Purpose Input Output) est un PCB supplémentaire en option qui peut être connecté aux Original Prusa MK4/S, MK3.9/S ou MK3.5/S.

IMPORTANT : Pour exploiter tout le potentiel de la carte GPIO, vous avez besoin du firmware 6.2.0-alpha1 ou plus récent. Visitez le GitHub pour télécharger le dernier firmware

Le module offre des fonctionnalités étendues en permettant le contrôle de périphériques externes via des connexions aux broches de la carte GPIO, qui peuvent fonctionner soit en mode ENTRÉE, soit en mode SORTIE. Cette polyvalence ouvre un large éventail de cas d’utilisation potentiels.

Partagez et discutez de vos projets avec les autres membres de la communauté Prusa sur notre forum officiel. Nous avons créé une section GPIO dédiée.

Idées de cas d'utilisation

Le module peut contrôler l'obturateur d'un appareil photo à un moment précis, ce qui le rend idéal pour créer des time-lapses visuellement parfaits, où chaque image est capturée exactement au même moment.

Au-delà du contrôle de l'obturateur d'un appareil photo, le module peut être utilisé pour diverses autres applications. Par exemple, il peut déclencher un éclairage externe pour éclairer la zone d’impression à des étapes spécifiques du processus d’impression, garantissant ainsi des conditions d’éclairage optimales pour les contrôles de qualité ou la photographie. De plus, il peut être configuré pour activer des ventilateurs de refroidissement ou d'autres périphériques, tels que des extracteurs ou des alarmes, en fonction de l'exécution de G-code personnalisé pendant les impressions, contribuant ainsi à maintenir des conditions de fonctionnement optimales et à améliorer la sécurité et l'efficacité de l'environnement d'impression 3D.

Un autre cas d’utilisation puissant est l’intégration d’un clavier macro, où chaque pression sur une touche peut déclencher l’exécution de commandes G-Code spécifiques. Cette configuration permet un contrôle manuel rapide des fonctions de l'imprimante, telles que le démarrage ou la mise en pause d'une impression, le réglage des températures ou le déplacement de la tête d'impression vers une position exacte. La possibilité de déclencher des actions personnalisées avec une simple pression sur une touche peut considérablement rationaliser les flux de travail, faisant du module d'extension GPIO un outil polyvalent et indispensable pour ceux qui cherchent à personnaliser et optimiser entièrement leur installation d'impression 3D.

La sécurité avant tout ! 

Bien que la possibilité de déclencher du G-Code via des entrées GPIO ajoute une grande flexibilité, elle comporte également des limitations et des risques potentiels. Une utilisation incorrecte ou mal temporisée des commandes G-Code peuvent interférer avec le processus d'impression, entraînant des échecs d'impression ou même des dommages à l'imprimante. Il est essentiel de tester minutieusement toutes les configurations de G-code personnalisées dans un environnement contrôlé avant de les déployer dans des travaux d'impression réels pour éviter des conséquences imprévues.

De plus, nous recommandons que seuls les utilisateurs expérimentés avec une solide compréhension de l'électronique et de la manipulation de G-Code utilisent ce module GPIO, car des connexions ou des configurations incorrectes peuvent entraîner des dommages matériels ou des dangers pour la sécurité.

Schémas 

Les schémas sont open source et disponibles sur notre page Open Source chez Prusa Research

Comment installer la carte GPIO

  1. Assurez-vous que l’imprimante est refroidie à température ambiante et éteignez-la.
  2. Ouvrez le capot du boîtier de la xBuddy en retirant quatre vis M3x6.
  3. Connectez le câble GPIO au port I2C.
  4. Fermez le capot du boîtier de la xBuddy.
  5. Assurez-vous que le GPIO ne touche aucune partie métallique du boîtier de la xBuddy ou de son capot. 
  6. Bon projet !

Broches

La carte comporte 8 broches, numérotées de 0 à 7. Les broches 0 à 3 peuvent être utilisées comme sortie et les broches 4 à 7 peuvent fonctionner comme entrée ou comme sortie. Chaque broche est de type à drain ouvert lorsqu'elle est utilisée comme sortie, ce qui signifie qu'elle est contrôlée par un transistor qui relie la broche à la masse (0 V) lorsqu'elle est active. Lorsque la broche est inactive, elle reste "flottante", ce qui signifie qu'elle n'est connectée à aucune tension spécifique, mais en raison de résistances de tirage internes, la tension sur la broche peut osciller autour de 3,3 V. 

Il est possible de souder des résistances de tirage externes aux broches JP. Cela modifie le comportement décrit ci-dessus. Pour plus de détails à ce sujet, consultez le paragraphe sur les résistances de rappel ci-dessous. 

Le comportement des broches dans un état de drain ouvert lorsqu'elles sont utilisées comme sorties peut être expliqué comme suit :

  • Broche mise à 0 (BAS) : La broche est éteinte et est dans un état "flottant", ce qui signifie qu’elle n'est pas connectée à une tension spécifique. Dans cet état, la tension sur la broche peut fluctuer et n'est pas bien définie à moins d'être stabilisée par une résistance de tirage.

Cet état "flottant" peut amener la broche à capter du bruit électrique aléatoire ou des interférences, ce qui peut entraîner un comportement inattendu s'ils ne sont pas correctement gérés. 

  • Broche mise à 1 (HAUT) : La broche est allumée et connectée à la masse (0 V), ce qui fait chuter la tension sur la broche à 0 V. Cet état est clair et n'entraîne aucune ambiguïté dans la détection du signal.

Lorsque les broches sont utilisées comme entrées, elles peuvent détecter le niveau de tension qui leur est appliqué. L'état d'entrée est influencé par la présence de résistances de tirage, qui peuvent aider à garantir une tension constamment haute (3,3 V) lorsqu'aucune autre source de tension n'est appliquée.

Résistances de tirage

La carte permet la connexion de résistances de tirage externes via des ponts de soudure étiquetés JP4 à JP7. Ces ponts de soudure sont situés au centre de la carte et sont connectés aux broches correspondantes :

  • JP4 est connecté à la Broche 4
  • JP5 est connecté à la Broche 5
  • JP6 est connecté à la Broche 6
  • JP7 est connecté à la Broche 7

Les ponts de soudure JP7 à JP4 peuvent être utilisés pour connecter des résistances de tirage intégrées, ce qui garantit que les broches restent à une tension haute (3,3 V) lorsqu'elles ne sont pas activement tirées vers le bas par une source externe ou par l'état de sortie de la broche. Ces résistances de tirage ont une valeur de 10K ohms, ce qui est une valeur standard pour fournir une tension stable sans consommation de courant excessive. Si aucune résistance n'est connectée au pont de soudure, la broche peut rester dans un état flottant, ce qui peut entraîner un comportement instable. JP signifie "jumper" et si aucune résistance n'est connectée, cela ne crée aucune résistance.

Pour les utilisateurs moins expérimentés, il est important de comprendre que les sorties à drain ouvert ne produisent pas intrinsèquement une tension haute (3,3 V) mais permettent plutôt une connexion à la masse (0 V). Les résistances de tirage sont nécessaires pour garantir que la broche reste à une tension haute lorsqu'elle est éteinte ou lorsqu'elle est utilisée comme entrée. Si elle n'est pas gérée correctement, une tension "flottante" peut provoquer la captation de bruit électrique par la broche, entraînant une commutation indésirable ou une instabilité du système.

Configuration du GPIO via un G-code personnalisé

Informations générales

Voici une séquence de commandes G-Code personnalisées utilisées pour contrôler la carte GPIO. Elle vous permet de configurer les états de sortie, de lire les états d'entrée et de gérer d'autres paramètres avancés sur la carte via des instructions G-Code, en les intégrant de manière transparente au flux de travail de votre imprimante 3D.

Contrôle des broches via G-Code

Pour contrôler les broches de sortie sur la carte GPIO, vous pouvez utiliser les commandes G-Code suivantes :

  1. Définir le mode de broche (sortie ou entrée)
    M262 P<base 10> B<0 ou 1>
    • P<0-7> : Sélectionne le numéro de broche à configurer (de 0 à 7).
    • B<0 ou 1> : Définit le mode de broche.
      • 0 - configure la broche comme sortie
      • 1 - la configure comme entrée.
    • Exemple : M262 P0 B0 - Configure la broche 0 comme broche de sortie.
       
  2. Écrire l'état sur une broche de sortie
    M264 P<base 10> B<0 ou 1>
    • P<0-7> : Sélectionne le numéro de broche sur laquelle écrire (de 0 à 7).
    • B<0 ou 1> : Écrire 0 pour régler la broche sur BAS, ou 1 pour régler la broche sur HAUT.
    • Exemple : M264 P0 B1 - Définit la broche de sortie 0 sur HAUT (1).
       
  3. Basculer l'état de la broche de sortie
    M265 P<base 10>
    • P<0-7> : Sélectionne le numéro de broche à basculer (de 0 à 7).
    • Cette commande inverse l’état actuel de la broche sélectionnée.
    • Exemple : M265 P0 - Bascule la broche 0.
       
  4. Configuration avancée des registres (pour les utilisateurs expérimentés)
    M267 R<1-3> B<0-255>
    • R<1-3> : Sélectionne le registre à configurer :
      • 1 : Registre de sortie.
      • 2 : Registre de polarité.
      • 3 : Registre de configuration.
    • B<0-255> : Définit la valeur à écrire dans le registre sélectionné.
    • Exemple : M267 R3 B255 - Configure le registre de configuration avec la valeur 255 (toutes les broches définies en entrées).

Pour lire l'état des broches ou définir des configurations, utilisez les commandes G-Code suivantes :

  1. Lire l'état de la broche
    M263 P<base 10>
    • P<0-7> : Sélectionne le numéro de la broche à lire (de 0 à 7).
    • La valeur renvoyée indiquera si la broche est HAUTE (1) ou BASSE (0).
    • Exemple : M263 P6 - Lit l'état de la broche 6 (renvoie 32 pour HAUT ou 0 pour BAS).
       
  2. Lire l'intégralité du registre d'entrée
    M261 A<adresse du périphérique esclave en base 10> B<nombre d'octets> S<style>
    • Cette commande lit l'intégralité du registre d'entrée et renvoie un nombre au format "style" donné qui représente les états de toutes les broches d'entrée (de 0 à 7).
    • Les états possibles sont :
      • 1 - DUMP hexadécimal
      • 2 - entier signé sur deux octets, base 10 (int16)
      • 3 - octet non signé, base 10 (uint8)
    • l'adresse du périphérique est toujours 32
    • Exemple : M261 A32 B1 S3 - lit l'intégralité du registre d'entrée et le renvoie sous forme d'octet non signé en base 10
       
  3. Lire le registre de l'extenseur d'IO (pour les utilisateurs expérimentés)
    M268 R<base 10>
    • cela lit l'octet entier du registre donné en une seule fois
    • R<0-3> :
      • 0 - Entrée
      • 1 - Sortie
      • 2 - Polarité
      • 3 - Configuration
    • Exemple: M268 R3 - Lit le registre de configuration

Comment configurer le G-code pour les broches d'entrée

Pour configurer les broches d'entrée pour votre installation, chaque broche d'entrée est automatiquement mappée à un fichier G-code spécifique situé sur la clé USB. Ces fichiers doivent être stockés dans un dossier nommé "macros" et suivre une convention de dénomination stricte : le nom du fichier doit être au format

btn_{numéro_de_broche}.gcode

{numéro_de_broche} correspond à la broche GPIO spécifique que vous utilisez. Toutes les lettres dans les noms de fichiers doivent être en minuscules.

Par exemple :

  • si vous utilisez la broche 7, le fichier G-code correspondant doit être nommé btn_7.gcode et placé dans le dossier "macros".
  • de même, pour la broche 4, le fichier doit être nommé btn_4.gcode

Le système prend en charge 8 broches d'entrée sur la carte GPIO, et chaque broche peut ainsi être mappée à un fichier G-code unique.

Lorsqu'un fichier G-code est déclenché via sa broche d'entrée correspondante, le G-code stocké dans ce fichier est immédiatement injecté dans le processus en cours. Veuillez noter qu'il existe une limite de taille pour chaque fichier G-code, qui ne doit pas dépasser 1024 octets.

Contrôle des entrées avancé et déclenchement de macros

Lorsqu'une broche d'entrée est configurée à l'aide de M262 et définie sur 1 (mode entrée), l'état de la broche est vérifié périodiquement toutes les 0,5 secondes.

Si un bouton connecté à la broche est enfoncé (l'état de la broche devient BAS), il déclenche un bouton macro. Par exemple, un bouton sur la broche 7 peut exécuter automatiquement une macro stockée dans le fichier macros/btn_7.gcode sur une clé USB. La macro est injectée dans la séquence d'impression, avec une limite de taille de 1024 octets.

Mémoire persistante

La configuration des broches et leurs états sont stockés dans l'EEPROM, garantissant que les paramètres des broches (modes sortie/entrée, polarité et états) sont préservés même après un cycle d'alimentation.
Les modifications effectuées via M262, M264, M267 ou tout autre G-code pertinent mettront à jour l'EEPROM, de sorte que les paramètres sont persistants.

Cas limites

Pour les broches 0 à 3, qui ne disposent pas de résistances de tirage internes, leur configuration en tant qu'entrée sans circuit externe supplémentaire peut entraîner un état logique inversé. Cela peut déclencher par inadvertance l'exécution d'une macro en raison de son état d'inactivité par défaut, qui est BAS (0).

Vous pouvez inverser la logique des broches d'entrée à l'aide du registre de polarité (M267 R2 B<value>). Cette fonctionnalité est particulièrement utile pour les broches qui n'ont pas de résistances de tirage (broches 0 à 3), qui par défaut sont dans un état de repas à 0 (BAS) et peuvent déclencher des actions indésirables lorsqu'elles ne sont pas configurées.

Toutes les broches (0-7) prennent en charge l’inversion de polarité de manière égale. Cela signifie que vous pouvez inverser la logique de n'importe quelle broche configurée comme entrée.

La principale différence de comportement entre les broches vient du fait que les broches 4 à 7 peuvent utiliser des résistances de tirage internes, qui les maintiennent à un état HAUT (3,3 V) lorsqu'elles ne sont pas activement pilotées à BAS. Cependant, ces résistances de tirage ne sont actives que si les ponts de soudure correspondants (JP4 à JP7) sont connectés. Si ces ponts ne sont pas soudés, les broches 4 à 7 se comportent de manière similaire aux broches 0 à 3, passant par défaut à un état flottant.

Lors de l'utilisation de broches d'entrée pour déclencher des macros, le système est conçu pour détecter un état BAS indiquant un bouton enfoncé. Pour les broches sans résistances de rappel actives, cet état BAS par défaut peut déclencher par inadvertance des macros à moins que l'inversion de polarité ne soit utilisée.

Avertissements et limitations

Lors de la configuration ou de l'écriture sur des broches, le système génère un avertissement via le port série s'il existe une incompatibilité avec l'opération prévue (par exemple, une tentative d'écriture sur une broche d'entrée). Il est essentiel de configurer correctement les broches à l'aide de M262 pour éviter de tels conflits.

G-code personnalisé dans Prusa Slicer

Insérez le code aux endroits exacts où il est nécessaire, après/avant une autre commande G-Code particulière. Sur la capture d'écran d'exemple, le G-Code personnalisé qui contrôle la carte GPIO est défini via PrusaSlicer et est positionné après chaque changement de couche. Cependant, il peut être positionné à n’importe quel endroit. 

Exemples

Exemple de connexion du module GPIO au contrôleur complémentaire (filtre de ventilateur et LED)

Sur l'image ci-dessous, nous pouvons voir la connexion entre le module GPIO et le contrôleur complémentaire responsable du contrôle du filtre du ventilateur et des LED de l'Original Prusa Enclosure. 

Nous développons actuellement une solution de câble jack-vers-molex pour la connexion entre la carte GPIO et la Basic board de l'Enclosure. Celle-ci fournira un moyen simple et convivial de gérer les contrôles de l'enceinte.

Image d'un exemple de configuration pour l'enceinte

Cet article vous a-t-il été utile ?

Commentaires

Vous avez encore des questions ?

Vous avez encore des questions ?

Si vous avez une question sur un sujet qui n'est pas traité ici, consultez nos ressources supplémentaires.
Et si cela ne suffit pas, vous pouvez envoyer une demande à [email protected] ou via le bouton ci-dessous.

Nous contacter