Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

J'ai pu terminer mon firmware pour la Prusa I3 Original MK2s, je vous le partage en avant première.

(Il n'y a pas de faute de frappe, je parle bien de la MK2s, cette imprimante est maintenant ancienne mais j'utilise toujours la mienne)

Voici ce que ce nouveau firmware apporte :

  • Prise en charge de la sonde SUPERPINDA
  • Détection de la coupure des câbles des thermistances et mise en sécurité de l'imprimante
  • (optionnel) Sortie pour watchdog externe (cela peut augmenter la sécurité de l'imprimante)
  • (optionnel) Chauffage et régulation de la température de l'enceinte (manuellement, et aussi via GCODE)
  • (optionnel) Sortie pour alarme externe (alarme active en cas d'anomalie, de fin de filament, de changement de couleur dans le GCODE, et à la fin de l'impression)
  • (optionnel) Sortie pour dispositif externe de mise hors tension à la fin de l'impression (si un code M81 est présent dans le GCODE)
  • (optionnel) Capteur de filament

REMARQUES IMPORTANTES :

  • Ce firmware n'est pas compatible avec le MMU1
  • Ce firmware n'est pas compatible avec la PINDA V2
  • Je n'ai fait le test que sur mon imprimante, équipée de la carte RAMBo1.3a ; je ne sais pas s'il fonctionne avec une RAMBo1.0
  • Le firmware pourrait fonctionner avec la PINDA V1 mais il faudra ajuster le live Z en fonction de la température (j'ai désactivé la compensation thermique, qui de toute façon fonctionnait mal)
  • Le GCODE M81 n'arrête pas une impression en cours ; il demande à l'imprimante de mettre à l'état bas la sortie pour autoextinction une fois l'impression terminée et une fois la buse refroidie - attention donc si vous pilotez l'imprimante en USB, utilisez un autre GCODE pour stopper l'impression
  • L'inévitable DISCLAMINER : impossible de garantir l'absence de bug... à utiliser à vos risques et périls ☠️

Autres remarques :

  • J'ai modifié un peu les menus, pour que ce soit plus pratique (réglage des températures plus rapide à faire notamment)
  • Il n'y a plus qu'une seule langue : l'anglais (il fallait économiser de la mémoire)
  • Dans le code source, pour trouver facilement les parties modifiées, faires une recherche de "MK2s+" et "MK2sP" - je recommande l'utilisation de NotePad++
  • L'imprimante continuera d'accepter les GCODE faits pour une Prusa I3 Original MK2s non modifiée

 

Avant de le publier, je dois corriger quelques petits bugs d'affichage (ils ne sont pas gênants) et aussi sous-titrer la vidéo en anglais.

 

Voici une vidéo de démonstration, qui explique les différentes fonctionnalités apportées par ce firmware :

 

Voici le câblage correspondant

Quelques compétences en électronique à papa sont requises pour les fonctionnalités optionnelles - il faudra aussi savoir un peu bricoler pour vous construire une enceinte chauffée ... et bien sûr ... attention avec le 230V ☠️

image.thumb.jpeg.8d5f3c7fb9b3f5fd4ffd0b537e85a9e5.jpeg

 

image.thumb.jpeg.001e6592130156d8a5977a91311c0173.jpeg

Ce câblage n'est qu'un exemple, vous pouvez faire autrement bien sûr !

 

Voici un lien pour télécharger le firmware (fichier HEX et codes sources) :

https://drive.google.com/file/d/1PGWc6Igs-LtLAZPDZL3BDsNkjzgGb0Gd/view?usp=sharing

 

Pour tirer partit des nouvelles fonctionnalités de ce nouveau firmware (chauffage de l'enceinte et autoextinction), vous devez modifier le GCODE PERSONNALISE de votre MK2s dans Prusa Slicer  comme suit :

GCODE de début :

M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.2.3 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
M204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M191 S{chamber_minimal_temperature[initial_tool]} ; wait for minimal chamber temp
M141 S{chamber_temperature[initial_tool]} ; set nominal chamber temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G1 Z0.2 F720
G1 Y-2 F1000 ; go outside print area
G92 E0
G1 X60 E9 F1000 ; intro line
G1 X100 E12.5 F1000 ; intro line
G92 E0

GCODE de fin :

{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}
G1 X125 Y200 F3600 ; park X125 au lieu de X0
{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}
G4 ; wait
M104 S0 ; turn off temperature
M140 S0 ; turn off heatbed
M141 S0 ; turn off chamber heating
M107 ; turn off fan
M900 K0 ; reset LA
M84 ; disable motors
M81 ; turn off printer after print and cooldown

 

A bientôt !

  • Merci ! 1
Posté(e)
Il y a 1 heure, pjtlivjy a dit :

👍 j'ai toujours la mienne dans un coin 😉

Redonnes lui une seconde vie alors 🥰

Certes les imprimantes plus récentes sont plus rapides, mais une MK2s reste pertinente aujourd'hui pour imprimer du TPU par exemple

Si elle prend la poussière, pourquoi pas la donner à un maker désargenté ou une association. Je suis passionné de sciences et techniques depuis mon entrée au collège, mais j'aurais jamais eu les moyens de me payer une imprimante 3D même quand j'étais étudiant. 

Posté(e)

elle est à l'abri de la poussière et je la maintiens fonctionnelle, je fais les mises à jour. Si tu savais @electroremy tout le matériel que j'ai pu donner 🙄

  • J'aime 1
Posté(e)

Si tu veux aller au bout, tu peux forker le dépôt git original et publier tes modifications là. 😉

Avantage : ça permet très simplement de découper les modifications en commits, et simplifie énormément la revue de code pour ceux qui veulent s'assurer qu'un firmware non officiel ne va pas casser leur imprimante.

Posté(e)

Ce serait dommage d'euthanasier électroniquement ces vieilles dames.

Posté(e) (modifié)
Il y a 15 heures, Kachidoki a dit :

Si tu veux aller au bout, tu peux forker le dépôt git original et publier tes modifications là. 😉

Avantage : ça permet très simplement de découper les modifications en commits, et simplifie énormément la revue de code pour ceux qui veulent s'assurer qu'un firmware non officiel ne va pas casser leur imprimante.

Faudra que je vois comment faire

Il faudra bien séparer chaque fonctionnalité pour permettre un choix "à la carte"

Le gros soucis c'est qu'avec l'IDE Arduino, même le code du firmware original aboutissait à un .HEX trop gros. Prusa l'a compilé autrement pour ça rentre pile.

Du coup j'ai supprimé les langues autres que l'anglais pour ça passe, mais ça rend le fork plus compliqué à mettre en place.

Idéalement, il aurait fallu choisir une seul autre langue en plus de l'anglais avec des #include, ce qui permet à la fois à chaque personne d'avoir sa langue, de conserver l'anglais pour le dépannage, et d'avoir de nouvelles fonctionnalités.

Modifié (le) par electroremy
  • 5 weeks later...
Posté(e) (modifié)

Bonjour à tous,

J'ai bien avancé sur ce projet

Voici une nouvelle version plus aboutie :

- gestion du chauffage actif et aussi du refroidissement actif de l'enceinte, avec deux niveaux de puissance

- possibilité d'activer une alarme à la fin du préchauffage (manuel, ou à l'impression avec une pause)

- possibilité d'activer une alarme et/ou l'exctintion automatique à la fin de l'impression

- deux niveaux d'alarmes (défaillance ou information)

- il n'y a plus aucun de GCODE spécifique à mon firmware (hormis ceux pour la température de la chambre, mais qui sont les mêmes que pour la Core One et les autres imprimantes en caisson chauffées) - cela permet notamment de choisir d'activer ou pas les alarmes et l'extinction automatique depuis l'imprimante, avant ou pendant l'impression, sans devoir refaire le fichier CGODE

- plus de paramètres dans les menus, avec sauvegarde en EEPROM

- les paramètres permettent de s'adapter à la façon dont les options seront câblées (broches actives à l'état haut ou bas, clignotement ou pas de la broche pour l'alarme externe ...)

- écran d'accueil comportant plus d'informations, avec des icônes

- petits bugs du firmware original corrigés affichage, fonction M117

- lors du changement manuel de filament par GCODE M600, l'imprimante demande de presser le bouton avant de décharger le filament, ce qui évite de faire un noeud dans la bobine

- ...

Je vais finaliser la modification physique de l'imprimante et de l'enceinte avant de publier le firmware et de rendre la vidéo publique (je découvrirais peut être des petits bugs à corriger d'ici là)

A bientôt

Modifié (le) par electroremy
  • J'aime 1
  • Merci ! 1
  • 2 weeks later...
Posté(e)
Le 02/08/2025 at 17:25, electroremy a dit :

Voici une nouvelle version plus aboutie :

- gestion du chauffage actif et aussi du refroidissement actif de l'enceinte, avec deux niveaux de puissance

- possibilité d'activer une alarme à la fin du préchauffage (manuel, ou à l'impression avec une pause)

- possibilité d'activer une alarme et/ou l'exctintion automatique à la fin de l'impression

là tu commences à m'intéresser très sérieusement 😉

mais pourquoi Prusa n'a t il pas fait une évolution dans ce sens, très ouverte permettant tellement de chose

tu vas m'obliger à ressortir ma MK2S de son stockage 👍

  • Merci ! 1
Posté(e)
Il y a 4 heures, pjtlivjy a dit :

là tu commences à m'intéresser très sérieusement 😉

mais pourquoi Prusa n'a t il pas fait une évolution dans ce sens, très ouverte permettant tellement de chose

tu vas m'obliger à ressortir ma MK2S de son stockage 👍

Je dois maintenant réaliser le câblage définitif, et équiper mon caisson des ventilateurs de refroidissement, mais je suis un peu occupé ailleurs en ce moment...

A noter que pour faire cette mise à jour, j'ai du effacer les langues autres que l'anglais (de toutes façon il n'y a pas le français dans les langues qui étaient disponibles)

Prusa a arrêté les mises à jour de la MK2s, car ils sont passés ensuite à une autre version de MARLIN pour les imprimantes suivantes. Il y a donc eu une "rupture" technologique juste après la MK2s, pas de bol. Du coup c'est bien car mon travail aurait un petit intérêt.

J'ai déjà fait une version de ma vidéo avec des sous-titres en anglais, mais j'attend avant de tout publier d'avoir terminé l'imprimante et réalisé quelques pièces avec, car je découvrirait peut-être d'autres bugs. (La vidéo que l'on peut voir sur le forum est "non répertoriée" sur Youtube)

Au passage, j'ai été très touché que l'on parle de mon firmware dans "Une semaine d'impression 3D", qui plus est, la 500e édition 🥰

Ca me met un peut la pression pour tout terminer et tester au maximum 😁

  • 2 months later...
Posté(e)

Bonjour,

Les tests et les modifications de l'imprimante sont terminées

Le résultat est présentée en détail sur ce post :

 

A bientôt

  • Merci ! 1
  • 1 month later...
  • 3 weeks later...
Posté(e) (modifié)

Bonjour,

 

Petite mise à jour du firmware pour permettre un cold pull, la température de la buse est réglable sur les valeurs suivantes :

- 0°

- 75° à 175°C par pas de 5°C

- 180°C et plus par pas de 1°C

Concrètement, lorsque la température est à 0°C, quand on tourne le bouton on passe directement à 75°C et ensuite la température augmente de 5°C à chaque cran, puis une fois 180°C atteint, elle augmente de 1°C par cran. Idem en sens inverse, la température baisse de 1°C par cran jusque 180°C puis ensuite de 5°C par cran jusque 75°C pour ensuite passer directement à 0°C.

 

La sécurité suivante est inchangée : si dans un fichier GCODE, la température de la buse pour une impression est définie à une valeur inférieure à 180°C, une erreur avec l'alarme se déclenche ; l'imprimante proposer de continuer avec une température de 180°C ou de faire un reset.

 

Le firmware peut être téléchargé ici (il faudra téléverser le fichier \Prusa-Firmware-3.2.3_V21\Firmware\Firmware.ino.rambo.hex avec PrusaSlicer)

https://drive.google.com/file/d/145ZriQaOqmTB5HvawsoLqUVb58-flieK/view?usp=sharing

 

 

A bientôt

Modifié (le) par electroremy
Posté(e) (modifié)

C'est dommage de ne pas pousser tes évolutions sur un dépôt git.

Ca permettrait d'avoir l'historique, d'isoler les nouvelles fonctions par commit et ça facilite les reviews (un commit = une intention).

Là par exemple j'étais curieux de voir comment tu avais implémenté la machine d'états pour les plages de température, mais j'ai abandonné car c'est trop de boulot en 2026 d'aller télécharger un zip, le décompresser, puis fouiller le code pour retrouver l'endroit de la modif sans connaitre l'état précédent du code (je passe l'étape d'installer un IDE hors d'age). 😶 Normalement on ouvre un dépôt git et on tombe sur le dernier commit qui montre le diff directement.

Ca permet aussi de travailler sur des branches pour bosser en même temps sur plusieurs fonctions sans les casser entre elles. Bien entendu ça permet aussi de facilement de revenir en arrière sur ton travail si t'as fait une bêtise, que plus rien de fonctionne ou que tu ne sais plus quel ligne tu as commenté pour le test de la nuit dernière.

Bref, un vrai outil de versioning de code. 🙂

Fais toi quelques tutos sur git + VSCode ça t'aidera beaucoup dans tes projets (pas que pour le codage). En bonus je te suggère Git Extensions pour Windows, une manière d'utiliser git tout en GUI. VSCode le fait très bien pour un usage quotidien mais toutes les commandes avancées ne sont pas disponible.

EDIT: Ah bah en fait je t'avais déjà suggéré de forker le dépôt original. Comme quoi c'est toujours d'actualité. 😁

Modifié (le) par Kachidoki
Posté(e) (modifié)
Il y a 1 heure, Kachidoki a dit :

C'est dommage de ne pas pousser tes évolutions sur un dépôt git.

J'avais regardé...

...et j'ai laissé tombé 😁

Voici le contexte :

Le manque de temps, et ce projet en a pris BEAUCOUP plus que prévu à l'origine, c'était seulement une petite modif pour pouvoir utiliser une sonde SUPERPINDA, mais a fur et à mesure j'ai ajouté beaucoup de choses 😁

J'ai travaillé en utilisant 3 ordinateurs différents :

- un PC fixe sous Windows 7, qui n'est plus compatible avec les nouvelles versions de pas mal de logiciels

- un PC portable sous Windows 10

- un autre PC portable sous Windows 10 que j'utilise en déplacement mais dont je ne suis pas administrateur, je ne peux utiliser que des logiciels portables avec.

Ce projet m'a obligé à apprendre beaucoup de choses nouvelles en même temps :

des subtilitées du langage C/C++ que je ne connaissais pas, et le code en regorge (même sur le forum developpez.com ils ont été surpris de voir la taille et l'imbrication des macros, c'est à la limite de l'obfusaction)

- tout le code existant Marlin modifié à la sauce Prusa, la doc est très minimaliste et pas à jour sur les dernières modifs, j'ai du faire beaucoup de reverse engineering

- idem pour la partie hardware électronique et mécanique de l'imprimante

- j'en ai bavé aussi pour simplement recompiler le firmware et le flasher, souviens-toi à un moment j'avais même cru avoir écrasé le bootloader et en fait c'était juste le programme qui était à la limite de la taille maxi, mais les messages d'erreur n'étaient pas explicites, ça m'a pris du temps de découvrir que c'était la taille qui était en cause ; Prusa a exploité la carte Rambo pas loin du maximum de ses limites, d'où l'usage d'un IDE obsolète, il faut dire que l'imprimante date de 2017 aussi

Souvent, je me suis retrouvé bloqué à plusieurs niveaux en même temps, c'est à dire empêché de faire un truc à cause d'un aspect du C/C++ que je maîtrisais mal, mais avec en plus un bug dans le code d'origine que je ne comprennais pas, et une limite dans le hardware à contourner...

Maitriser en plus Git, que je ne connais pas du tout, ça aurait fait débordé le vase 😅 J'ai une formation initiale de programmeur dans mon cursus qui date des années 1998 à 2003, mais ce n'est pas mon métier. Je n'ai jamais travaillé en équipe pour dévelloper un logiciel. Je ne connais pas les bonnes et mauvaises pratiques.

Ca n'a pas l'air comme ça mais c'est un gros projet, à plusieurs moments j'ai bien cru que je n'irais pas au bout. 

Du coup il faut poser des limites ou renoncer à des choses pour que la ligne d'arrivée soit atteignable 😉 C'est quelque chose que j'ai du mal à faire, j'ai énormément de choses inachevées chez moi, là je suis vraiement satisfait d'avoir TERMINE ce projet 🤣

Révélation

En fait ce n'est pas terminé : Il me reste encore à faire :

- le fameux Arduino auxiliaire pour gérer les sondes de températures supplémentaires

- les capots supérieur et arrière du boîtier

- les reports d'alarme dans chaque pièce (j'ai juste bricolé une espece de bâton sonore et lumineux au bout d'un long fil)

- a tout réinstaller dans l'atelier (l'imprimante est dans mon bureau, normalement elle n'a rien à faire là)

- à voir pour remplacer le support de bobine par un boitier étanche avec séchage ou pas

- la traduction de l'article en anglais

Bref, pas mal d'heures de travail en perspective alors que j'ai plein d'autres trucs et réparations plus ou moins urgentes à faire ailleurs chez moi 😅

Après si quelqu'un d'autre veux reprendre mon code en le faisant avec le dépôt Git il peut le faire 😉

Modifié (le) par electroremy
Posté(e)
il y a 22 minutes, electroremy a dit :

Voici le contexte :

Le manque de temps

Parlons en, je suis partisan de mettre en place tout moyen qui permet de se faciliter la vie. Je préfère écrire un script pour une tache bien précise plutôt que d'effectuer cette tache à la main 3 fois (ou plus, qui sait ?). Alors certes parfois il arrive que la création de l'outil lui-même (s'applique à tous les domaines) prenne plus de temps que prévu pour peu d'utilisation derrière, mais au global sur le nombre de fois où l'utilisation de cette méthode nous fait gagner un temps monstre parce qu'utilisée des dizaines de fois, c'est bénéfique. A force de fonctionner comme ça, la création de nouveaux outils devient de plus en plus simple et rapide car on sait où se concentrer. C'est un peu comme en C, si un bout de code identique existe plusieurs fois, même seulement deux fois, on va coder une fonction pour le factoriser.

Exemple simple A l'époque du confinement et des impressions de visières, au début j'imprimais les visières deux par deux et je me levais toutes les trois heures pour lancer la fournée suivante. Très vite j'ai cherché un moyen d'empiler les visières pour les imprimer par 10 et pouvoir faire de vraies nuits. 🙂 

 

il y a 22 minutes, electroremy a dit :

J'ai travaillé en utilisant 3 ordinateurs différents

C'est déjà un peu comme si tu travaillais en équipe. 😁 C'est une des forces de git, tu peux passer d'une machine à l'autre d'un simple "commit et push" d'un côté et "pull" de l'autre côté. Je pense que ça t'aurait déjà fait économiser pas mal de temps. Git et GitExtensions sont utilisables en mode application portable. 😉

 

il y a 36 minutes, electroremy a dit :

tout le code existant Marlin modifié à la sauce Prusa, la doc est très minimaliste et pas à jour sur les dernières modifs, j'ai du faire beaucoup de reverse engineering

Là aussi, tu trouves généralement les raisons des modifications dans les messages de commit. Les éditeurs modernes peuvent faire un "blame" automatique, lorsque tu sélectionne une ligne de code tu peux tout de suite voir le commit associé et son commentaire, et même remonter dans l'historique de la ligne de code en question. Ca aide beaucoup à trouver de l'info et ça va très vite.

Rien ne t'empêche d'utiliser un IDE moderne pour naviguer / coder, et de lancer les compilations dans le vieil éditeur à côté. C'est une pratique très courante dans l'industrie où les fabricants de microcontrôleurs et de compilateurs y vont chacun de leurs propres IDE. J'en connais qui codent dans Notepad++ et qui compilent en lançant un .bat. Ca c'est juste bon à faire un "Hello, World!". 🤪

 

il y a 22 minutes, electroremy a dit :

là je suis vraiement satisfait d'avoir TERMINE ce projet 🤣

C'est le moment d'investir du temps dans la découverte de git. 🙃 Pas besoin de grand chose pour une utilisation simple, tu peux même fonctionner entièrement en local. Et même tu peux faire du git sans git, en uploadant directement tes fichiers modifiés sur github.

Tu serais surpris de voir comment ça peut être utilisé pour autre chose que du codage. Snapshots, backup incrémental, documentation, versionner les fichiers de configs de ton infra, tes logiciels ou ta domotique. Tu peux même t'en servir pour historiser des retouches d'une photo sur de gros projets chronophages. Ce n'est plus vraiment git, mais j'ai déjà détourné un dépôt pour utiliser les issues afin de pouvoir faire le suivi d'un micro-projet (quelques dizaines de tickets) qui n'avait absolument rien à voir avec l'informatique. 🫣

 

En tout cas chapeau d'avoir réussi à faire toutes ces évolutions "à l'ancienne", je comprends que tu aies failli abandonner. Avec un peu de détermination tu devrais réussir à maitriser les outils modernes (git est sorti en 2005) sans trop de difficulté. 😆

  • J'aime 1

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
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...