Lo Furòl

... de l'ouverture (en occitan)

Vous êtes ici : Accueil / Impression 3D / Imprimante 3D Anet A8 pilotée sous Primtux6

Imprimante 3D Anet A8 pilotée sous Primtux6

Anet A8 3 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) :

Sur le site projetsdiy.fr (merci à son auteur pour la mise à disposition des infos et aussi ses "bons plans"...) en français :

 

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 :

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

    Ensuite on lance le serveur avec :
    ~/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-source

    cd freecad-source

    mkdir build

    cd build

    cmake .. -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3

    make -j4

    Pour lancer le commande, taper cette commande :

    ~/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 personnalisé au démarrage de la Ender 3 avec Touch-MI

    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 P3 ; Lance l'autonivelage sur 9 points (au lieu de 25)

    M109 S{material_print_temperature} ; Attend que la buse soit à température avant de continuer

    G1 Z0.2 ; Désactivation Touch-Mi (Descente pour rentrer le palpeur)

    G92 E0 ; Remise à zéro de l'extrudeur

    ;G1 Z2.0 F3000 ; Relève un peu l'axe Z pour éviter collision avec le plateau chauffant

    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

    G92 E0 ; Remise à zéro de l'extrudeur

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

Anet A8 4

 

Vous êtes ici : Accueil / Impression 3D / Imprimante 3D Anet A8 pilotée sous Primtux6