Mise à jour du firmware Marlin d’un kit imprimante 3D RepRap. Exemple avec l’Anet A8 avec l’IDE Arduino

Marlin est un firmware projet Open Source employé dans le plupart des kits d’imprimantes 3D Reprap. La majorité des fabricants personnalisent ce firmware pour l’adapter à leurs imprimantes. C’est par exemple le cas d’Anet3D. Comme tout projet informatique, le firmware évolue, soit pour ajouter de nouvelles fonctions, soit pour corriger des bugs. Il peut être intéressant de mettre à jour le firmware de votre imprimante 3D par exemple pour ajouter la fonction d’auto-leveling (auto-bed) si elle n’est pas proposée par le firmware d’origine. C’est par exemple le cas pour l’Anet A8 si on veut remplacer le capteur de fin de course de l’axe Z par un capteur de proximité. Dans l’article précédent, nous avons vu comment installer le firmware Skynet3D qui n’est rien d’autre que le firmware Marlin avec des fichiers de configuration pré-définis pour les imprimantes 3D A8, l’A6 et l’A2.

Que devient le firmware d’origine ?

Il va être tout simplement effacé ainsi que tous les réglages. S vous avez une Anet A6 ou A8, suivez ce tutoriel pour ré-installer le firmware d’origine.

Sur quelle imprimante 3D peut-on installer le firmware Marlin ?

Le firmware Marlin peut être installé sur les cartes mères d’un très grand nombre de kit d’impression 3D.Le firmware Marlin est avant tout un programme Arduino. La communauté qui développe le firmware Marlin depuis novembre 2011 (historique des versions) adapte le code pour qu’il soit possible de l’installer sur les micro-contrôleurs des kits d’imprimantes 3D. C’est également très intéressant pour les fabricants de kits économiques (Anet, ) qui peuvent l’utiliser sans avoir à supporter les coûts de développement et de maintenance.

Voici la liste des cartes mères supportées par la version 1.1.8 (décembre 2017). La liste est disponible sur la documentation officielle.

Petit info au passage, on retrouve dans la liste la carte Melzi utilisée sur les Dagoma Discovery et Disco Easy. Comme j’ai encore mon ancienne Discorey200 qui fonctionne, on verra dans le prochaine tutoriel comment mettre à jour le firmware.

Constante à utiliser dans la configuration MCU Fichier de repérage des broches Nom de la carte mère
BOARD_3DRAG Arduino pins_3DRAG.h 3DRAG RAMPS v1.4
BOARD_AZTEEG_X3 Arduino pins_AZTEEG_X3.h Azteeg X3 RAMPS v1.4
BOARD_AZTEEG_X3_PRO Arduino pins_AZTEEG_X3_PRO.h Azteeg X3 PRO RAMPS v1.4
BOARD_BAM_DICE Arduino pins_RAMPS_14.h 2PrintBeta BAM&DICE
BOARD_BAM_DICE_DUE Arduino pins_BAM_DICE_DUE.h 2PrintBeta BAM&DICE Due
BOARD_BQ_ZUM_MEGA_3D Arduino pins_BQ_ZUM_MEGA_3D.h bq ZUM Mega 3D
BOARD_CHEAPTRONIC Arduino pins_CHEAPTRONIC.h Cheaptronic v1.0
BOARD_CHEAPTRONIC_V2 Arduino pins_CHEAPTRONIC_V2.h Cheaptronic v2.0
BOARD_CNCONTROLS_11 Arduino pins_CNCONTROLS_11.h Cartesio CN Controls V11
BOARD_CNCONTROLS_12 Arduino pins_CNCONTROLS_12.h Cartesio CN Controls V12
BOARD_ELEFU_3 Arduino pins_ELEFU_3.h Elefu RA
BOARD_FELIX2 Arduino pins_FELIX2.h FELIXprinters v2.0/3.0
BOARD_K8200 Arduino pins_K8200.h Velleman K8200 RAMPS v1.3
BOARD_K8400 Arduino pins_K8400.h Velleman K8400 RAMPS v1.4
BOARD_LEAPFROG Arduino pins_LEAPFROG.h Leapfrog Driver board
BOARD_MEGACONTROLLER Arduino pins_MEGACONTROLLER.h Mega Controller
BOARD_MEGATRONICS Arduino pins_MEGATRONICS.h MegaTronics
BOARD_MEGATRONICS_2 Arduino pins_MEGATRONICS_2.h MegaTronics v2.0
BOARD_MEGATRONICS_3 Arduino pins_MEGATRONICS_3.h MegaTronics v3.0
BOARD_MEGATRONICS_31 Arduino pins_MEGATRONICS_31.h MegaTronics v3.1
BOARD_MINIRAMBO Arduino pins_MINIRAMBO.h Mini RAMBo
BOARD_MKS_13 Arduino pins_MKS_13.h MKS v1.3
BOARD_MKS_BASE Arduino pins_MKS_BASE.h MKS BASE 1.0
BOARD_RAMBO Arduino pins_RAMBO.h RAMBo
BOARD_RAMPS_13_EEB Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Extruder, Bed)
BOARD_RAMPS_13_EEF Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Extruder, Fan)
BOARD_RAMPS_13_EFB Arduino pins_RAMPS_13_EFB.h RAMPS v1.3 (Extruder, Fan, Bed)
BOARD_RAMPS_13_EFF Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Fan, Fan)
BOARD_RAMPS_13_SF Arduino pins_RAMPS_13.h RAMPS v1.3 (Spindle, Controller Fan)
BOARD_RAMPS_14_EEB Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Extruder, Bed)
BOARD_RAMPS_14_EEF Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Extruder, Fan)
BOARD_RAMPS_14_EFB Arduino pins_RAMPS_14_EFB.h RAMPS v1.4 (Extruder, Fan, Bed)
BOARD_RAMPS_14_EFF Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Fan, Fan)
BOARD_RAMPS_14_SF Arduino pins_RAMPS_14.h RAMPS v1.4 (Spindle, Controller Fan)
BOARD_RAMPS_OLD Arduino pins_RAMPS_OLD.h RAMPS v1.0, v1.1, v1.2
BOARD_RIGIDBOARD Arduino pins_RIGIDBOARD.h RIGIDBOARD RAMPS v1.4
BOARD_RIGIDBOARD_V2 Arduino pins_RIGIDBOARD_V2.h RIGIDBOARD v2
BOARD_RUMBA Arduino pins_RUMBA.h RUMBA
BOARD_SAINSMART_2IN1 Arduino pins_SAINSMART_2IN1.h Sainsmart 2-in-1
BOARD_SCOOVO_X9H Arduino pins_SCOOVO_X9H.h abee Scoovo X9H
BOARD_ULTIMAIN_2 Arduino pins_ULTIMAIN_2.h Ultiboard v2.0
BOARD_ULTIMAKER Arduino pins_ULTIMAKER.h Ultimaker
BOARD_ULTIMAKER_OLD Arduino pins_ULTIMAKER_OLD.h Ultimaker “old electronics”
BOARD_ZRIB_V20 Arduino pins_BOARD_ZRIB_V20.h zrib V2.0 (Chinese RAMPS replica)
BOARD_BRAINWAVE Brainwave pins_BRAINWAVE.h Brainwave 1.0
BOARD_BRAINWAVE_PRO Brainwave pins_BRAINWAVE_PRO.h Brainwave Pro
BOARD_GEN7_12 Gen7 pins_GEN7_12.h Gen7 v1.1, v1.2
BOARD_GEN7_13 Gen7 pins_GEN7_13.h Gen7 v1.3
BOARD_GEN7_14 Gen7 pins_GEN7_14.h Gen7 v1.4
BOARD_GEN7_CUSTOM Gen7 pins_GEN7_CUSTOM.h Gen7 “Alfons3”
BOARD_MINITRONICS Minitronics pins_MINITRONICS.h Minitronics v1.0/1.1
BOARD_ANET_10 Sanguino pins_ANET_10.h Anet V1.0 by SkyNet3D
BOARD_AZTEEG_X1 Sanguino pins_AZTEEG_X1.h Azteeg X1
BOARD_GEN3_MONOLITHIC Sanguino pins_GEN3_MONOLITHIC.h Gen3 Monolithic Electronics
BOARD_GEN3_PLUS Sanguino pins_GEN3_PLUS.h Gen3+
BOARD_GEN6 Sanguino pins_GEN6.h Gen6
BOARD_GEN6_DELUXE Sanguino pins_GEN6_DELUXE.h Gen6 Deluxe
BOARD_MELZI Sanguino pins_MELZI.h Melzi
BOARD_MELZI_MAKR3D Sanguino pins_MELZI_MAKR3D.h Melzi “MaKr3d”
BOARD_OMCA_A Sanguino pins_OMCA.h Open Motion controller
BOARD_SANGUINOLOLU_11 Sanguino pins_SANGUINOLOLU_11.h Sanguinololu
BOARD_SANGUINOLOLU_12 Sanguino pins_SANGUINOLOLU_12.h Sanguinololu v1.2
BOARD_STB_11 Sanguino pins_STB_11.h STB V1.1
BOARD_OMCA SanguinoA pins_OMCA_A.h Open Motion controller “Alpha”
BOARD_SETHI Sethi 3D pins_SETHI.h Sethi 3D_1
BOARD_5DPRINT Teensy++ 2.0 pins_5DPRINT.h Makibox 5DPD8
BOARD_PRINTRBOARD Teensy++ 2.0 pins_PRINTRBOARD.h Printrboard
BOARD_PRINTRBOARD_REVF Teensy++ 2.0 pins_PRINTRBOARD_REVF.h Printrboard RevF
BOARD_SAV_MKI Teensy++ 2.0 pins_SAV_MKI.h SAV MkI
BOARD_TEENSY2 Teensy++ 2.0 pins_TEENSY2.h Teensy++ 2.0
BOARD_TEENSYLU Teensy++ 2.0 pins_TEENSYLU.h Teensylu 0.7

Télécharger le firmware Marlin

Le projet Marlin est hébergé sur GitHub sur cette page. Comme d’habitude, cliquez sur Clone or download puis Download ZIP. Décompressez et ouvrez le dossier du projet.

download marlin firmware

Comme vous pouvez le constater, vous pouvez également utiliser PlatformIO pour compiler et téléverser le firmware.

Nous allons maintenant préparer l’IDE Arduino pour pouvoir se connecter et téléverser sur l’Anet A8

Configurer l’IDE Arduino pour l’imprimante 3D Anet A8 ou A6

Contrairement à Skynet3D, Marlin n’est livré avec aucun fichier de configuration permettant de se connecter à l’imprimante (et compiler le code) depuis l’IDE Arduino. On va donc récupérer ce qu’il nous faut en téléchargeant Skynet3D sur GitHub ici  (vous pouvez suivre ce tutoriel en détail si ça vous intéresse). Décompressez le fichier ZIP de Skynet3D. Voici son contenu

skynet3D project folder

 

Installez l’IDE Arduino sur votre ordinateur (Windows, Linux ou macOS) depuis cette page si vous ne l’avez pas encore fait. Installez l’IDE Arduino comme n’importe quel autre logiciel.

Lancez une première fois l’IDE Arduino puis quittez le. Ouvrez le dossier Documents. Allez dans le dossier Arduino puis hardware.

Dans le projet Skynet3D, ouvrez le dossier Arduino-1.8.0 puis hardawre. Copiez le dossier Anet et collez le dans le dossier hardware de l’IDE Arduino précédemment ouvert.

copy anet board hardware ide arduino folder

Supprimez le fichier platform.local.txt qui se trouve dans le sous-dossier avr car ce fichier génère cette erreur de compilation

fork/exec /usr/local/bin/generate_version_header_for_marlin: no such file or directory
Erreur de compilation pour la carte Anet V1.0

Installer la librairie Sanguino

Pour les kits ReRap à base d’Arduino Mega 2560, il n’y a rien à installer pour se connecter à la carte mère. Pour les autres cartes, Marlin conseille d’installer la libraire Sanguino développée par Kristian Sloth Lauszus (page GitHub du projet). Cette librairie permet de se connecter à des cartes de développement à base d’Atmega 644, 644P, 1284P (8 ou 16Mhz), ce qui est le cas de la carte mère des imprimantes 3D Anet3D A2, A6 et A8. Le firmware Skynet3D utilise d’ailleurs cette librairie comme on peut le voir dans le fichier boards.txt qui se trouve dans le dossier arduino-1.8.0/hardware/anet/avr.

# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
# See: http://code.google.com/p/arduino/wiki/Platforms

##############################################################

menu.cpu=Processor

########################################
## Anet V1 (sanguino clone) -
########################################
anet.name=Anet V1.0

anet.upload.tool=arduino:avrdude
anet.upload.protocol=arduino
anet.upload.maximum_size=131072
anet.upload.speed=57600

anet.bootloader.low_fuses=0xD6
anet.bootloader.high_fuses=0xDA
anet.bootloader.extended_fuses=0xFD
anet.bootloader.unlock_bits=0x3F
anet.bootloader.lock_bits=0x0F

anet.build.mcu=atmega1284p
anet.build.f_cpu=16000000L
anet.build.board=AVR_SANGUINO
anet.build.core=arduino:arduino
anet.build.variant=sanguino

anet.bootloader.file=atmega/ATmegaBOOT_168_atmega1284p.hex
anet.bootloader.tool=avrdude

Malheureusement, ça ne fonctionne pas chez moi. J’obtiens les erreurs suivantes au moment de téléverser le code sur la carte mère.

Les variables globales utilisent 4161 octets (25%) de mémoire dynamique, ce qui laisse 12223 octets pour les variables locales. Le maximum est de 16384 octets.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x73
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x74
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x61
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x72
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x74
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x0a
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x65
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x63
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x68
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x6f
Une erreur est survenue lors du transfert du croquis

Pour le moment, on est donc condamné à récupérer la librairie dans le projet Skynet3D en attendant une mise à jour de la librairie Sanguino. J’ai d’abord pensé que c’était un problème avec le bootloader et donc ré-installé le firmware d’origine mais sans succès. Si quelqu’un trouve la solution, je suis preneur.

Configurer le firmware Marlin pour l’Anet A8

Ouvrez le dossier contenant Marlin et allez dans le dossier Marlin puis example_configurations. Vous allez y trouver des fichiers de configuration pour les principales imprimantes listées précédemment. Beaucoup d’imprimantes sont aujourd’hui obsolètes

Collez le ou les fichiers de configuration de votre imprimante à la racine du projet (au même niveau que le fichier marlin.ino). Pour l’A6 ou l’A8, il y deux fichiers configuration.h et configuration_adv.h (configuration avancée).

copy anet a8 a6 3d printer configuration arlin firmware

Installer le firmware Marlin à l’aide de l’IDE Arduino

Tout est prêt. Lancez l’IDE Arduino et ouvrez le projet du firmware marlin.

ouvrir marlin ino ide arduino

Personnaliser le firmware, interface en français

Le firmware est pré-configuré mais on peut encore le personnaliser un peu plus. La première chose à faire est de mettre l’interface en français :D.

Pour cela cherchez la clé LCD_LANGUAGE. Indiquez fr, les caractères accentués (fr_utf8) ne s’affichent pas correctement.

On peut également personnaliser le nom de l’imprimante en dé-commentant la clé CUSTOM_MACHINE_NAME et en indiquant un nom.

Voilà, il ne reste plus qu’à téléverser le programme. L’imprimante redémarre avec le firmware Marlin fraichement installé.

marlin firmware anet a8 3d printer update

Et en français en prime 😀

marlin firmware anet a8 3d printer francais update

En prime, puisque vous êtes sur l’IDE Arduino, profitez-en pour ouvrir le moniteur série. Sélectionnez la vitesse configurée par la clé BAUDRATE dans le fichier configuration.h

ide arduino serial monitor anet a8 marlin firmware

Voilà, je ne peux malheureusement pas tester pour toutes les imprimantes du marché. Je compte sur vous pour nous aider à trouver les fichiers de configuration pour les autres imprimantes. Si vous rencontrez des difficultés ou si vous avez d’autres astuces, les commentaires sont à votre disposition.

Impossible de téléverser le firmware Marlin

Pour une raison qui m’échappe, de temps en temps, il n’est pas possible de téléverser le firmware sur la carte mère de l’imprimante. Voici ce que vous pouvez faire tenter dans ce cas :

  • Débrancher puis remettre sous tension l’imprimante
  • Appuyer sur le bouton reset présent sur la carte mère dès que le téléversement commence
  • Débrancher puis rebrancher le câble USB puis recommencer à téléverser.

Si vous avez d’autres astuces, profitez des commentaires. Merci

Imprimante 3D Anet A8 en promo

Accessoires et pièces de rechange pour les imprimantes 3D Anet A6 ou A8

Anet A6, plus robuste, plateau chauffant jusqu’à 100°C

L’Anet A6 est une version améliorée de l’A8.

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Domotique et objets connectés à faire soi-même