Pour permettre d'aborder l'impression 3D de façon "ludique" et "rapide" avec les collègues intéressé⋅e⋅s, nous avons commandé une imprimante Anet A8 au rapport qualité/prix imbattable. L'idée est aussi d'en profiter pour se familiariser avec les nano-ordinateurs comme le Raspberry Pi 3 Raspberry Pi 4 qui la pilotera.
Voici des liens utiles :
Site d'achat (lors d'une promo à 118,55 € frais de port compris avec une sonde pour autolevelling + 6 buses) :
- Imprimante Anet A8 : https://www.gearbest.com/3d-printers-3d-printer-kits/pp_337314.html?wid=21
- 6 buses : https://www.gearbest.com/3d-printer-parts/pp_540278.html?wid=21
- Sonde pour autolevelling : https://www.gearbest.com/3d-printer-parts/pp_591321.html?wid=37
Sur le site projetsdiy.fr (merci à son auteur pour la mise à disposition des infos et aussi ses "bons plans"...) en français :
- https://projetsdiy.fr/deballage-montage-imprimante-3d-anet-a8-b-version-2018/
- https://projetsdiy.fr/installer-firmware-skynet3d-v2-3-marlin-anet-a8-a6-a2-auto-leveling/
- https://projetsdiy.fr/reinstaller-firmware-origine-imprimante-3d-anet-a6-a8-auto-leveling-avrdude/
- Installation du capteur pour l'auto-nivellement :
- Vidéo en français de Tommy Desrochers : https://invidious.fdn.fr/watch?v=_feHI7ma2JU
- Vidéo en anglais de Breaks'n'Makes : https://invidious.fdn.fr/watch?v=uYDOZ9pUQIs et ici : https://invidious.fdn.fr/watch?v=l2B9lNi8LHE
- Réglages dans Marlin : https://marlinfw.org/docs/configuration/probes.html
Mise à jour Juin 2021 :
Pour différentes raisons, cette imprimante n'a jamais été mise en service dans l'école et il a été décidé de s'en servir pour l'année scolaire 2021-2022 dans le cadre d'un projet en sciences. Du coup, j'ai terminé son montage au mois de juin 2021 et réalisé les opérations suivantes :
- Attention au montage du plateau chauffant : la thermistance dépassant du côté sérigraphié, elle entre en collision avec la buse lors des premières couches avec un risque de casse. Il est donc impératif de monter le plateau avec le côté noir sérigraphié vers le bas !!!
- J'ai choisi la distribution Primtux6 de façon à ce que le nano-ordinateur ne soit pas que condamné qu'à piloter l'imprimante 3D 😉. Voir cet article sur l'installation : [Primtux6] Installation sur un Raspberry Pi 4.
- Il est nécessaire de mettre à jour le firmware Marlin pour bénéficier d'une sécurité accrue. Sur le site officiel https://anet3d.com/, on trouve des firmwares mais apparemment ils datent un peu pour la A8 (même si l'auto-levelling semble intégré, je n'ai pas vérifié...). Documentation pour mettre à jour le firmware :
- https://invidious.fdn.fr/watch?v=o9JQvX-zRw4
- https://all3dp.com/2/anet-a8-firmware-which-to-choose-and-how-to-change-it/
- https://projetsdiy.fr/mettre-jour-firmware-marlin-kit-imprimante-3d-reprap-anet-a8-a6-ide-arduino
- https://projetsdiy.fr/installer-firmware-skynet3d-v2-3-marlin-anet-a8-a6-a2-auto-leveling/
Procédure utilisée pour flasher le firmware de l'imprimante Anet A8 avec un Raspberry Pi 4 sous Primtux6 avec le compte "administrateur" (qui est le compte "Prof") :
- Si besoin, mettre à jour la distribution Primtux6 du Raspi avec la commande :
sudo apt upgrade
I- Installer Arduino IDE et réglage du firmware Marlin
- Récupérer et installer la version Arduino IDE pour ARM 32 bits sur le site https://www.arduino.cc/en/software (version 1.8.15 au moment où j'écris). Voir ce fil où j'explique le problème avec la version ARM 64 bits : https://forum.primtux.fr/viewtopic.php?pid=22961).
On extrait l'archive .tar.xz et on peut déplacer le dossier obtenu "Arduino-1.8.15" dans son "/home/administrateur". Ensuite on installe le programme avec la commande :
sudo /home/administrateur/arduino-1.8.15/install.sh
On lance une première fois Arduino IDE, ce qui va créer un dossier "Arduino" dans son "/home".
IMPORTANT ! Il est nécessaire de modifier le gestionnaire de cartes "Arduino AVR Boards" pour le passer de la version 1.8.3 installée à la version 1.6.23 sinon on aura des erreurs à la compilation. - On récupère les fichiers de configuration spécifiques à l'imprimante Anet A8 via le projet Skynet3D : https://github.com/thijsk/Skynet3d. On télécharge l'archive au format .zip (version 2.3.2 au moment où j'écris) et on la décompacte dans son "/home" (où un autre dossier, j'ai fait ce choix pour faciliter les explications). On se retrouve avec un dossier "/home/administrateur/Skynet3d-master". On copie les fichiers nécessaires à la communication avec la carte de l'A8 en tapant ces commandes (qui dépendent de la localisation des fichiers) :
cp -r /home/administrateur/Skynet3d-master/arduino-1.8.0/hardware/anet /home/administrateur/arduino-1.8.15/hardware/
Après cette manip, il sera maintenant possible de choisir dans Arduino IDE la carte "Anet V1.0".
Par contre, pour éviter une erreur de compilation il faut éliminer un fichier avec la commande suivante :
rm /home/administrateur/arduino-1.8.15/hardware/anet/avr/platform.local.txt
- On récupère la dernière version du code source du firmware Marlin sur le site https://marlinfw.org/meta/download/ (alternative: https://github.com/MarlinFirmware/Marlin/releases) : il s'agit de la version 1.1.9.1.zip au moment où j'écris (ne pas utiliser la 2.0.9). On extrait l'archive pour obtenir un dossier Marlin-1.1.x et on récupère la configuration de l'Anet A8 avec les commandes :
cp /home/administrateur/Marlin-1.1.x/Marlin/example_configurations/Anet/A8/Configuration_adv.h /home/administrateur/Marlin-1.1.x/Marlin/ cp /home/administrateur/Marlin-1.1.x/Marlin/example_configurations/Anet/A8/Configuration.h /home/administrateur/Marlin-1.1.x/Marlin/
Au lieu de la commande précédente, pour la sonde à induction pour l'autoleveling, on peut récupérer le fichier "configuration.h" contenu dans Skynet3D avec cette commande (je ne l'ai pas fait car le fichier est ancien et ne propose pas toutes les options de la configuration dans Marlin ci-dessus) :
cp "/home/administrateur/Skynet3d-master/SkynetV2.3.2/Configuration Profiles/Anet A8/A8- 5buttonkeypad- autolevel- front left sensor/18mm sensor/Configuration.h" /home/administrateur/Marlin-1.1.x/Marlin/
- On configure maintenant le firmware Marlin en l'ouvrant dans Arduino IDE et en modifiant certaines options dans le fichier "Configuration.h" :
- la langue "fr" (ligne 1401),
- réglage de la sonde d'auto-levelling,
- les dimensions du plateau (X en 210 et Y en 210, décalage par rapport aux endstops en X de -40 et décalage en Y de -10),
- ...
- On vérifie que la compilation se fait sans erreur et on va pouvoir téléverser le firmware dans l'imprimante.
Mais avant cela, il faut donner les autorisations d'accès aux ports USB avec cette commande (sans oublier de se déconnecter et de rouvrir la session pour sa prise en compte) :
sudo usermod -a -G dialout administrateur
Ensuite, il ne reste plus qu'à téléverser le programme dans l'imprimante (qui doit être branchée sinon le port ne sera pas reconnu).
II- Réglage de la sonde À induction
- Lors de l'installation de la sonde à induction pour l'autoleveling, j'ai dû intervertir les fils bleu et marron de la sonde pour qu'elle fonctionne (que la led rouge s'allume à l'approche d'un objet métallique).
- Pour régler l'offset qui correspond au décalage entre le point détecté par la sonde et le nez de la buse, il est nécessaire de faire un "homing" général et de régler l'offset Z à 3-4 mm via le panneau de contrôle de l'imprimante afin de pouvoir descendre en dessous du point de déclenchement de la sonde. J'ai trouvé un offset de 2 mm (que j'ai indiqué à la place de 3-4 mm réglés initialement).
- Ensuite j'ai mis à niveau mon plateau en plaçant la buse aux 4 coins et en la faisant toucher légèrement une feuille de papier en vissant/dévissant les écrous papillons du plateau.
III- Installation des applications
- Installation du logiciel Cura via le "store" même si c'est une vieille version apparemment (3.3.1.2 alors que nous sommes à la 4.9.1 actuellement) : -> ÉCHEC plantage au démarrage.
Je tente une image expérimentale https://github.com/smartavionics/Cura/releases mais qui nécessite l'ajout d'un paquet particulier :
sudo apt-get install libgles-dev
On télécharge l'image "armhf" qui est au format .AppImage et aussi l'image "mesa-armhf" pour avoir un aperçu de meilleure qualité.
On décompresse l'image mesa-armhf.tar.gz avec la commande "sudo tar xzf ........", ce qui l'installe dans notre système.
On rend l'image Cura executable pour qu'en cliquant dessus, le programme se lance. On peut créer un lanceur en récupérant l'icône Cura ici : https://github.com/Ultimaker/Cura/blob/master/icons/cura-32.png - Installation d'Octoprint pour la prise de contrôle de l'imprimante à distance via un réseau local : https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian-or-raspberry-pi-os/2337.
Il faut taper ces commandes :
sudo apt install python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential
Ensuite on lance le serveur avec :
mkdir OctoPrint && cd OctoPrint
python3 -m venv venv
source venv/bin/activate-
pip install pip --upgrade
pip install octoprint
sudo usermod -a -G tty administrateur~/OctoPrint/venv/bin/octoprint serve
Pour tester, on tape cette adresse dans son navigateur : "http://IP_RaspberryPi4:5000" et on doit obtenir des fenêtres permettant de paramétrer Octoprint.
Maintenant on peut configurer Octoprint pour un démarrage automatique avec ces commandes en se mettant dans le dossier Octoprint :wget https://github.com/OctoPrint/OctoPrint/raw/master/scripts/octoprint.service && sudo mv octoprint.service /etc/systemd/system/octoprint.service
Ensuite il faut éditer le fichier octoprint.service avec la commande :sudo nano /etc/systemd/system/octoprint.service
Et on adapte les lignes d'exécution qui dans mon cas seront :User=administrateur
ExecStart=/home/administrateur/Octoprint/venv/bin/octoprint
Il ne faut pas oublier le démarrage du script automatiquement avec la commande :sudo systemctl enable octoprint.service
Remarque on peut agir sur le démon avec les commandes :sudo service octoprint start
sudo service octoprint stop
sudo service octoprint restart
Remarque : Si l'on règle le proxy dans le navigateur Firefox, Octoprint ne fonctionnera pas !!! Il faut aller creuser ici : https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian-or-raspberry-pi-os/2337 et regarder du côté de HAProxy.
Autre solution : https://github.com/OctoPrint/OctoPrint/issues/3083.
Proxy sous Primtux : https://wiki.primtux.fr/doku.php/controle_parental#primtux2_et_primtux3.
- Installation de FreeCAD pour créer des objets 3D à imprimer (à un niveau basique pour des élèves) : À VOIR mais c'est plutôt compliqué...
Abandon de FreeCAD -> En fait, FreeCAD ne fonctionne bien apparemment que sur une version 64 bits de l'OS, or Primtux 6 est en version 32 bits et cela demanderait de compiler avec Python2...
Source pour la compilation (qui a pris tout de même plus de 3h) https://forum.freecadweb.org/viewtopic.php?f=42&t=37458&sid=6f5e72c69930e0082c58bff035da2256&start=180#p475598. Liste des commandes à taper pour la compilation :
sudo apt install build-essential libtool lsb-release cmake cmake-gui cmake-curses-gui libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-signals-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside2-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libshiboken2-dev libspnav-dev libvtk7-dev libx11-dev libxerces-c-dev libzipios++-dev occt-draw pyside2-tools python3-dev python3-matplotlib python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2uic qtbase5-dev qttools5-dev swig libsimage-dev doxygen libcoin-doc libspnav-dev
git clone https://github.com/FreeCAD/FreeCAD.git freecad-source PROBLÈME : VOIR AU BAS DE CE PARAGRAPHE
wget https://github.com/FreeCAD/FreeCAD/archive/refs/heads/releases/FreeCAD-0-19.zip
unzip FreeCAD-0-19.zip
mv FreeCAD-releases-FreeCAD-0-19/ freecad-sourcecd freecad-source
mkdir build
cd build
cmake .. -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3
Pour lancer le commande, taper cette commande :make -j4
~/freecad-source/build/bin/FreeCAD
ERREUR DE SEGMENTATION avec la version master de FreeCAD compilée (la 0.20 le 23/06/2021). D'où la récupération avec la commande wget de la version 0.19 de FreeCAD à la place : https://github.com/FreeCAD/FreeCAD/tree/releases/FreeCAD-0-19 Même problème qu'avec la version master compilée !!! - Utilisation de BlocksCAD en mode hors-ligne en lançant le fichier "index.html" de l'archive téléchargée : https://github.com/EinsteinsWorkshop/BlocksCAD
Utilisation en ligne directement : https://www.blockscad3d.com/editor/?lang=fr#
Création d'un lanceur avec cette ligne de commande :
firefox %u "file:///home/administrateur/Téléchargements/BlocksCAD/index.html?lang=fr#"
- À envisager : utiliser Minetest (version libre de Minecraft) et l'extension Meshport pour obtenir un fichier .obj/.stl à imprimer : https://content.minetest.net/packages/random_geek/meshport/
IV- Réglages dans CURA
CURA permet à la fois de générer le GCode mais permet aussi de lancer les impressions sur l'imprimante connectée en USB ou via le réseau (local ou externe) avec Octoprint. Pour une utilisation nomade (si on déplace l'imprimante dans les écoles) le plus simple sera d'imprimer via l'USB.
- Réglage du GCODE de démarrage (pour lancer par exemple l'autonivellement et purger la buse) et de fin. Pour cela, il faut aller dans les paramètres de la machine via le menu "Préférences", dans la partie "Imprimantes" et cliquer sur le bouton "Paramètres de la machine".
- GCODE de démarrage :
;GCode de démarrage pour la ANET A8 avec sonde de niveau
G28 ; Mise à zéro de tous les axes (Homing)
M140 S{material_bed_temperature} ; Commence la chauffe du plateau
M190 S{material_bed_temperature} ; Attend jusqu'à ce que la température du plateau soit atteinte
M104 S{material_print_temperature} ; Commence la chauffe de la buse et poursuit
G29 ; Lance l'autonivelage
M109 S{material_print_temperature} ; Attend que la buse soit à température avant de continuer
G1 Z15.0 F2000 ; Lève la buse
G92 E0 ; Remise à zéro de l'extrudeur
G1 X0.5 Y20 Z0.2 F5000 ; Déplacement vers la position de départ
G1 X0.5 Y200.0 Z0.2 F1500 E15 ; Trace la première ligne
G1 X0.8 Y200.0 Z0.2 F5000 ; Se déplace légèrement sur l'axe X
G1 X0.8 Y20 Z0.2 F1500 E30 ; Trace la deuxième ligne
G1 Z5.0 F3000 ; Relève un peu l'axe Z pour éviter collision plateau et faire baisser la pression dans la buse
G1 X0.8 Y15 Z0.2; Revient vers le plateau pour coller l'amas de fil avant de commencer pour nettoyer la buse
; Fin du GCode personnalisé au démarrage
- GCODE de fin :
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positioning
G1 X0 Y{machine_depth} ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed
M84 X Y E ;Disable all steppers but Z
V- Impression à partir de CURA
Une fois qu'on a découpé (généré le GCode) dans CURA, il est possible de lancer directement l'impression USB si une machine est reliée. Dès qu'on lance l'impression, on se retrouve dans l'onglet "SURVEILLER" dans CURA. Via cet onglet, il est aussi possible de piloter manuellement l'imprimante : de déplacer ses axes, de préchauffer la buse et le plateau et d'envoyer du G-Code.
Commandes G-CODE utiles (pour firmware Marlin) https://reprap.org/wiki/G-code/fr :
- G28 -> Déplacement aux origines
- G29 -> Lance un autonivellement
- M117 -> Affiche un message (M117 Bonjour les amis !)
- M104 S215 -> Règle la température de l'extrudeur à 215°C et la maintien
- M109 S215 -> Règle la température de l'extrudeur à 215°C et ATTEND qu'elle soit atteinte
- M140 S70 -> Règle la température du plateau chauffant sans attendre
- M190 S70 -> Règle la température du plateau chauffant et ATTEND qu'elle soit atteinte
- M106 S127 -> Règle le ventilateur à moitié de sa puissance (valeur de 0 à 255)
- M0 -> Mise en pause
- M18 -> Arrête tous les moteurs pour pouvoir déplacer à la main par exemple (M18 X n'arrête que le moteur pour se déplacer en X).
- M107 -> éteindre les ventilateurs
- M112 -> Arrêt d'urgence
VI- Remarques - Conclusion
- Ne pas oublier de faire une sauvegarde de la carte microSD pour ré-installer en cas de problème avec la commande (la carte est en "sdc") :
sudo dd bs=4M if=/dev/sdc status=progress | gzip > Pi4_primtux_AnetA8.img.gz
- Il faudrait adapter le firmware Marlin afin qu'il prenne en compte les 5 boutons de navigation à côté de l'afficheur LCD de l'imprimante 3D. Actuellement, si on se trompe de bouton, on revient au menu de départ.
- Regarder du côté du proxy pour Octoprint (voir plus haut).
- Il faudrait imprimer quelques "vitamines" (pièces complémentaires) qui amélioreraient l'utilisation de l'imprimante (comme un guide filament ou un support de bobine par exemple). Voir ici : https://www.thingiverse.com/search?q=anet+a8&type=things&sort=relevant
- Autres pièces à imprimer pour améliorer la machine : https://all3dp.com/fr/1/amelioration-anet-a8-upgrade-anet-a8/ :
- Support de bobine de filament au-dessus : https://www.thingiverse.com/thing:2894594
- Guide filament : https://www.thingiverse.com/thing:1764285
- Cône avec roulement pour bobine de fil (à imprimer en double) : https://www.thingiverse.com/thing:4512809
- Ne pas oublier de s'équiper d'une spatule pour décoller les pièces ainsi que de pinces à bec long pour dégager la buse, d'amas de filament éventuels, un pied à coulisse électronique pour des mesures précises, ...
- Franchement la qualité d'impression est plus que satisfaisante pour une machine somme toute très économique ! Idéal pour découvrir l'impression 3D quand on a un budget limité (même si personnellement, je préfère ma Creality Ender 3 Pro 😉 et si actuellement il doit exister une machine équivalente à la Anet A8 plus récente).