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.
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.
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.
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.
Les schémas sont open source et disponibles sur notre page Open Source chez Prusa Research.
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.
Le comportement des broches dans un état de drain ouvert lorsqu'elles sont utilisées comme sorties peut être expliqué comme suit :
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.
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.
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 :
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.
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.
Pour contrôler les broches de sortie sur la carte GPIO, vous pouvez utiliser les commandes G-Code suivantes :
M262 P<base 10> B<0 ou 1>
M264 P<base 10> B<0 ou 1>
M265 P<base 10>
M267 R<1-3> B<0-255>
Pour lire l'état des broches ou définir des configurations, utilisez les commandes G-Code suivantes :
M263 P<base 10>
M261 A<adresse du périphérique esclave en base 10> B<nombre d'octets> S<style>
M268 R<base 10>
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
où {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.
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.
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.
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.
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.
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.
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.
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.
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.
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.