Nous avons récemment publié une nouvelle version du firmware 3.10 pour tous les membres de notre famille d’imprimantes 3D phare MK3. Il y a beaucoup de choses dont il vaut la peine de parler, à la fois des corrections de bugs et de nouvelles fonctionnalités intéressantes. Cependant, avant d’entrer dans les détails, clarifions d’abord quelque chose. Nous adorerions proposer plein de nouveautés, mais la carte EINSY n’a plus beaucoup de mémoire. Avant même d’ajouter de nouvelles fonctionnalités, nous devons toujours optimiser d’abord les existantes. Cette fois, nous avons réussi à économiser un énorme 5 Ko de mémoire FLASH et près de 400 O de RAM ! C’est plus qu’il n’y paraît – en fait, une taille de mémoire comparable était suffisante pour programmer l’alunissage d’Apollo ! (au fait, ce programme est disponiblesur Github, aussi). Cela signifie que nous avons eu assez de marge de manœuvre cette fois.

Comment économiser de l’espace ? En réécrivant le support de la TWI, par exemple

L’une de nos méthodes préférées pour économiser de l’espace est de réécrire un ancien code dans une forme plus intelligente et plus légère. La meilleure opportunité est lorsque le logiciel n’a plus à faire quelque chose qui est fait au niveau matériel, par exemple, la communication entre la TWI (Two-Wire Interface) et le capteur de filament optique de la MK3. Pour des raisons historiques, nous avions mis en place un support logiciel pour la communication des capteurs optiques. Cependant, maintenant, la TWI basée sur le matériel peut s’en occuper. Même si cela n’affecte que la MK3 originelle (car les modèles ultérieurs ont un capteur de filament différent), le code est plus court pour toutes les versions et libère de l’espace pour de nouvelles fonctionnalités.

Cependant, la réécriture d’une fonctionnalité n’est pas la seule méthode pour économiser de l’espace. Nous avons également examiné en profondeur la liste ASM des fonctionnalités critiques et avons essayé de « motiver » le compilateur pour mieux traduire le code. Parfois, c’était un peu rude : par exemple, avec la fonctionnalité Thumbnail Skipper, le compilateur a résisté à tous nos efforts d’optimisation, nous avons donc dû utiliser de l’assembleur en force brute plutôt.

Alors, quelles sont les nouvelles fonctionnalités pour le coup ? La première d’entre elles a été une demande populaire des utilisateurs depuis un certain temps : afficher le temps restant jusqu’au prochain changement de filament – à la fois en mode manuel et avec la mise à niveau MMU. Vous pouvez désormais planifier à l’avance au lieu de vous fier au bip désespéré de votre imprimante. Nous attendons maintenant les mises à jour de PrusaSlicer (ou d’autres slicers) pour prendre en charge cette fonctionnalité. Elle arrive également bientôt sur l’imprimante MINI.

En ce qui concerne les mises à jour mineures, il y a maintenant une option de préchauffage pour le filament PVB et un support de la buse de 0,8 mm.

Traductions communautaires

Également dans les nouveautés : le firmware prend désormais en charge les traductions faites par la communauté. Nos imprimantes parlent de nombreuses langues, mais jusqu’à présent, nous devions nous occuper nous-mêmes de chaque traduction. Quelles langues parmi plus de 2000 langues dans le monde devrions-nous prioriser, étant donné l’espace mémoire limité ? Une langue occupe environ 12 Ko, par conséquent, nous ne pouvons prendre en charge que 16 langues à la fois. Finalement, nous avons décidé que l’imprimante serait livrée avec un jeu de langues prédéfini et permettrait des traductions communautaires. Cela nous semble juste : tant qu’il y aura des passionnés actifs parlant cette langue, il y aura une traduction disponible. Grâce à 3d-gussner (également auteur du mécanisme de traduction), il existe désormais une version néerlandaise. Vous pouvez trouver le sous-menu « Fait par la communauté » dans l’étape de sélection de la langue, avec Néerlandais comme seule option (jusqu’à présent). Si vous choisissez cette traduction, l’imprimante la copiera dans la FLASH du CPU et redémarrera dans cette langue – la même chose qu’avec toute autre traduction « officielle ». Attention cependant, si vous ne parlez pas néerlandais, vous aurez peut-être du mal à changer la langue 🙂 Nous développons actuellement des outils et des procédures pour les traducteurs de la communauté – restez à l’écoute.

Le processus de lecture de la carte SD a été retravaillé en profondeur, et est maintenant dix fois plus rapide ! La création de la liste de fichiers et son utilisation sont très rapides, qu’il y ait une douzaine ou une centaine d’éléments. Jusqu’à présent, créer de longues listes était un problème. Pour certaines raisons, nous utilisons l’algorithme de tri à bulles, où le tri pouvait prendre jusqu’à 30 secondes. L’algorithme de tri de Shell, choisi parmi plusieurs options, est sensiblement plus rapide, même s’il est plus difficile à mettre en œuvre. Son seul inconvénient majeur est qu’il trie également les dossiers. Nous avons résolu ce problème en exécutant l’algorithme deux fois, pour les dossiers et les fichiers séparément. Pour l’instant, le firmware fonctionne toujours avec le tri à bulles, qui est désormais beaucoup plus rapide grâce au nouveau processus de lecture de la carte SD. Cependant, dès que nous aurons tout bien testé, nous passerons probablement au tri de Shell.

Prise en charge des hôtes d’impression

Autre réponse à la demande générale : un meilleur support de divers logiciels externes, communicant avec l’imprimante via une ligne série (Octoprint, Pronterface ou Repetier-Host), afin que les utilisateurs puissent tout personnaliser à leur guise. Dans ce cas, nous avions aussi l’idée depuis un certain temps déjà mais nous devions attendre de l’espace mémoire disponible.

Par exemple, la fonctionnalité Thumbnail Skipper, la principale source de l’augmentation de la vitesse de lecture de la carte SD. Prusa Slicer génère des vignettes pour la MINI, qui font partie du GCODE. Sur l’écran de la MK3, celles-ci ne s’afficheraient bien sûr pas. Elles n’étaient même pas générés pour éviter des problèmes (même le rejet du firmware par le watchdog) et retarder le démarrage de l’impression. Cependant, un logiciel externe pourrait en fait utiliser ces vignettes, comme une image donne toujours une meilleure idée qu’un simple nom de fichier (souvent plutôt cryptique). Dans Octoprint, il existe déjà des plugins qui rendent les vignettes possibles, nous avons donc eu beaucoup de demandes de la communauté à ce sujet.

Nous avons utilisé le nouveau processus de lecture de la carte SD (augmentant la vitesse presque par dix). Ce processus peut également ignorer les lignes de commentaires dans le GCODE, y compris les vignettes. Un tel changement doit être testé de manière approfondie. Cela semble trivial, mais une refonte substantielle de la section importante du firmware était nécessaire.

Une autre fonctionnalité axée sur la communication avec les plateformes externes est les Actions de l’hôte. Cela signifie une priorité égale pour le contrôle local et distant – pouvoir lancer l’impression à la fois avec le bouton de commande de l’imprimante et avec un logiciel externe, en obtenant la même réponse dans les deux cas. Encore une fois, cela semble trivial, mais c’est quelque chose qui n’était pas prévu au début. Par exemple, il existe une routine d’arrêt du ventilateur pour permettre à l’utilisateur de le nettoyer en cas de dysfonctionnement. Bien sûr, cela n’aurait aucun sens si vous êtes loin de l’imprimante… Nous avons dû repenser et retravailler beaucoup de choses.

Grâce aux Actions de l’hôte, leles morceaux de code chargés de la communication sont désormais réorganisés. Nous espérons que le logiciel externe pourra désormais communiquer plus facilement avec l’imprimante. Cela signifie moins d’interventions de l’utilisateur et plus d’opportunités pour tout personnaliser et affiner pour un flux de travail spécifique. D’ailleurs, c’est une vitrine de l’importance de l’open source, qui permet des ajustements aussi rapides et faciles.

C’est tout. Presque ! Vous pouvez trouver tous les détails moins marquants (mais importants néanmoins) dans les très complètes Notes de version du firmware 3.10. Le soutien de la communauté des développeurs ne consiste pas seulement à distribuer du swag pendant les salons professionnels et les salons des fabricants, mais aussi à disposer d’une documentation parfaite en premier lieu. Nous continuerons à y travailler !

Nous espérons que la prise en charge étendue des hôtes d’imprimante contribuera à faire progresser tous les logiciels externes de contrôle d’imprimante. D’ailleurs, dites-nous quel est votre logiciel préféré et dans quel cadre d’utilisation, afin que nous puissions mieux nous concentrer sur les choses cruciales.

Enfin et surtout, un petit teaser pour les futures versions du firmware : il y aura un « compteur kilométrique », proprement appelé le « menu Maintenance ». Il suivra le kilométrage de chaque moteur pas à pas et informera l’utilisateur de lubrifier les roulements, de vérifier ou de remplacer des pièces, etc. Ceci est important à la fois pour la qualité d’impression et la longévité de votre imprimante. Plus à ce sujet la prochaine fois ! En attendant, si vous avez des idées sur la façon d’améliorer la MK3, veuillez nous le faire savoir dans le fil de discussion dédié de notre forum !

Bonne impression !