Aller au contenu

Filament ABS

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


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.

 

Modifié (le) par Jonathan06
  • J'aime 2
Lien à poster
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
  • +1 1
  • Merci ! 1
Lien à poster
Partager sur d’autres sites
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
  • +1 1
  • Merci ! 1
Lien à poster
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 )

Lien à poster
Partager sur d’autres sites

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 à poster
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)
 

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

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

Lien à poster
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez poster un message et vous inscrire plus tard. Si vous avez déjà un compte, connectez-vous afin de poster avec.

Invité
Répondre à ce sujet…

×   Vous avez copié du contenu avec formatage.   Supprimer le formatage

  Only 75 emoji are allowed.

×   Votre lien a été automatiquement intégré.   Afficher en tant que lien à la place

×   Le contenu sauvegardé a été restauré.   Effacer l'éditeur

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Créer...