Aller au contenu

Filament ABS

[TUTO] Firmware personnalisé Wanhao D12 - comment compiler son firmware


Jonathan06

Messages recommandés

Tout d'abord, un petit message d'avertissement;

Je tiens à préciser que tout flashage comporte une part de risque. Le flashage est réservé aux personnes averties avec un minimum de compétences en informatique.

Je décline toute responsabilité quant aux conséquences possibles de la procédure décrite ci-dessous.

Tout d'abord pourquoi compiler sa version de firmware?

Ce tuto est destiné à ceux qui veulent personnaliser leur Firmware et activer certaines fonctionnalités.

Ce firmware constitue un bon point de départ. Sans les trois fichiers ci-dessous, toute modification du firmware est impossible. Contrairement à pas mal de machines, on ne trouve pas ces fichiers sur le web. L'élaboration de ces trois fichiers nous a pris un certain temps. Une fois ces fichiers élaborés, apporter des modifications reste relativement facile et accessible.

De quoi avons nous besoin pour compiler le firmware?

  • Installer un environnement de développement
  • Trois fichiers spécifiques à la carte mère et à la configuration matérielle de la Wanhao D12: "Configuration_adv.h, Configuration.h, platformio.ini"

Comment utiliser ces fichiers?

Un magnifique tutoriel a été rédigé par @cidrixx, ce tutoriel se trouve à la suite de ce post.

Que contient cette version?

Ce firmware a été compilé pour la version d'origine Wanhao D12 avec deux TMC2209 pour X et Y et A4988 pour les Z, E1 et E2. c'est une version sans BLTouch.

Cette version a été compilée essentiellement pour pouvoir disposer du GCode M600 et pouvoir programmer l'arrêt d'une impression, remplacer le filament, et poursuivre l'impression avec une autre couleur par exemple.

Non le GCode M600 n'est pas activé sur le firmware d'origine. Et il ne pouvait pas être activé car cette commande est incompatible avec l'affichage graphique utilisé par la D12.

En effet, la D12 utilise l'affichage dit "TFT_LVGL_UI" pour pouvoir activer le M600 il faut passer sur l'affichage plus traditionnel TFT_COLOR_UI. Ce dernier permet plus de possibilités même s'il peut paraitre moins moderne.

Ci-dessous un visuel du type d'affichage TFT_COLOR_UI :

169023022_225285986048899_7339700870507200144_n.jpg.351af283d7c9b4e3a1ab28d1504a326a.jpg

Que faire une fois le nouveau custom firmware flashé?

Les paramètres par défaut seront reflashés, il vous faudra donc, si vous les avez modifiés, remettre vos valeurs personnalisées. 

Si vous avez effectué un recalibrage de l'axe X, Y, Z, E1 ou E2 il vous faudra remettre les valeurs que vous avez trouvées. Ces valeurs seront accessibles directement via les menus de l'imprimante D12 ou avec les commandes GCode appropriées.

Le LinearAdvance a été activé et initialisé à la valeur zéro. Il sera donc inactif tant que vous n'avez pas initialisé dans votre start gcode le K-factor avec la commande "M900 Kx.xx".

Pour trouver la bonne valeur de K à mettre, je vous invite à suivre un de ces tutos:

https://teachingtechyt.github.io/calibration.html#linadv 

 https://marlinfw.org/docs/features/lin_advance.html

Et si on voulait garder l'affichage graphique d'origine?

Tout d'abord une précision pour commenter une ligne de code, il suffit de rajouter au début de celle-ci un double slash comme ceci: //

Pour décommenter une ligne de code, il faut supprimer le double slash.

Si vous voulez garder l'affichage d'origine et sacrifier le M600 et récupérer le Wifi, rien de plus simple.

Il faut ouvrir le fichier "configuration.h",  commenter #define TFT_COLOR_UI et décommenter #define TFT_LVGL_UI ce qui donnerait ceci:

//#define TFT_COLOR_UI
#define TFT_LVGL_UI

Puis ouvrir le fichier "Configuraton_adv.h" et désactiver le M600 en commentant la ligne #define ADVANCED_PAUSE_FEATURE

Avec le type d'affichage graphique d'origine "TFT_LVGL_UI" vous aurez ces icones là:

image.png.fbb5dd6567d28410a6ee7665801b6a7e.png

Remerciements:

Je n'oublierais pas de remercier toutes les personnes qui ont contribuées à la création et aux tests de cette version de firmware, je pense notamment à @remibora et @fmelle.

Pièces jointes:

Ci dessous vous trouverez les fichiers nécessaires pour compiler ce firmware:

Configuration_adv.h

Configuration.h

platformio.ini

Le tuto d'utilisation de ces fichiers se trouve dans le post qui suit.

 

[EDIT 27/07/2021]

Bonjour chers amis,

Avec la dernière version de Marlin  V2.0.9.1, les fichiers de configurations donnés au dessus ne sont plus compatibles et le firmware ne se compile plus avec.

Je vous mets donc ici les nouveaux fichiers compatibles avec la dernière version de Marlin pour notre D12:

Marlin compatible:

https://github.com/MarlinFirmware/Marlin/tree/2.0.9.1

Fichiers de config à utiliser pour une D12 Mono:

Configuration_adv.hplatformio.iniConfiguration.h

 

[EDIT 01/08/2021]

Fichiers de config à utiliser pour une D12 Dual:

Configuration_adv.hConfiguration.hplatformio.ini

 

Enjoy 😉

Modifié (le) par Jonathan06
  • J'aime 3
Lien vers le commentaire
Partager sur d’autres sites

  • Jonathan06 changed the title to [TUTO] Firmware personnalisé Wanhao D12 - comment compiler son firmware
  • fran6p pinned et featured this topic

Tout d'abord, je remercie 1000 fois @Jonathan06 de m'avoir fourni les fichiers nécessaires, mais surtout d'avoir pris le temps de tout m'expliquer sur la méthode (et même plus).

Ce que j'ai dû faire :

  1. Installation de Microsoft Visual Studio Code (je l'avais déjà, ça tombait bien 🙂)
  2. Dans VSCode : Installer les modules complémentaires "PlatformIO" et "Auto Build Marlin"
  3. Télécharger les sources du firmware "Mks-Robin-Nano-Marlin2.0"
    • Pour cette étape, j'avais pris les mauvaise sources au départ
    • Heureusement, @Jonathan06 m'a envoyé le lien pour récupérer la bonne version
    • voici le lien utilisé https://github.com/makerbase-mks/Mks-Robin-Nano-Marlin2.0-Firmware
    • Si vous ne savez pas comment télécharger l'ensemble du dossier, vous cliquez sur le bouton "Code" en haut à droite de la liste de fichiers, puis sur "Download ZIP"
  4. Récupérer des versions personnalisées des fichiers "platformio.ini", "Configuration.h" et "Configuration_adv.h"
    • Normalement, ça aurait dû être à moi de personnaliser ces fichiers pour les adapter à mon matériel
    • Mais @Jonathan06 les avait déjà préparés pour moi et me les a fournis
  5. Ensuite, préparer tous les fichiers pour la compilation :
    • Décompresser les sources du firmware Marlin dans un dossier
    • Remplacer le fichier platformio.ini de ce dossier par la version personnalisée
    • Dans le sous-dossier "Marlin", remplacer les 2 fichiers Configuration.h et Configuration_adv.h par les versions personnalisées
  6. Il faut maintenant aller dans VSCode pour compiler tout ça (Les manips peuvent un peu changer en fonction de votre OS, moi je suis sous MacOS) :
    • Double-cliquer platformIO.ini pour qu'il s'ouvre sous VSCode (sinon, aller le chercher à la main dans le logiciel)
    • Une fois dans VSCode, cliquer à gauche sur l'icône permettant d'ouvrir l'emplacement des fichiers sources 1104231571_Capturedecran2021-04-06a23_51_45.png.03c6c873e47e389ff6fb60bb930f18c0.png
    • Ensuite, cliquer sur "Open Folder" pour confirmer l'emplacement des fichiers sources
    • Et là, normalement PIO Home doit s'ouvrir dans VSCode
  7. Etape suivante, lancer "Auto Build Marlin" grâce à l'icône qui doit être présente dans la barre latérale
  8. Clic sur "Show ABM Panel"
    • Une fenêtre ressemblant à ça doit s'afficher 379912720_Capturedecran2021-04-07a00_10_00.png.af3a69e2fa50e2b20dd2e3aa6e859b77.png
  9. Dernière étape pour la compilation : Cliquer sur le bouton "Build" (visible dans la capture juste au dessus)
    • A noter qu'il se peut que ça échoue la toute première fois, mais il suffit de relancer et ça doit passer à la deuxième tentative

Maintenant que le firmware est compilé, il suffit de prendre le fichier "Robin_nano35.bin" et le dossier "assets" qui ont été créés dans le sous-dossier ".pio/build/mks_robin_nano35" (en tout cas, c'est l'emplacement que j'ai sur Mac) et de les copier sur la sdcard pour flasher sa machine.

A noter que je n'avais pas le dossier "assets", et donc @Jonathan06 est venu à mon secours en me fournissant une copie du sien (ce dossier est le même quelques soient les personnalisations apportées au firmware).

Ce dossier étant toujours le même, je peux vous le partager assets.zip

J'ai maintenant le menu "d'origine" du firmware Marlin, donc sans toute la partie graphique, mais avec toutes les options permettant de contrôler son imprimante correctement.

Dernière remarque, lorsque l'on bascule sur cette version de l'interface, le module WiFi n'est plus actif.

Mais perso, ça ne me dérange vraiment pas.

Voici un test réalisé ce soir grâce aux scripts "Filament Change" de CURA qui se basent effectivement sur le code M600 :

IMG_5097.thumb.jpg.68efac6a8083e3a790477e14c7ed088d.jpg

  • Couches 1 à 5 : filament noir
  • couches 6 & 7 : filament rouge
  • couches 8 à 10 : filament noir
Modifié (le) par cidrixx
  • J'aime 2
  • +1 1
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

Posté(e) (modifié)
Il y a 7 heures, chacha007 a dit :

Merci à tous pour vos efforts, cette version apporte elle d'autres améliorations que de pouvoir disposer du GCode M600 ?

Oui ca apporte en plus la possibilité d'utiliser le LinearAdvance, et ca donne l'accès a pas mal de réglages directement via l'écran TFT, par contre on n'a plus la possibilité d'utiliser le Wifi car incompatible avec ce type d'affichage.

Et puis surtout ca donne la possibilité pour ceux qui savent recompiler le firmware de le modifier à leurs guise. C'est un bon point de départ pour toute autre personnalisation.

Modifié (le) par Jonathan06
  • J'aime 1
  • +1 1
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

super, ca marche

j'ai réussi à reflasher mon imprimante qui était bloquée sur le "booting", sans moyen de flasher via la carte SD (suite à un flash qui s'était mal passé).

du coup j'en ai profité pour flasher via st-link et le firmware compilé (avec le "upload" de Auto Build Marlin. Il suffit ensuite de reflasher le bootloader et c'est bon
(voir sur https://blog.cyril.by/fr/3d-printers/mks-robin-nano35-advanced-debugging )

 

en fait ca marche, mais j'avais un soucis avec la carte SD après le flashage d'un firmware custom marlin2.0. A chaque fois que j'insèrais la carte SD, j'avais le message "SD INIT FAILED". Impossible de lire quoi que ce soit dessus. Meme avec d'autres cartes SD de bonne qualité

Pour résoudre le problème

--> modifier le fichier Configuration_adv.h, et activer la ligne (1199 chez moi)

#define SD_SPI_SPEED SPI_HALF_SPEED

 

et tout fonctionne

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

Super, merci pour ce retour d'expérience de ta part.

Pourrais tu dire ici comment tu as pu reflasher avec st-link , et comment remettre le bootloader? ou peut être juste un lien qui t'aurais aider a faire cette opération?

Merci

Lien vers le commentaire
Partager sur d’autres sites

pour flasher avec le st-link, il faut avoir accès aux pins SWDIO, SWCLK, 3,3V et GND. elles sont justement dispo sur la carte mère, à coté du stm32

image.png.de2105550961733fcedfa99c9790e958.png

 

petit voltmère pour vérifier les pins (le mode "beep" en positionant sur les pins du header et sur les pins du chip) permet de vérifier l'ordre des pins. c'est le même que sur la nano v3 (et c'est indiqué sur la carte mère)

image.png.a0055fcfbe371941b289fb0cffcb8d9a.png

il faut brancher le stlink sur ces pins, en fonction de votre module stlink (voir les pinout qui vont bien). En branchant le stlink au pc, la carte mère devrait s'allumer.


Ensuite il faut modifier la partie "[env:mks_robin_nano35]" dans le fichier platform.io  (ligne 958) :

 

[env:mks_robin_nano35]
platform        = ${common_stm32f1.platform}
extends         = common_stm32f1
board           = genericSTM32F103VE
extra_scripts   = ${common.extra_scripts}
  buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
build_flags     = ${common_stm32f1.build_flags}
  -DMCU_STM32F103VE -DSS_TIMER=4
debug_tool      = stlink
upload_protocol = stlink
platform_packages =  tool-openocd

il faut mettre stlink dans upload_protocol et debug_tool (si on veut débugger avec un bootloader non verrouillé)

et rajouter tool-openocd dans "platform_packges"

on compile et on upload via le auto build marlin (build puis upload)

 

 

 

pour le bootloader, c'est en gros ce qui est indiqué sur le site : https://blog.cyril.by/fr/3d-printers/mks-robin-nano35-advanced-debugging
pour résumé :
- télécharger le bootlader
- ouvrir une session openocd et laisser en fond

 

~/.platformio/packages/tool-openocd/bin/openocd -d2 -s ~/.platformio/packages/tool-openocd/scripts -f interface/stlink.cfg -f target/stm32f1x.cfg -c "reset_config none separate"


- ouvrir gdb :
 

~/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gdb "le_repertoire_ou_on_compile_marlin_firmware/.pio/build/mks_robin_nano35/firmware.elf"

- lancer les commandes :
 

tar ext:3333
monitor program /lefichierbootloader/BOOTLOADER.BIN 0x8000000
monitor reset run

(d'abord déverrouiller le bootloader si nécessaire)
 

 

par contre si quelqu'un sait m'expliquer comment je peux faire pour réactiver le flash juste avec une carte SD ... je suis preneur 
ou m'envoyer le bootloader original. le mien était niqué suite à une coupure de courant lors d'un flash. je n'arrivais plus à flasher avec une carte SD, obligé de trouver une parade avec le st-link. c'est pas pratique mais au moins ca fonctionne ...

Modifié (le) par pîtouze
  • J'aime 1
  • Wow 1
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

Merci pour se super sujet.

Cela dit j'ai quelques questions au experts ^^.

Je souhaite customiser ce firmware pour la d12/300 et j'ai un doute sur la valeur "#define X_MAX_POS 256   // WD12 X_BED_SIZE"

La D12/230 a un bed de 235, donc pourquoi 256, est ce que cela correspond a la totalité de la longueur de déplacement possible sur l'axe z ?

Si vous avez une idée de comment mesurer précisément cette valeur pour que je puisse l'adapter a la D12/300 ^^.

 

Autre question, je configure le firmware pour avoir un mesh bed level en 25 points, ce qui est incompatible avec #define TFT_COLOR_UI.

Mon but serai d'avoir le mesh + le wifi (qui lui nécessite apparemment le #define TFT_COLOR_UI).

Possible ou pas ?

Merci encore

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, 

Pourquoi 256 car chez moi le déplacement du X peut aller jusqu'à cette position. Pour le mesurer, tu fais un home puis tu fais déplacer la tête petit à petit via le menu et lire la valeur quand tu arrives au bout. Pourquoi faire cela ? Pour pouvoir palper le côté droit du bed car le bltouch est à gauche de la tête, ça permet de déplacer la tête à l'extérieur du bed pour pouvoir palper le bord droit du bed. 

Désolé le mode TFT_COLOR_UI n'est pas compatible wifi. 

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

il y a 54 minutes, Satsuki_yatoshi a dit :

Parfait donc en théorie sans bl touch si je met 310 (taille du plateau) je suis ok ?

Je mesurerai, merci de cette astuce ^^

Si tu n'as pas de BLT tu n'as aucun intérêt de l'augmenter car de toute façon tu ne vas pas imprimer dans le vide 😉

Lien vers le commentaire
Partager sur d’autres sites

Parfait merci encore.

Une dernière question, je viens de remplacer les drivers extrudeurs par des TMC avec la config firmware qui va bien dans le fichier config (celui du firmware stock pour le moment + config des driver TMC dedans)
QID du Vref ? est il obligatoire de l'adapter ? dangereux de ne pas le faire ... j'ai lu un peu de tout et son contraire là dessus ^^'

Merci encore

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

Il y a 17 heures, Satsuki_yatoshi a dit :

Parfait merci encore.

Une dernière question, je viens de remplacer les drivers extrudeurs par des TMC avec la config firmware qui va bien dans le fichier config (celui du firmware stock pour le moment + config des driver TMC dedans)
QID du Vref ? est il obligatoire de l'adapter ? dangereux de ne pas le faire ... j'ai lu un peu de tout et son contraire là dessus ^^'

Merci encore

Absolument, il faut régler la Vref, sinon attention danger. Le Vref est à régler en fonction de ton moteur. Quand tu le reçoit il peut y avoir n'importe quelle valeur de Vref, et s'il est trop haut, tu pourrais très vite cramer ton Driver!

Tiens voici une vidéo qui peut t'aider: 

Lien vers le commentaire
Partager sur d’autres sites

Parfait merci.

J'ai lus que sur les TMC 2209 ont pouvait gérer cette valeur dans le firmware plutot que de faire manuellement sur le driver, mais j'ai un peu du mal a voir le principe, si vous avez une idée ^^

Sinon pour le wifi c'est possible de l'utiliser grâce a ça à priori https://github.com/luc-github/ESP3D/discussions/565

Lien vers le commentaire
Partager sur d’autres sites

Posté(e) (modifié)
il y a 6 minutes, Satsuki_yatoshi a dit :

Parfait merci.

J'ai lus que sur les TMC 2209 ont pouvait gérer cette valeur dans le firmware plutot que de faire manuellement sur le driver, mais j'ai un peu du mal a voir le principe, si vous avez une idée ^^

Sinon pour le wifi c'est possible de l'utiliser grâce a ça à priori https://github.com/luc-github/ESP3D/discussions/565

Oui mais pas nativement sur notre carte mère. Il s'agit du mode UART. En plus ce n'est pas très au points et j'ai lu pas mal de personnes s'en plaindre. Puisque ca n'apporte rien a part peut etre des emmerdes, alors il vaut mieux s'abstenir, en tout cas moi je me suis abstenu 😉

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

il y a 26 minutes, Satsuki_yatoshi a dit :

Parfait merci, je vais donc régler le vref a la mano en 0.71v car a priori c'est ce qui convient a nos D12

Et encore merci, c'est cool d'avoir des connaisseurs qui aident les noobs ^^

Il ny a de quoi, moi aussi j'etais noobs il ny a quelque temps 😉

Non erreur, les TMC2209 ce n'est pas 0.71V qu'il faut mettre, je te conseille de prendre le temps de regarder et d'ecouter la vidéo que j'ai posté au dessus 😉

Lien vers le commentaire
Partager sur d’autres sites

il y a 11 minutes, Satsuki_yatoshi a dit :

J'ai mesuré les TMC d'origine (x/y/z sur mon imprimante) et ils sont en 0.72.

Vu que les moteurs E1/E2 sont les mêmes que les x/y/z je pars bien sur du 0.72 ou il y a une astuce ?

Toi tu n'as pas regardé la vidéo 😉

Il faut regarder quelle Vref ils ont les E1/E2, ensuite transposer cette valeur à l'équivalent pour des TMC2209.

La vidéo donne justement un fichier excel pour convertir cette valeur. Ensuite sauf erreur de ma part, Ludo de la vidéo donne même la valeur à mettre sur ces drivers.

Je t'invite vraiment à la regarder sans zapper et bien écouter ce qu'il dit 😉

Lien vers le commentaire
Partager sur d’autres sites

il y a 51 minutes, Satsuki_yatoshi a dit :

les drivers A4988 d'origine sont sur ma d12 a 0.65v

si je je calcule bien ça fait bien du 0.72 en tmc ^^ donc tout va bien ^^

Faux, va regarder la vidéo à 2min55.

Il dit bien que d'origine il ya un Vref de 0.72V, ramené au TMC2209 ca donnerait 0.9V.

Tu m'as vraiment pousser à re-regarder cette vidéo 🤣

Et j'ai exactement la même chose que lui d'origine, et d'apres mes calcules j'avais trouvé aussi 0.9V pour mes TMC2209.

Si toi tu as 0.65V ca doit être une erreur de calibrage, et tu risque d'avoir des sauts de pas lors de tes impressions.

Donc je répète: mets les valeurs qu'il a mis Ludo dans sa vidéo. Il nya pas raison que ca soit diffèrent, c'est la même imprimante et les même moteurs etles même drivers. Alors arrêtes de chercher midi à quatorze heures 😉 🤪

Lien vers le commentaire
Partager sur d’autres sites

ok je mettrai ses valeurs si j'ai des bugs mais étrangement avec les valeur stock (0.72) j'ai une extrusion au poil (5% de sous extrusion par rapport a la valeur stock de l'extrudeur) alors que non calibré (j'étais a 1.35v ^^') j'avais une sous extrusion de 20% (étrange j'aurai pensé le contraire).

pour être sur d’éviter d'avoir des saut d'extrudeur a 0.72 j'ai fait des test jusqu'a F600@210° en pla (en mode bourrin) et aucun saut ^^

donc pour le moment je garde les valeurs des tmc "d'origine" pour tous les tmc et si j'ai des sauts, deviations, ou truc étrange, je mettrai ses valeur de 0.9v

 

merci en tout cas d'avoir pris le temps de me répondre (plein de fois je suis tétu ^^')

Lien vers le commentaire
Partager sur d’autres sites

Il y a 9 heures, Satsuki_yatoshi a dit :

ok je mettrai ses valeurs si j'ai des bugs mais étrangement avec les valeur stock (0.72) j'ai une extrusion au poil (5% de sous extrusion par rapport a la valeur stock de l'extrudeur) alors que non calibré (j'étais a 1.35v ^^') j'avais une sous extrusion de 20% (étrange j'aurai pensé le contraire).

pour être sur d’éviter d'avoir des saut d'extrudeur a 0.72 j'ai fait des test jusqu'a F600@210° en pla (en mode bourrin) et aucun saut ^^

donc pour le moment je garde les valeurs des tmc "d'origine" pour tous les tmc et si j'ai des sauts, deviations, ou truc étrange, je mettrai ses valeur de 0.9v

 

merci en tout cas d'avoir pris le temps de me répondre (plein de fois je suis tétu ^^')

La valeur de Vref ne joue pas sur la sur ou sous extrusion, ça joue seulement sur le couple moteur. Vref n'affecte pas la vitesse de rotation du moteur donc toutes tes constatation de sur et sous extrusion n'ont aucun sens, tu te goure mon ami. 

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...