Jonathan06
-
Compteur de contenus
1 055 -
Inscrit(e) le
-
Dernière visite
-
Jours remportés
14
Récompenses de Jonathan06
Experienced (11/14)
- Rare
- Rare
Badges récents
513
Réputation sur la communauté
1
Sujets solutionnés !
Favoris
-
Boitier rangement filament
Stockage des bobinesj'ai trouvé cette astuce plutôt pratique afin de pas remballé à chaque fois les bobines , toujours à l'abri , même en utilisation
http://www.thingiverse.com/thing:1332650
je vais me faire la même instalation
-
Anodisation
Tutoriel anodisation aluminium pour les printer'sBonjour à tous,
Suite au post
Je vous propose un tutoriel qui va tenir compte du fait que si vous êtes ici, vous avez certainement soit une imprimante 3D, soit une CNC, ce qui va grandement faciliter les choses.
Déjà, comme je pense que chacun devrait préciser s'il est dans la tranche des amateurs ou des pro, je vous précise que ma boite vend des produits pour anodiser. Les modérateurs me signaleront s'ils acceptent que je donne les liens des produits que je cite ou pas. Au pire, je vous donnerai les mots-clefs de recherche en français et anglais, vous tomberez sur les 3 ou 4 boites qui peuvent vous approvisionner, dont la mienne.
Autre point d'importance, on ne fera pas de cours de chimie théorique. Vous n'avez pas besoin de savoir comment votre voiture marche pour démarrer et faire des milliers de Km? En anodisation, c'est pareil !
En outre, chaque fois que c'est faisable, je vous dirai comment faire en DIY.
Je vais faire un post par étape pour traiter chaque poste :
- Lavage, Décapage, Désoxydation, Anodisation, Coloration, Colmatage.
Surtout ne croyez pas que j'ai inventé quoi que ce soit... C'est comme cela que l'on anodise en OAS (Oxydation Anodique Sulfurique) dans l'industrie depuis bientôt 1 siècle. Je ne fais que vous indiquer comment faire ce procédé avec des moyens limités et des produits autorisés pour les particuliers. En revanche, si vous suivez ce procédé, vous ferez des anodisations de qualité professionnelle, voir mieux car les industriels ont des contraintes que vous n'aurez pas.
Dernier point, attendez que le tuto soit fini pour vous lancer, ça va prendre plusieurs jours et vous aurez ainsi une vue d'ensemble...
A bientôt
-
Marlin pour CR10 paramétrage
CR10-V2, carte originelle (2.5.2), Marlin 2.0.9.3 (stable)Marlin 2.0.x guide pour CR10-V2, carte mère originelle (v2.5.2)
ATTENTION: Post très long (mais j'espère complet ), TLDR : en fin de post. les fichiers utilisés pour compiler
Modifications réalisées à partir d’un Marlin originel 2.0.9.3 pour une Creality CR10-V2 avec sa carte mère d’origine (Atmega2560, v2.5.2).
Utilisation de ce guide avec un autre version de Marlin à vos risques et périls. En modifiant quelques directives (environnement de compilation, carte mère utilisée, pilotes moteurs, …), il est possible d'adapter ce «firmware» pour qu'il fonctionne avec une autre carte que la Creality v2.5.2
Modifications effectuées après lecture approfondie de la «Bible du Marlin»
Chapitres
-
Débuter
-
Fichiers modifiés
-
PID autotune
-
BLTOUCH
-
Mesurer NOZZLE_TO_PROBE_OFFSET
-
Unified Bed Leveling (UBL)
-
Mesh Bed Leveling (ABL du «pauvre» mais tout de même bien pratique)
-
Effectuer le nivelage du lit
-
Détection de fin de filament et remplacement du filament
-
Linear Advance
-
Junction Deviation
-
Test «Tout en un» de la rétraction
-
Compiler le firmware
-
Flasher le firmware
-
Mettre à jour / reflasher le firmware
-
Changelog
Débuter
-
Installer VSCode and Git (Installation guide)
-
Ouvrir le dossier Marlin
-
comme dans la vidéo d’installation ou
-
Cloner Marlin via PlatformIO (Cliquer sur l’icone «Alien», puis cliquer sur "Cloner Projet Git», coller l’adresse "https://github.com/MarlinFirmware/Marlin/", presser Entrée, sauvegarder, finalement cliquer ouvrir quand le téléchargement est terminé)
-
Ou vous pouvez cloner mon dépôt en fin de post
-
Vous pouvez choisir la version de Marlin en bas à gauche de la fenêtre, par défaut la version la plus récente sera activée
-
-
Modifier votre Marlin en vous basant sur ce guide
-
Vous pouvez utiliser les fichiers de configuration des exemples de votre carte pour une édition plus facile / rapide.
La CR10V2 n’étant pas actuellement recensée parmi les modèles de Creality, vous pouvez utiliser ceux d’une CR10S (ou ceux tout à la fin). EDIT: @thinkyhead a inclus les fichiers de configuration dans la dernière version stable de Marlin (2.0.6 attention, c'est prévu pour la branche bugfixes).
-
Fichiers modifiés
Modifications des fichiers platformio.ini, configuration.h et configuration_adv.h .
A - Activer | C - Changer | A&C - Activer et Changer | D - Désactiver
( Activer/Désactiver en enlevant / ajoutant les «//» en début de ligne )platformio.ini
-
C
default_envs =
mega2560
Configuration.h
-
A
#define SHOW_CUSTOM_BOOTSCREEN
-
A
#define CUSTOM_STATUS_SCREEN_IMAGE
-
Vous devrez copier les fichiers
_Bootscreen.h
/_Statusscreen.h
de Marlin\config\examples\Creality\CR10S\ dans le dossier Marlin\Marlin mais en ce cas, la fenêtre de statut indiquera «CR10S 300» alors qu’on souhaiterai «CR10 V2» (utiliser ceux en fin de post). -
Les fichiers «examples» du dossier config « peuvent être récupérés à partir de Marlin GitHub.
-
ou vous pouvez utiliser ceux fournis dans le fichier compressé en fin de post (je les ai modifié afin que soit affiché «CR10 V2).
-
-
C
#define SERIAL_PORT
0 -
C
#define BAUDRATE
115200250000-
ATMega2560 baudrate par défaut
-
-
C
#define MOTHERBOARD
BOARD_RAMPS_CREALITY -
A&C
#define CUSTOM_MACHINE_NAME
"CR10-V2"-
ou le nom que vous voulez (ex: MA CR10 à MOI qu'elle me plait vraiment beaucoup )
-
-
C
#define DEFAULT_NOMINAL_FILAMENT_DIA
1.75 -
C
#define TEMP_SENSOR_BED
1 -
C
#define
HEATER_0_
_MAXTEMP
255 -
C
#define BED_MAXTEMP
120 -
A
#define
PID_EDIT_MENU
-
A
#define
PID_AUTOTUNE_MENU
-
C les valeurs de P.I.D. pour la tête :
-
#
define
DEFAULT_Kp 19.47 -
#
define
DEFAULT_Ki 1.59 -
#
define
DEFAULT_Kd 59.40
-
-
A
#define PIDTEMPBED
-
Vous n’êtes pas obligé d’activer
PIDTEMPBED
, si vous êtes satisfait de votre lit chauffant. Mais en calibrant celui-ci, il montera en températures plus rapidement et maintiendra celles-ci plus finement -
N’oubliez pas de réaliser un autotune du PID du lit après l’avoir activé dans le firmware sinon la protection contre l’emballement thermique pourrait se déclencher lors de la mise en route. Allez consulter le guide dans la section PID autotune, plus bas dans ce post
-
-
C les valeurs de P.I.D. pour le lit :
-
#
define
DEFAULT_Kp 690.34 -
#
define
DEFAULT_Ki 111.47 -
#
define
DEFAULT_Kd 1068.83
-
-
C
#define EXTRUDE_MAXLENGTH
435-
Mesurez la longueur à partir de la roue crantée de l’extrudeur jusqu’à la buse comme longueur de tube PTFE
-
-
C
#define Z_M
IN
_ENDSTOP_INVERTING
truefalse -
C
#define Z_M
AX_ENDSTOP_INVERTING
truefalse -
C
#define Z_M
IN_PROBE_ENDSTOP_INVERTING
truefalse-
Le BLTouch v3/3.1 peut fonctionner soit avec true soit false, mais une erreur est signalée à la compilation si réglé à true
-
-
A&C
#define X_DRIVER_TYPE
TMC2208_STANDALONE -
A&C
#define Y_DRIVER_TYPE
TMC2208_STANDALONE -
A&C
#define Z_DRIVER_TYPE
TMC2208_STANDALONE -
A&C
#define E0_DRIVER_TYPE
TMC2208_STANDALONE -
C
#define DEFAULT_AXIS_STEPS_PER_UNIT
{ 80, 80, 400, 93 }-
si vous avez monté en lieu et place de l’extrudeur d’origine un autre modèle, remplacez 93 par le nombre de pas de celui-ci (BMG / Titan 415, BMG sans réducteur (CR10S Pro) 140, …)
-
pour une CR10-V3 avec un Titan comme extrudeur; le pas de l'extrudeur est de 415.
-
ATTENTION: dans le dépôt Github fourni plus bas,
mon extrudeur étant un pseudo BMG (celui des CR10S Pro), le pas est de 140,mon extrudeur est un BMG à réduction (3:1), le pas est de 415 (monté en «extrudeur volant»), pensez à le modifier si vous avez l'extrudeur métallique d'origine (pas initial de 93 qu'il est préférable d'affiner en effectuant un réglage de celui-ci).
-
-
C
#define DEFAULT_MAX_FEEDRATE
{ 750, 750, 15, 75 } -
C
#define DEFAULT_MAX_ACCELERATION
{ 2000, 2000, 100, 5000 }
-
C
#define DEFAULT_ACCELERATION
800 -
C
#define DEFAULT_RETRACT_ACCELERATION
1000 -
C
#define DEFAULT_TRAVEL_ACCELERATION
800 -
A
#define CLASSIC_JERK
-
Utiliser «Classic Jerk» au lieu de Junction Deviation, car JD ne fonctionne pas correctement actuellement et peut parfois engendrer de mauvais résultats particulièrement lors d’impression de courbes (https://github.com/MarlinFirmware/Marlin/issues/17146)
-
-
A&C
#define TRAVEL_EXTRA_XYJERK
5.0 -
A
#define S_CURVE_ACCELERATION
-
C
#define INVERT_X_DIR
false -
C
#define INVERT_Y_DIR
false -
C
#define INVERT_Z_DIR
true -
C
#define INVERT_E0_DIR
false
Si vous avez une CR10-V3 avec son direct-drive, le moteur possédant un réducteur (3:1), le sens de rotation de celui-ci est inversé. la ligne au-dessus devra donc être à «true»
-
C
#define X_BED_SIZE
310 -
C
#define Y_BED_SIZE
310 -
C
#define Z_MAX_POS
400 -
A
#define
LCD_BED_LEVELING
-
C
#define HOMING_FEEDRATE_Z
(6*60) (directive d'anciennes versions de Marlin, maintenant les vitesses de mise à l'origine sont regroupées en une seule directive : #define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } )-
Augmentez si vous trouvez que c’est trop lent mais ne dépassez pas 10*60 pour l'axe Z.
-
-
A
#define EEPROM_SETTINGS
-
A
#define NOZZLE_PARK_FEATURE
-
C
#define NOZZLE_PARK_POINT
{ (X_MIN_POS + 5), (Y_MAX_POS - 5), 10 } -
A
#define
PRINTCOUNTER
-
D
#define LCD_LANGUAGE fr
-
pour
passer l’interface
de l’écran
en français si vous préférez
-
-
A
#define SDSUPPORT
-
A
#define INDIVIDUAL_AXIS_HOMING_MENU
-
A
#define
REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Configuration_adv.h
-
A
#define QUICK_HOME
-
A
#define
BLTOUCH_SET_5V_MODE
-
C
#define SLOWDOWN_DIVISOR
2 -
A
#define
LCD_INFO_MENU
-
A
#define STATUS_MESSAGE_SCROLLING
-
A
#define SCROLL_LONG_FILENAMES
-
D
#define LIN_ADVANCE
-
L’activation du Linear Advance sur les cartes Creality «silencieuses» mènent à l’arrêt de l’extrusion, il ne faut donc pas activer cette option.
-
-
C
#define LIN_ADVANCE_K
0.00-
Le guide pour calibrer la valeur K se trouve plus bas dans la section Linear Advance.
-
-
C
#define
EMERGENCY_PARSER
-
C
#define
ADVANCED_OK
-
A
#define CANCEL_OBJECTS
PID autotune
Rien ne vous oblige à activer
PIDTEMPBED
, si vous êtes satisfait de votre lit chauffant. Mais en calibrant celui-ci, il montera en températures plus rapidement et maintiendra celles-ci plus finement.-
Connectez l’imprimante au PC (USB, Octoprint, etc.)
-
Utilisez n’importe quel logiciel capable d’envoyer des commandes gcode à l’imprimante (Octoprint, Pronterface, Repetier, etc.)
-
Connectez l’imprimante via le logiciel si la connexion n’est pas automatique (COM ??,
115200250000) -
En envoyant un
M301
/M304
à l’imprimante vous récupérez les valeurs actuelles du PID de la HOTEND / LIT CHAUFFANT, prenez note de celles-ci -
Pour débuter un autotune, il faut envoyer un
M303
C
<nb cycles>A
<index>S
<température>U
à l’imprimante.-
Pour la hotend j’utilise
M303 C
10
E0 S2
20
U
(Hotend:E0
)-
Activez la ventilation de refroidissement du filament pour l’autotuning du PID de la hotend
-
C5 est normalement suffisant, mais C10 n’augmente pas le temps énormément, S<température> devrait être 5-à 10° plus haut que la température le plus souvent utilisée
-
-
Pour le lit chauffant j’utilise
M303 C
8
E-1 S6
5
U
(Lit chauffant:E-1
)-
C5 est normalement suffisant, mais C8 n’augmente pas le temps énormément, S<température> devrait être la température la plus souvent utilisée. Si après le
M303
... vous obtenez "PID Autotune failed! Temperature too high", envoyez unM304 P0.00 I0.00 D0.00
à l’imprimante, puis refaites l’autotune du PID.
-
-
-
Attendez que les opérations soient terminées (quand c’est fait, le cycle de chauffe s’arrête et la température baisse)
-
Prenez note des nouvelles valeurs du P. I.D. affichées
-
Envoyez un
M500
pour sauvegarder ces valeurs dans l’EEPROM -
Pour vérifier que ces valeurs ont bien été sauvées, envoyez un
M301
/M304
pour afficher les valeurs actuelles -
Si les valeurs actuelles de PID ne correspondent pas aux nouvelles, alors vous devez les fixer manuellement:
-
Hotend: Envoi d’un
M301
P
<valeur>I
<valeur>D
<valeur> à l’imprimante -
Lit chauffant: Envoi d’un
M304
P
<valeur>I
<valeur>D
<valeur> à l’imprimante -
Envoi d’un
M500
pour sauvegarder ces valeurs dans l’EEPROM -
Dans Configuration.h mettre à jour les valeurs de PID pour une prochaine mise à jour du firmware (
DEFAULT_Kp
, ...Ki
, ...Kd
,DEFAULT_bedKp
, ...bedKi
, ...bedKd
)
-
The 3D Print General PID Autotuning
BLTOUCH
Configuration.h
-
A
#define
Z_STOP_PIN 19 (renommé en Z_MIN_PROBE_PIN )
-
Le BLTouch est «précâblé» sur le Z_MAX_PIN, le endstop originel lui est connecté sur le Z_MIN_
ENDSTOP_
PIN
-
-
A
#define BLTOUCH
-
C
#define NOZZLE_TO_PROBE_OFFSET
{ 47, 0, 0 }-
Éditez ces valeurs en fonction de votre matériel et de sa position par rapport à la buse, aide dans la section Mesurer NOZZLE_TO_PROBE_OFFSET
-
-
C
#define MIN_PROBE_EDGE
10 ( renommé en PROBING_MARGIN )-
Si vous avez des clips pour maintenir la surface d’impression (verre, miroir, …), augmenter à la taille des clips +5
-
-
C
#define XY_PROBE_SPEED
60009000 ( renommé en XY_PROBE_FEEDRATE )-
Avec
6000le 9000 BLTouch fonctionne de manière plus fiable (9000 mm/min = 150 mm/s)
-
-
A
#define
MULTIPLE_PROBING 2
-
permet d’améliorer le résultat en effectuant plusieurs palpages
-
-
A
#define Z_MIN_PROBE_REPEATABILITY_TEST
-
A
#define AUTO_BED_LEVELING_BILINEAR
-
ou utiliser
AUTO_BED_LEVELING_UBL
/MESH_BED_LEVELING
, liens vers des guides plus loin dans ce post
-
-
A
#define RESTORE_LEVELING_AFTER_G28
-
A
#define Z_SAFE_HOMING
Configuration_adv.h
-
A
#define BABYSTEPPING
-
C
#define BABYSTEP_MULTIPLICATOR_Z
4-
1 monte l’axe Z de 1 microstep (0.0025), 4 montera l’axe Z de 0.01
-
-
A
#define DOUBLECLICK_FOR_Z_BABYSTEPPING
-
Double-clic avec l’écran de Statut pour éditer le Z Babystepping pendant une impression
-
-
A
#define BABYSTEP_ZPROBE_OFFSET
-
A
#define BABYSTEP_ZPROBE_GFX_OVERLAY
Mesurer les valeurs à saisir pour NOZZLE_TO_PROBE_OFFSET
-
Mesurer approximativement les écarts / distances entre la pin de la sonde et la buse dans les directions X et Y
-
La pointe de la sonde devrait être 2.3-4.3mm plus haut que la buse (quand la sonde est rentrée)
-
-
Modifier les valeurs
NOZZLE_TO_PROBE_OFFSET
en fonction de vos mesures -
Compiler - flasher - redémarrer ...
-
Effectuer le Homing (G28)
-
Prenez note des coordonnées X et Y (réalisable via le menu «Move Axis» de l’écran)
-
Déplacez l’axe Z vers le bas jusqu’à ce que la buse touche ou pratiquement touche le lit
-
Marquez le point où la buse touche le lit (assurez-vous que ce marquage ne se déplacera pas sur le lit (utiliser du scotch de marquage par exemple))
-
Déplacez les axes X et Y via le menu de l’imprimante jusqu’à ce que la pointe de la sonde soit sur la marque
-
Prenez note des coordonnées X et Y
-
Soustrayez les coordonnées X/Y originelles des coordonnées X/Y de la position de la pointe du BLTouch pour obtenir le
NOZZLE_TO_PROBE_OFFSET.
Exemple pour la CR10V2: après le homing, la buse est en (150,150); en déplaçant le pointeur de la buse à l'emplacement marqué sur le plateau, la position affichée à l'écran devrait être (103,150); donc 150-103=47 pour le X et 150-150=0 pour le Y
Unified Bed Leveling (UBL)
-
Marlin UBL guide
-
Chris Riley UBL video guide
Mesh Bed Leveling
(ABL du «pauvre» mais tout de même bien pratique)
Configuration.h
Ce type de nivelage n'est à utiliser que si vous n'avez pas installé d'ABL automatique. Donc, à n'activer que si #define BLTOUCH (ou un autre ABL) ne l'est pas déjà sinon Marlin vous signalera une erreur.
-
A
#define PROBE_MANUALLY
-
C
#define NOZZLE_TO_PROBE_OFFSET
{ 0, 0, 0 } -
A
#define MESH_BED_LEVELING
-
A
#define RESTORE_LEVELING_AFTER_G28
-
C
#define GRID_MAX_POINTS_X
5 (Ou modifiez selon vos préférences) -
A
#define LCD_BED_LEVELING
En complément (remarque de @Darkneo (merci à toi )) il faut désactiver certaines directives qui autrement conduisent à une erreur de compilation :
-
D
#define
Z_MIN_PROBE_REPEATABILITY_TEST
et
-
D
#define
BABYSTEP_ZPROBE_OFFSET (configuration_adv.h)
Effectuer le nivelage manuel du lit (Mesh Bed Leveling)
Chauffez votre lit à la température d’impression habituelle (ex : 60°C). Assurez-vous qu'il n'y a pas de plastique sur la buse, ce qui modifierait la distance de la buse par rapport au lit
-
Sélectionner: Prepare - Bed Leveling - Level Bed
-
Attendre que le Homing XYZ soit terminé
-
Lorsque le bouton "Cliquer pour commencer" apparaît, appuyez sur le bouton du contrôleur pour vous rendre au premier point
-
Utilisez la molette de commande pour régler Z afin qu'un morceau de papier puisse passer sous la buse en frottant
-
Appuyez sur le bouton du contrôleur pour enregistrer la valeur Z et passer au point suivant
-
Répétez les étapes 4 et 5 jusqu'à ce que vous ayez terminé.
-
Sélectionnez : Configuration - Enregistrer les paramètres pour sauvegarder le maillage dans l'EEPROM
-
Sélectionnez : Mouvement - Hauteur de fondu : Régler sur 10
-
Sélectionnez : Motion - Stocker les paramètres
-
Faites un test d'impression
et, pendant l'impression, vous pouvez modifier la distance entre la buse et le lit en mouvement via les molettes de réglage du plateauNe surtout pas toucher aux mollettes sinon le maillage ne sera plus correct Utiliser plutôt le réglage des babysteps via «double clic» sur le bouton de l'écran -
Sélectionnez : Configuration - Stocker les paramètres
Plus d’infos :
-
Marlin Bed Leveling (Manual)
-
Teaching Tech Manual Mesh Bed Levelling
-
Crosslink Ender 3 Mesh Bed Leveling
Détection de fin de filament et changement de filament
Configuration.h
-
A
#define FILAMENT_RUNOUT_SENSOR
-
A&C
#define FILAMENT_RUNOUT_DISTANCE_MM
5
-
C
#define EXTRUDE_MAXLENGTH
435-
Longueur de la roue crantée de l’extrudeur à la buse
-
-
A
#define NOZZLE_PARK_FEATURE
-
C
#define NOZZLE_PARK_Z_FEEDRATE
3
Configuration_adv.h
-
C
#define
ADVANCED_PAUSE_FEATURE
-
C
#define PAUSE_PARK_RETRACT_LENGTH
6-
Modifiez par votre distance de
r
é
traction
-
-
C
#define PAUSE_PARK_RETRACT_FEEDRATE
30-
Modifiez par votre distance de
r
é
traction
-
-
C
#define
FILAMENT_CHANGE_UNLOAD_FEEDRATE 40
-
C
#define FILAMENT_CHANGE_UNLOAD_LENGTH
435-
Longueur de l'engrenage de l'extrudeuse à la buse OU régler sur 0 pour l'extraction manuelle du filament
-
-
A
#define
FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 30
-
A
#define
FILAMENT_CHANGE_FAST_LOAD_ACCEL
15
-
C
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH
435-
Longueur de l'engrenage de l'extrudeuse à la buse OU régler sur 0 pour l'insertion manuelle du filament
-
-
A
#define
ADVANCED_PAUSE_PURGE_LENGTH
20
-
A
#define ADVANCED_PAUSE_
FANS_PAUSE
-
A
#define
FILAMENT_UNLOAD_PURGE_RETRACT
4 -
C
#define FILAMENT_CHANGE_ALERT_BEEPS
2-
3 peut être trop / énervant, si oui, diminuez à votre convenance
-
-
A
#define PARK_HEAD_ON_PAUSE
-
A
#define HOME_BEFORE_FILAMENT_CHANGE
-
A
#define FILAMENT_LOAD_UNLOAD_GCODES
-
Ajoute le
g
code
(
M701/M702
)
et Charger/décharger dans le menu de préparation de l'écran LCD.
-
-
A
#define HOST_ACTION_COMMANDS
-
A
#define HOST_
PROMPT
_
SUPPORT
Plus d’infos :
Voir la partie M600 - Filament Change
Chris Riley
Linear Advance
-
Linear Advance K-factor Calibration
-
Teaching Tech Linear advance video guide
-
Chris Riley Linear advance video guide
Junction Deviation
Test «Tout-en-un» de la rétraction
-
KARL JOHNSON How to Easily Calibrate Retraction in 3D Printers
Compilation du firmware
J’utilise VSCode avec l’extension PlatformIO ainsi que Git GUI.
Le sujet ci-dessous décrit l'installation des logiciels nécessaires à la préparation / compilation d'un firmware Marlin :
Pour les anglicistes, Chris Riley VSCode installation guide for Marlin 2.0.
Le fichier du microprogramme issu de la compilation qui sera installé se trouve dans «../Marlin/Marlin/.pio/build/mega2560/firmware.hex»
Flashage du firmware
Plusieurs méthodes sont possibles :
-
Octoprint avec le plugin idoine (Firmware Updater),
-
des programmes (Xloader, ProgISP, Avrdudess, Avrdude (ligne de commande pour les purs et durs)…),
-
via le trancheur (Cura, Prusaslicer,…).
-
directement via VSC en cliquant sur l’icone à droite de celle utilisée pour lancer la compilation.
La condition pour que ça fonctionne étant que l’imprimante soit reliée à un matériel informatique via USB pour la liaison et le transfert et qu'elle soit reconnue (son pilote est correct).
On utilise le fichier firmware.hex pour flasher.
Éviter toute coupure de courant durant ce flashage, attendre que le transfert soit terminé (le processus prend quelques minutes). Normalement à l’issue de celui-ci, la carte doit redémarrer.
Mettre à jour / reflasher un firmware
Il est inutile de refaire tous les changements à chaque fois que vous voulez mettre à jour une nouvelle version de Marlin, vous devez simplement copier vos fichiers de configuration modifiés dans le nouveau marlin et les comparer dans VSC Source Control (Ctrl+Shift+G), et copier tout ce qui est nouveau ou modifié dans vos fichiers.
Tous les changements ne seront pas appliqués sur une mise à jour du microprogramme, pour cela vous devrez réinitialiser vos paramètres d'imprimante :
-
en allant dans le menu de l'imprimante - Configuration - Restaurer les valeurs par défaut,
-
ou en envoyant un M502 à l'imprimante suivi d'un M500
Cela réinitialisera vos paramètres en fonction des valeurs par défaut du microprogramme. Cette réinitialisation est à faire après chaque installation du firmware afin d’éviter toute déconvenue.
<EDIT>
Depuis la version stable 2.0.9.3, une nouvelle directive «EEPROM_INIT_NOW» permet de réaliser automatiquement la réinitialisation de l'EEPROM après flashage d'un nouveau firmware :
Citation#if ENABLED(EEPROM_SETTINGS)//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build.#endifQuelques explications sur les commandes M500 à M503 :
Changelog
20200414 : version initiale
20200510: corrections, compléments, version «problématique» pour certains
- désactivation totale du LINEAR_ADVANCE qui ne l'était pas vraiment
- réactivation du CLASSIC_JERK
-
ajout détecteur fin de filament, directives concernant INVERTING, PULLUP, PIN
-
complément information sur la connexion du BLTouch (Z_MAX_PIN 19)
-
ajout dans la section Flashage, programme AVRDUDESS, possibilité de flasher via VSC si ordinateur relié via USB à la carte (détection automatique du port).
20200619 : corrections, modifications
-
cosmétique : mise en évidence de certains points
-
précisions diverses
-
la vitesse de connexion à passée de 115200 à 250000,
-
précision sur la désactivation du «linear advance»
-
modification du BLOCK_BUFFER_SIZE, BUFSIZE et TX_BUFFER_SIZE dans le fichier configuration_adv.h (des valeurs trop élevées amènent à un dépassement de la capacité de stockage de la RAM pouvant conduire à un écran «bleu» suite au flashage),
-
mise à jour des fichiers de configurations
-
suppression du fichier binaire (chacun devra compiler son propre firmware)
20200801:
- version de Marlin, dernière en date (2.0.6)
- suppression du fichier compressé du Marlin
- lien vers mon dépôt Github (pour les plus curieux, j'ai d'autres branches de Marlin pour d'autres imprimantes / cartes mères)
- suppression du fichier binaire (je préfère que les utilisateurs progressent en effectuant la compilation eux-mêmes)
- ajout explications M500 / M503
202020815:
- corrections mineures (orthographe principalement)
- complément / rectification concernant les fichiers exemples de configuration fournis par Marlin (la CR10-V2 fait désormais partie des imprimantes à partir de la version stable 2.0.6)
20200918:
- corrections mineures (orthographe principalement) passées inaperçues
- passage de mon extrudeur à un BMG à réduction (3:1) dont le pas est de 415
20201012:
- version de Marlin, dernière stable : 2.0.7.1
20201026:
- version de Marlin, dernière stable : 2.0.7.2
- complément sur le Mesh Bed Levelling (ABL du «pauvre»)
20210111:
- complément pour ceux possédant une CR10-V3
20210815:
- version de Marlin, dernière stable : 2.0.9.1
20210822:
- Complément afin d'indiquer les directives de compilation qui ont changé de nom depuis la mise en ligne de ce tutoriel basé à l'origine sur un Marlin 2.0.3 : HOMING_FEEDRATE_Z, Z_STOP_PIN, MIN_PROBE_EDGE, XY_PROBE_SPEED sont dénommées autrement (merci à @Pyroadu signalement )
20210927:
- Ajout d'un lien vers un tutoriel de ce forum sur l'installation de son environnement de travail afin de faire son propre firmware
20220103:
- version de Marlin, dernière stable : 2.0.9.3
- ajout d'une nouvelle directive permettant de réinitialiser l'EEPROM automatiquement lors du premier lancement du firmware après flashage
Les fichiers ayant servi à la compilation : à récupérer sur mon dépôt Github .
-
-
Octolapse pour android
Tuto Octolapse pour des appareils Android non supportés par GPhoto2Hello,
Il existe de nombreux tutos Octolapse pour des appareils photos (DSLR, etc) et webcams via l'excellent outil GPhoto2 mais pas grand chose pour les appareils Android non supportés.
Dans mon cas il s'agit d'un Samsung Galaxy S8.La solution proposée dans ce tuto consiste à prendre des photos à l'aide des commandes ADB (Android Debug Bridge) via un script assez similaire à celui de GPhoto2.
Pour rappel, un appareil Android branché en USB peut se mettre dans différents modes (PTP, MTP, charge uniquement, etc). Un spécifique et caché par défaut permet d'envoyer certaines commandes pour différentes actions sur l'appareil (copie de fichiers, execution/arrets/(des)installations de programmes, etc) sans le manipuler directement. C'est le mode "Débogage USB" et c'est grâce à ce mode que l'on va pouvoir prendre les photos.
Avant toutes choses, l'éxecution de commandes ADB n'est pas sans risques pour votre appareil. Ni ce forum, ni moi ne peuvent être tenu responsables des éventuels problèmes rencontrés. Pensez à effectuer une sauvegarde de vos données personnelles sur votre appareil Android avant d'aller plus loin !
1. Activer le mode "Débogage USB"
- Ce mode est activable dans le menu "développeur", menu caché par défaut, comme précisé dans ce tutoriel. Plus de détail ICI
2. Installer ADB sur le PI :
sudo apt-get install adb
3. Brancher l'appareil Android sur le PI via le câble USB.
- Si le mode Débogage USB est activé, une fenêtre d'autorisation doit apparaître :
-
Il faut valider et pour éviter d'avoir cette fenêtre à chaque fois, cocher pour mémoriser le choix.
4. Vérifier la commande ADB pour l'ouverture du logiciel de la capture photo
- taper la ligne suivante :
adb shell am start -a android.media.action.IMAGE_CAPTURE
- Dans le cas de mon téléphone, l'application native s'ouvre par contre je n'ai pas la possibilité d'enregistrer de photos (une spécificité Samsung ?). Il faut utiliser la commande suivante à la place :
adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA"
-
Si un logiciel par défaut est défini, il va s'ouvrir automatiquement. Sinon un choix doit être proposé (avec la possibilité de mémoriser le choix).
Dans le logiciel de prise de photo, il faut également vérifier où sont stoquées les photos prises.
Par exemple :
► Carte SD : /storage/0000-0000/DCIM/Camera
► Mémoire interne : /sdcard/DCIM/Camera
Les photos sont nommées de cette manière : YYYYMMDD_HHMMSS.jpg (YYYY: année, MM : mois, etc) mais ça dépend du logiciel utilisé
Cette étape est importante car il faudra définir le bon emplacement dans le script.
5. La création du scriptLe script est composé en trois parties, la première et la dernière sont du copier/coller du script utilisé par GPhoto2 :
Partie 1 (début) :
#!/bin/bash # Put the arguments sent by Octolapse into variables for easy use SNAPSHOT_NUMBER=$1 #... an integer value that increments after each successful snapshot DELAY_SECONDS=$2 #..... the camera delay in seconds DATA_DIRECTORY=$3 #.... the path to the Octolapse data folder SNAPSHOT_DIRECTORY=$4 # the path to the current camera's snapshot folder for the current print job.may not exist so be $SNAPSHOT_FILENAME=$5 #. the expected file name of the snapshot after it has been taken SNAPSHOT_FULL_PATH=$6 # the full path and filename of the expected snapshot.If this file exists after the script has re$ # Check to see if the snapshot directory exists if [ ! -d "${SNAPSHOT_DIRECTORY}" ]; then echo "Creating directory: ${SNAPSHOT_DIRECTORY}" mkdir -p "${SNAPSHOT_DIRECTORY}" mkdir -p "${SNAPSHOT_DIRECTORY}/fullres" fi
Il faudra juste rajouter le chemin où sont stoquées les photos:
cam_path='/sdcard/DCIM/Camera'
Partie 3 (fin):
if [ ! -f "${SNAPSHOT_FULL_PATH}" ]; then echo "The snapshot was not found in the expected directory: '${SNAPSHOT_FULL_PATH}'." >&2 exit 1 fi
La partie 2 consiste à lancer les commandes ADB adéquates pour prendre la photo et la déplacer dans le dossier d'Octolapse.
En fonction de l'appareil Android et du logiciel de photo utilisé, les commandes et délais d'attentes peuvent varier. Il faudra tester et adapter si besoin.
Voici les différentes commandes qui peuvent servir :
adb shell "input keyevent KEYCODE_WAKEUP" #...................... déverrouillage adb shell "input keyevent KEYCODE_SLEEP" #........................ verrouillage adb shell "input keyevent KEYCODE_HOME" #......................... écran d'accueil adb shell "input keyevent KEYCODE_CAMERA" #....................... prise de la photo adb shell "input keyevent KEYCODE_FOCUS" #........................ focus manuel avant de prendre une photo adb shell "am start -a android.media.action.IMAGE_CAPTURE" #...... ouverture de l'application photo par défaut adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA" #. ouverture de l'application photo par défaut adb shell "am force-stop com.sec.android.app.camera" #............ fermeture de l'application photo adb shell ls #.................................................... la fonction "ls" classique avec tous les paramètres possibles adb pull $FullFileName #.......................................... copier de fichier(s) adb shell rm $FullFileName #...................................... suppression de fichier(s)
Par exemple, pour l'application native du Galaxy S8, la prise de photo peut s'enclencher via ce script :adb shell "input keyevent KEYCODE_WAKEUP" adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA" sleep 1 adb shell "input keyevent KEYCODE_CAMERA" sleep 3 adb shell "am force-stop com.sec.android.app.camera" adb shell "input keyevent KEYCODE_SLEEP"
Il est important de rajouter quelques secondes (sleep) pour laisser le temps à l'appareil de lancer l'application et prendre la photo. Dans cet exemple le "profil" utilisé est le mode "automatique" et ne permet pas un réglage "aux petits oignons". C'est économe puisque le téléphone se verrouille (écran s'éteint) une fois la tâche terminée mais ça prend plus de temps (ce qui nécessitera de rallonger le paramètre Snapshot Timeout dans Octolapse)
Un autre exemple, via une application rajoutée (DLSR Camera Professional) permettant un mode plus "pro" et rapide (mais moins économe). On part du principe que l'application est déjà ouverte, l'utilisateur a effectué tous les réglages désirés (ISO, Focus, exposition, zoom, etc). La prise de photo se réduit à deux lignes :
adb shell "input keyevent KEYCODE_CAMERA" sleep 3
Encore une fois, cette partie dépend du matériel (si assez rapide, on peut passer à un "sleep 2" par exemple), du logiciel utilisé et de comment on veut prendre les photos.
Ensuite, pour le déplacement de la photo de l'appareil Android sur le PI, j'ai choisi la méthode suivante :
last_file=$(adb shell ls -1t $cam_path | head -1)
Cette instruction permet de retrouver le dernier fichier présent dans le dossier $cam_path, soit théoriquement la dernière photo, si tout fonctionne correctement...
Le déplacement de la photo s'effectue en 2 temps :
1. La copie sur le PI (+ renommage):
cd "${SNAPSHOT_DIRECTORY}" # ............. choix du dossier adb pull $cam_path/$last_file # .......... copie de la photo mv $last_file "${SNAPSHOT_FILENAME}" # ... renommage du fichier
2. La suppression sur l'appareil Android :
adb shell rm $cam_path/$last_file
Bien que fonctionnel, ce n'est pas parfait car si pour X raisons la photo n'a pas été prise correctement, le script en l'état va prendre le dernier fichier (donc pas la photo attendue) et va la copier et la supprimer sur l'appareil Android. Raison pour laquelle il vaut mieux lancer ce script dans un dossier vide par défaut histoire de ne pas faire de bêtises sur des photos précédentes ^^
L'idéal serait de s'assurer préalablement que la photo a été correctement prise. Par exemple en faisant ressortir le dernier fichier datant de moins de 10s et s'il n'y en a pas, alors ça veut dire que la photo n'a pas été prise. Je n'ai pas encore trouvé de solution à ce niveau via une commande "adb shell ls..." mais peut-être que quelqu'un aura la bonne idée pour compléter ce tuto et proposer une méthode plus "secure".Le script complet dans mon cas est le suivant :
#!/bin/bash # Put the arguments sent by Octolapse into variables for easy use SNAPSHOT_NUMBER=$1 #... an integer value that increments after each successful snapshot DELAY_SECONDS=$2 #..... the camera delay in seconds DATA_DIRECTORY=$3 #.... the path to the Octolapse data folder SNAPSHOT_DIRECTORY=$4 # the path to the current camera's snapshot folder for the current print job.may not exist so be $SNAPSHOT_FILENAME=$5 #. the expected file name of the snapshot after it has been taken SNAPSHOT_FULL_PATH=$6 # the full path and filename of the expected snapshot.If this file exists after the script has re$ cam_path='/sdcard/DCIM/DSLRCamera' # Check to see if the snapshot directory exists if [ ! -d "${SNAPSHOT_DIRECTORY}" ]; then echo "Creating directory: ${SNAPSHOT_DIRECTORY}" mkdir -p "${SNAPSHOT_DIRECTORY}" mkdir -p "${SNAPSHOT_DIRECTORY}/fullres" fi adb shell "input keyevent KEYCODE_CAMERA" sleep 3 cd "${SNAPSHOT_DIRECTORY}" adb pull $cam_path/$last_file mv $last_file "${SNAPSHOT_FILENAME}" adb shell rm $cam_path/$last_file if [ ! -f "${SNAPSHOT_FULL_PATH}" ]; then echo "The snapshot was not found in the expected directory: '${SNAPSHOT_FULL_PATH}'." >&2 exit 1 fi
La création du script peut s'effectuer va la commande suivante (dans le dossier /home/pi ou /scripts/ par exemple):
nano take_snapshot.sh
puis faire un copier/coller du script et enregistrer. Ensuite il faudra le rendre executable via la commande:
sudo chmod +x take_snapshot.sh
Enfin, dans le module d'Octolapse, créer un nouveau profile de caméra de type "External camera script", en précisant le script (le chemin complet) et éventuellement ajuster le Timeout :
Reste à tester le script via le lien idoine (cf flèche sur l'image ci-dessus) et s'assurer qu'il n'y a pas d'erreurs.
Vos retours sont les bienvenus ☺