ESP3D pour Marlin.png, sept. 2020

Architecture

Les liaisons séries disponibles dépendent en grande partie du microcontrôleur utilisé et de l'affectation des broches. Ce peut être en USB Natif avec une émulation de port série (SERIAL_PORT -1 dans configuration.h) , ou en sériel natif avec un adaptateur série usb sur la carte (SERIAL_PORT 0 dans configuration.h).

Mais a quoi donc peut bien servir la 2e liaison série ( SERIAL_PORT_2 dans configuration.h ) ?

On trouve sur le marché des afficheurs couleurs graphiques avec écran tactiles, qui disposent d'une interface bien plus élaborée que sur les afficheurs graphiques monochromes. Pour éviter d'embarquer le code de gestion graphique, les concepteurs ont utilisé une astuce intéressante : mettre un microcontrôleur sur l'afficheur et qui fait gérer tous les menus, et interfacer avec la carte contrôleur par une simple liaison série qui envoie du Gcode, le même que celui qui transite du PC vers l'imprimante 3D par l'USB. Du coup pas besoin de programmation spécifique dans Marlin, seulement une 2e liaison série qui se gère comme la première.

Exemple d'afficheur, gérant à la fois un mode touch screen natif, ou une émulation d'afficheur Reprap Discount Graphic Lcd Controler.. Le changement de mode s'effectue ar une pression longue sur l'encodeur. EN mode natif touch seule une liaison série est nécessaire (cable noir). En mode émulation, les 2 cables gris sont nécessaires.

BIGTREETECH-TFT35.jpg, sept. 2020

On trouve également un firmware pour ESP8266 ou ESP32 qui le dote d'une interface web assez complète pour gérer une imprimante 3D (ou une CNC) : ESP3D WebUI ( https://github.com/luc-github/ESP3D-WEBUI ). Et devinez comment l'ESP échange des données avec Marlin? Par une liaison série qui envoie également du Gcode, tout comme le LCD...

ESP01s, montée sur une carte SKR v1.4:

ESP-01-Wifi-module.jpg, sept. 2020

Mais si l'on veut connecter un afficheur graphique TFT, le Wifi ET disposer de la connexion avec le PC, le tout raccordé directement à la carte de pilotage, comment peut on faire? C'est là qu'il faut bien comprendre les possibilités... Comme il n'y a que 2 liaisons sur marlin et que l'on souhaite connecter 3 périphériques qui discutent via la liaison série (PC/Wifi/Ecran). Il va donc falloir faire des choix...

Trouver une liaison série de libre

Comme notre modification nécessite une liaison série supplémentaire dédiée à cet usage, il va nous falloir trouver une de libre.

Il faut d'abord comprendre comment votre carte de commande dialogue avec l'ordinateur quand raccordée en USB.

Par exemple, si votre imprimante est pilotée par une carte Arduino Mega2560, il n'y a pas de support USB Natif. En lieu et place, un composant réalise une conversion USB vers série et la liaison série utilisée est la 1ere liaison série disponible sur la Mega 2560 (Serial 0). Malheureusement, au moment de la conception de ces cartes, il n'avait pas été envisagé qu'une seconde liaison série puisse être nécessaire sur une RAMPS. On a quand même un peu de chance puisque la plupart des liaisons séries sont routées sur les connecteurs de fin de course. Avec un peu de réorganisation des entrées sorties il est possible de récupérer une liaison série supplémentaire. Un papier intéressant sur le sujet montre des pistes sur comment faire : https://revilor.github.io/MMU2-Marlin/RAMPSserial.html. Je ne détaillerai pas la méthodologie complète, n'étant plus équipé d'une RAMPS. C'est clairement pas plug and play, et il faut adapter la configuration des entrées sorties et le cablage pour faire fonctionner la solution. De plus, les interface wifi esp8266 étant en sortie série 3.3V, il va aussi falloir adapter les niveaux 3.3V > 5V.

Sur les cartes modernes à base de processeurs 32 bits, ces derniers supportent l'USB nativement. La première liaison série est donc fournie directement par ce biais (SERIAL_PORT -1 dans configuration.h). Très souvent une seconde liaison série (et souvent beaucoup plus) est disponible sur un connecteur dédié. Et parfois, ce connecteur est directement prévu pour brancher l'interface wifi. Dans ce dernier cas, c'est nettement plus simple.

Au passage, la configuration des affectations des liaisons série se fait dans le fichier configuration.h de Marlin 2 :

//
#define SERIAL_PORT -1 // for usb support
//
/**
 * Select a secondary serial port on the board to use for communication with the host.
 * :-1, 0, 1, 2, 3, 4, 5, 6, 7
 */
#define SERIAL_PORT_2 0 // for tft24 or 32 graphic lcd support
//
/**
 * This setting determines the communication speed of the printer.
 *
 * 250000 works in most cases, but you might try a lower speed if
 * you commonly experience drop-outs during host printing.
 * You may try up to 1000000 to speed up SD file transfer.
 *
 * :2400, 9600, 19200, 38400, 57600, 11...
 */
#define BAUDRATE 250000

Je prendrai 2 exemples

  • la Bigtreetech SKR 1.3 (17 euros!) , qui dispose d'un connecteur avec une liaison série disponible sur le connecteur AUX 1, mais ne permet pas le branchement direct de l'interface wifi car le connecteur n'est pas adapté
  • la Bigtreetech SKR 1.4 turbo (22 euros!) qui elle dispose directement d'un connecteur pour brancher la carte wifi.

Sur la SKR 1.3 un connecteur auxiliaire (AUX1) fournit cette liaison série. Quelques recherches sur le schéma ( https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/blob/master/BTT%20SKR%20V1.3/hardware/SKR-V1.3-SCH.pdf ) montrent qu'il s'agit de la liaison série zéro (TX0=P0.2 , RX0=P0.3 ), et qu'elle est partagée avec le connecteur adjacent qui va vers l'écran TFT.

Sur la SKR 1.4, le connecteur wifi reçoit une autre liaison série, la série 3 (TXD3=P4.28 , RXD3=P4.29) comme l'indique le schéma ( https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/blob/master/BTT%20SKR%20V1.4/Hardware/BTT%20SKR%20V1.4-SCH.pdf ). Le TFT est toujours branché sur la liaison série 0, comme sur la SKR 1.3.

Choix d'usage de l'imprimante.

Solution 1 :

Si on dispose d'un écran graphique (Reprap Discount Graphic LCD controler) ou non graphique (reprap discout lcd controler), pas de problème. Ces 2 écrans se raccordant via les connecteurs EXP1 et EXP2 ils ne consomment pas de liaison série. On peut donc utiliser sur la SKR SERIAL_PORT -1 pour la communication USB et SERIAL_PORT_2 à 0 (SKR 1.3) ou à 3 (SKR 1.4) pour avoir le wifi.

Les plus : On a bien l'écran, la liaison PC, et le WIfi. L'adresse IP s'affiche sur l'écran, facilitant la recherche de l'imprimante.

Les moins : Ca ne fonctionne directement sur la SKR 1.4 qui est équipée du connecteur pour l'ESP01. Sur la SKR 1.3, il va falloir faire du câblage... (nous verrons plus loin). Rien de bien méchant toutefois.

Solution 2:

Si on dispose d'un TFT24, on peut le repasser en émulation "Reprap Discount graphic LCD controler". Toute la communication passant par les connecteurs EXP1 et 2, la 2e liaison série est libre pour y raccorder le module WIfi. L'affichage sera donc beaucoup moins joli, mais au moins on aura l'affichage LCD local, le support de l'USB pour raccorder l'ordi ET le support du Wifi. On peut donc utiliser sur la SKR SERIAL_PORT -1 pour la communication USB et et SERIAL_PORT_2 à 0 (SKR 1.3) ou à 3 (SKR 1.4) pour avoir le wifi, comme dans la solution précédente.

Les plus : On a le LCD, la connection PC et le WIfi en même temps. L'adresse IP s'affiche sur l'écran, facilitant la recherche de l'imprimante.

Les moins: Le TFT24 est en mode émulé, plus de belle interface graphique et d'écran tactile. Ca ne fonctionne que sur la SKR 1.4 qui est équipée du connecteur pour l'ESP01.Sur la SKR 1.3, il va falloir faire du câblage... (nous verrons plus loin).

Solution 3:

Si on veut absolument tirer parti de l'affichage très graphique du TFT et de l'écran tactile ("Touch mode") sur un TFT24, il faudra sacrifier la communication USB avec le PC. Dans ce cas sur la SKR SERIAL_PORT 3 pour la communication Wifi et SERIAL_PORT_2 0 pour la communication avec le LCD. A noter que cette solution ne fonctionnera pas sur SKR 1.3, puisque le TFT et le connecteur AUX sont sur la même liaison série....

A noter également, que la vitesse de communication avec le TFT (à régler dans le TFT) et avec l'interface Wifi (à régler dans l'interface Web de l'ESP3D ) devront être identiques à celle choisie dans le fichier configuration.h de Marlin (dans ce billet, 250000 bauds).

Les plus : On est en mode graphique avec écran tactile et on a le wifi.

Les moins: Plus de communication avec le PC via l'USB. De plus, cela ne fonctionne que sur la SKR 1.4 qui est équipée du connecteur pour l'ESP01 avec sa propre liaison série (3). L'adresse ip de l'imprimante ne s'affichera pas sur l'écran.

Solution 4:

Si on dispose d'un TFT35, de nouvelles possibilités sont ouvertes. En effet, l'écran dispose d'un connecteur sur lequel on peut raccorder directement le module Wifi ESP01. C'est l'écran qui, grâce à un processeur plus puissant, qui "fusionne" les commandes reçues/envoyées par l'interface wifi avec son propre flux de commandes dans la liaison série qui le relie à la SKR. Dans ce cas, la configuration de la SKR sera SKR SERIAL_PORT -1 pour la communication USB et SERIAL_PORT_2 0 pour la communication avec l'écran. Le wifi ne sera donc pas déclaré dans Marlin, c'est l'écran qui s'occupera de la gestion transparente de l'interface wifi.

Les plus : L'écran TFT fonctionne en touch mode, avec le wifi, et la laison USB vers le PC. Cette solution sera également compatible SKR 1.3 et 1.4 puisque la carte wifi sera connectée sur l'écran. L'adresse IP s'affiche sur l'écran, facilitant la recherche de l'imprimante.

Les moins : Le cout de l'écran qui vaut 24 euros à lui seul contre 12 euros pour le TFT24. Ce cout est justifié par un écran plus grand et un microcontrôleur plus puissant pour gérer les multiples liaisons série.

Conclusion :

  • Seul le TFT35 permet d'avoir Wifi, écran graphique tactile et communication USB avec le PC sans perte de fonctionnalité. Il permet en outre d'ajouter la fonction Wifi aussi bien aux SKR 1.3 qu'aux SKR1.4/1/4Turbo.
  • Avec le TFT24, il faudra soit se passer de la communication avec le PC ou passer en mode émulation 12864 (reprap full graphic lcd controler) pour avoir le wifi, et encore, que sur la SKR 1.4/ 1.4/Turbo.

Préparation / programmation de l'esp8266

La plus petite carte ESP8266, la moins chère mais également la plus difficile à mettre en œuvre est l'ESP01. Il est TRES recommandé de prendre la version ESP01s qui dispose de suffisamment de mémoire pour faire tourner le firmware ESP3D complet.

Pré requis :

L'interface de programmation :

Il existe plusieurs solutions pour programmer l'ESP01. On peut utiliser une interface série 3.3V vers USB (ex : ftdi232), ou des interface plus spécialisées. Je ne détaillerai pas l'usage d'une interface série USB qui nécessite un peu plus de bidouille, mais resterai sur des interfaces dédiées à la programmation des ESP01.

L'esp01 Flasher

A 2 euros, cette interface fait une grand partie du boulot, mais pas tout :

esp01-flasher.jpg, sept. 2020

Elle adapte la liaison série sur l'USB, mais ne passe pas automatiquement l'esp01 en mode programmation. La solution la plus simple, est de souder un bouton poussoir entre la masse (GND) et IO0 (cf https://www.diyhobi.com/flash-program-esp-01-using-usb-serial-adapter/). Il faudra appuyer sur le bouton lors du branchement de l'interface sur l'USB, avant de lancer la programmation. Il peut être relâche dès que l'ESP est alimentée. Après la programmation, il faudra débrancher et rebrancher l'adaptateur pour remettre l'ESP01 en fonctionnement normal.

Vue de l'interface avec le bouton :

push1.jpg, sept. 2020

Il en existe maintenant une version avec un interrupteur à basculer, qui permet de passer en mode programmation sans avoir à souder un bouton. C'est mieux, mais nécessite toujours de faire une manipulation pour la programmation.

open-smart.jpg, sept. 2020

Ma méthode préférée, est de modifier l'ESP01 Flasher en ajoutant 2 fils. Il faut câbler le DTR (broche 14 du CH340) sur IO0 et le RTS (broche 14 du ch340) le RST du connecteur accueillant l'ESP01. Le passage en mode flash et reboot seront automatiquement gérés par le logiciel de flashage, cela deviendra transparent. Plus de bouton à appuyer! Dommage qu'ils n'aient pas pensé à le faire directement sur l'interface lors de la conception...

Version modifiée :

top.jpg, sept. 2020

bottom.jpg, sept. 2020

Bigtreetech BTT Writer :

Sur cette interface de programmation, le redémarrage et le passage en mode programmation est transparent. Il faut par contre câbler des fils (fournis) entre le flasher et l'ESP01. La manipulation est bien décrite dans le manuel : https://github.com/bigtreetech/BTT-WRITER-V1.0/blob/master/BTT%20Writer%20V1.0%20manual.pdf

La programmation du firmware

Programmation directe d'un binaire :

La façon la plus simple de programmer le firmware est de le télécharger compilé (format .bin) et de le programmer avec le Flash Download tool. C'est la méthode proposée par les fabricants chinois (comme Bigtreetech sur leur git https://github.com/bigtreetech/BIGTREETECH-SKR-PRO-V1.1/tree/master/firmware/esp-01s pour le firmware et https://github.com/bigtreetech/BTT-WRITER-V1.0/blob/master/BTT%20Writer%20V1.0%20manual.pdf + https://github.com/bigtreetech/BTT-WRITER-V1.0/blob/master/BTT%20ESP-01S%20basic%20guide-20200225.pdf pour les instructions).

Je l'ai testée, cela fonctionne, bien que cela ne soit clairement pas ma méthode préférée, car on n'a jamais la certitude de programmer la dernière version. Je met néanmoins les instructions d'utilisation du logiciel de programmation du firmware pour garder une trace et aider ceux qui souhaiteraient procéder ainsi :

  • Brancher le programmeur
  • Lancer le FDT
  • Cliquer sur "developer mode"
  • Cliquer sur "esp8266 download tool"
  • Dans l'onglet SPI Download, sélectionnez :
    • Crystal freq : 26M (defaut)
    • Spi Speed 40 Mhz (defaut)
    • SPI MODE: Dout
    • Flash Size 8Mbit for ESP01s (attention, ESP01 n'a pas 4Mbit)
    • Sélectionnez le com ou est branché l'adaptateur
    • Baudrate = 115200 (defaut)
    • Dans la liste de fichier, dans le 1er, mettre aller chercher esp3d.bin
  • Flashing

Compilation et programmation à partir de Visual studio Code :

La meilleure façon pour disposer de la dernière version du firmware est d'installer Visual Studio Code, l'extension Platformio, et de télécharger ou cloner (git clone https://github.com/luc-github/ESP3D/ ) le projet https://github.com/luc-github/ESP3D/. J'ai expliqué la manip d'installation de platformio sur un autre article de ce même blog.

Ensuite dans l'explorateur windows, sélectionnez le dossier "ESP3D" ainsi récupéré avec le bouton de droite et faire "Open With Code".

Dans Visual studio code, il va vous falloir ouvrir le fichier "platformio.ini", afin de préciser que vous voulez compiler pour un ESP01 (voir 1). Il suffit pour cela de mettre :

default_envs = esp01s_80mhz

Branchez votre programmateur en USB avec l'ESP01s raccordée dessus (après avoir appuyé sur le bouton poussoir pour le passer en mode programmation si ce n'est pas automatique), et cliquez sur le menu platformio (2). Dans les taches, cliquez sur "Upload All" (3) qui va compiler et programmer l'ESP01.

2020-09-25 11_26_09-platformio.ini - ESP3D - Visual Studio Code.png, sept. 2020

En moins d'une minute, votre ESP8266 est programmée !

La configuration du firmware

A ce stade, le firmware est programmé et vous devriez vous dans votre voisinage Wifi un nouveau point d'accès nommé "ESP3D". Connectez vous dessus avec le mot de pase "12345678". Vous devriez être redirigé sur une page web du portail captif. Si ce n'est pas le cas, ouvrez une page web sur http://192.168.0.1.

Il vous faudra envoyer sur le firmware avec l'interface web fournie les éléments du sous répertoire data de ESP3D (si vous l'avez compilé) ou récupérés de https://github.com/luc-github/ESP3D/tree/2.1.x/esp3d/data si vous l'avez flashé à l'aide d'un binaire récupéré déjà compilé.

L'élément le plus important des trois est index.html.gz. C'est ce fichier qui contient toute l'interface. favicon.ico et 404.htm sont optionnels mais ne prennent que peu de place.

Au passage, c'est la même interface qui est utilisée sur GRBL sur Esp32, décrit dans un autre article de ce blog.

A ce stade, vous pourrez également passer dans les settings pour paramétrer le Wifi sur votre point d'accès personnel (SSID, mot de passe et si possible une adresse ip fixe), paramétrer la langue et surtout le firmware de base de l'imprimante pour dire qu'on souhaite travailler avec Marlin et sa vitesse (250000).

Après redémarrage(débranchez et rebranchez l'usb...) vous devriez pouvoir vous connecter à l'adresse ip que vous avez paramétré sur votre réseau local. Le point d'accès " ESP3D" ne devrait plus être visible, tant que l'ESP8266 arrive à se connecter dans votre réseau local en Wifi. Dans le cas ou la connexion échouerait, il redeviendrait actif (comportement par défaut).

Rappel: Pour le moment, nous sommes toujours branchés sur l'interface de programmation, qui fournit l'alimentation et la conversion série, mais ne permet que de dialoguer avec le PC. Maintenant que le wifi est prêt, il va nous falloir préparer la carte de pilotage de l'imprimante et son firmware pour recevoir le Wifi...

Paramétrage de Marlin

Le paramétrage de Marlin s'effectue dans le fichier configuration.h. Comme le paramétrage général a déjà été abordé dans un autre article pou rune SKR 1.3 (https://www.civade.com/post/2019/07/10/Mise-%C3%A0-jour-d-un-clone-d-Ultimaker-1-avec-Marlin-2-SKR-1.3-TMC2130 ), il ne sera pas détaillé ici.

Les 2 directives concernées sont SERIAL_PORT et SERIAL_PORT_2. Il est conseillé de mettre la vitesse du port à 250000 bauds avec #define BAUDRATE 250000 .

En fonction de la carte choisie, le nombre de ports série peut changer. Sur les SKR 1.3 ou 1.4, qui disposent d'un processeur LPC1768 ou LPC1769, il peut y avoir jusqu'à 3 liaisons série. Aux chapitres précédents nous avons appris à comprendre comment choisir une configuration qui satisfasse les caractéristiques matérielles et les attendus.

Sur SKR 1.4

Je vais partir sur un cas ou je veux le Wifi, la série USB pour brancher sur l'ordinateur et un afficheur LCD en mode émulation. Ceci nous donnera donc :

#define SERIAL_PORT -1 // support du port série sur l'USB
#define SERIAL_PORT_2 3 // support du wifi sur le connecteur spécifique de la carte.
#define BAUDRATE 250000
#define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO
..
#define EEPROM_SETTINGS
#define SDSUPPORT
#define INDIVIDUAL_AXIS_HOMING_MENU
#define SPEAKER
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Malheureusement, il y un bug dans le framework Arduino sur LPC qui empêche d’utiliser le port série 3 sur les bonnes broches. Pour le corriger, je vous recommande de faire une première compilation, qui va télécharger tous les éléments requis du framework, puis ensuite d'éditer les fichiers suivants (coller le chemin avec la variable %homepath% dans la barre d'adresse de l'explorateur de fichiers...) :

  • %HOMEPATH%\.platformio\packages\framework-arduino-lpc176x\cores\arduino/HardwareSerial.h
  • %HOMEPATH%\.platformio\packages\framework-arduino-lpc176x@0.1.3\cores\arduino/HardwareSerial.h

Dans ces deux fichiers, il faut rechercher le texte else if (UARTx == LPC_UART3) et modifier en dessous comme suit:

} else if (UARTx == LPC_UART3) {
// Initialize UART2 pin connect
PinCfg.Funcnum = 3; //was 1
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = 28; //was 0
PinCfg.Portnum = 4; //was 0
PINSEL_ConfigPin(&PinCfg);
PinCfg.Pinnum = 29; // was 1
PINSEL_ConfigPin(&PinCfg);
}

A noter que cette manipulation est nécessaire à l'heure de l'écriture de cet article. Toutefois, il semblerait que le bug ait été pris en compte par les développeurs et que les futures versions de l'environnement de compilation Arduino pour LPC176x prévoient que l'affectation du port série 3 soit configurable. La directive qui sera à ajouter dans Platformio.ini sera -DLPC_PINCFG_UART3_P4_28 dans les build_flags de common_LPC .

Bien sur il faudra préciser le processeur à utliser dans le fichier plaformio.ini (default_envs = LPC1769 pour SKR 1.4 Turbo, et default_envs = LPC1768 pour SKR 1.4). Après recompilation et flashage du programme, Marlin devrait communiquer avec l'interface Wifi. Il est temps de la monter dans le connecteur réservé à cet effet !

Sur SKR 1.3

Ici, nous allons choisir d'avoir le série sur le port USB actif, un afficheur LCD en mode émulé (ou un reprap discount graphic lcd controler), et la liaison wifi branchée à la place de l'écran TFT, puisque je le rappelle il n'y a pas d'autre liaison disponible que la Serial 0 sur cette carte.

#define SERIAL_PORT -1 // support du port série sur l'USB
#define SERIAL_PORT_2 0 // support du wifi sur le connecteur du lcd tft ou AUX 1.
#define BAUDRATE 250000
#define MOTHERBOARD BOARD_BTT_SKR_V1_3
..
#define EEPROM_SETTINGS
#define SDSUPPORT
#define INDIVIDUAL_AXIS_HOMING_MENU
#define SPEAKER
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Ici, pas besoin de modifier l'environnement Arduino, puisque la liaison série zéro est parfaitement supportée. Par contre, il va falloir faire un peu de cablage pour raccorder l'ESP01s à la SKR 1.3.

Bien qu'en russe, un tuto avec des belles images explique bien la manip : https://3dtoday.ru/blogs/bublegum/bigtreetech-skr-v13-esp-01s-prostoy-sposob-podklyuchit-wifi .

Il faudra préciser le processeur à utiliser dans le fichier plaformio.ini (default_envs = LPC1768 pour SKR 1.3) avant de recompiler le projet et de l'envoyer sur la carte.

Tests

Il y a plusieurs moyens de vérifier que la communication avec la carte Wifi est fonctionnelle. Lorsque l'on est en affichage émulé ou connecté à un reprap discount graphic lcd controler, dès la communication wifi établie, l'afficheur montre l'adresse ip associée à la carte :

IMG_2706.JPG, sept. 2020

Une autre façon de le vérifier, ou si on est en mode tft, est de passer par l'interface wifi elle même. Comme nous l'avons testée avant, associée dans notre réseau, nous en connaissons l'adresse.

Il suffit donc de se connecter dessu avec un navigateur web, cliquer sur "imprimante" (1), l’icône de rechargement des valeurs de configuration (2) et ces valeurs devraient s'afficher en dessous (3).

2020-09-26 05_35_11-Marlin2skr1.4turbo - [C__Users_jpcivade_Documents_PlatformIO_Projects_Marlin2skr.png, sept. 2020

Conclusion

L'article est long car je ne voulais pas faire un simple tuto, ou on execute pas à pas, on ne comprend pas ce qu'on fait, et si cela marche, on ne sait pas vraiment pourquoi. J'espère que la méthodo complète permettra à d'autres d'adapter à leur propres cartes ou besoins.

A noter que ESP3D supportant aussi d'autres firmwares comme Smoothieware, GRBL ou Repetier (en le configurant dans "Enregistrez le firmware de base de l'imprimante"), il devrait être facile d'adapter à votre propre besoin.

Fixups

Si sur le LCD de l'imprimante l'adresse de l'imprimante n'apparait pas, c'est peut être que l'ESP met moins de temps à se resetter que Marlin, surtout sur les cartes à bases de LPC176x. En effet, le microcontrôleur vérifie sur la car SD si il n'y a pas de mise à jour, ce qui peut prendre du temps..

C'est assez facile à corriger sur le firmware ESP3D, en ajoutant un délai avant connexion du port série. Cela se fait dans esp3d.ino, il faut remplacer

void setup()
{
    myesp3d.begin();
}

Par

void setup()
{
    myesp3d.begin(15000); // jpc wait 15 seconds
}