Wlan für den 3D-Drucker: ESP3D mit ESP01 am RAMPS 1.4 mit Repetier Firmware

Wie man ESP3D als Wlan-Erweiterung für den 3d-Drucker mit repetier-firmware aufsetzt.
Heute im Schnelldurchlauf stichpunktartig.
Los gehts:

esp3d
Kaufen:

  • esp-01 schwarze Platine (1Mbyte Fash, die blauen haben nur 0,5MB)
  • esp-01 Adapter -> Pegelwandler 3,3V/5V
  • esp-01 Programmer (es geht auch ein normaler Usb-seriell-wandler mit 3,3V Logikpegel und eine 3,3V spannungsversorgung, ESP ist nicht 5V-tolerant!)
  • Stiftleisten und Dupont-Kabelbrücken

Danach:Brücke am USB-Programmieradapter nachrüsten GPIO0 nach GND für Programmiermodus

Installieren:Arduino 1.8.3 für Linux, Boardverwalter-URL, ESP8266 4.1
Ordner $home/Arduino/tools anlegen
ESP8266FS herunterladen und nach $home/Arduino/tools/ESP8266FS/tool/esp8266fs.jar entpacken
esp3d 1.00 (enthält web-gui 1.0) oder aktuelles release
https://github.com/luc-github/ESP3D/releases
release nach $home/Arduino entpacken
/ESP3D-1.0/esp3d/esp3d.ino öffnen

Arduino-IDE starten und folgendes einstellen:

Board „generic esp8266“ auswählen
flashmode: QIO
flashsize: 1M(144k)
crystal: 26Mhz
flash: 40Mhz
CPU: 160Mhz
Builtin LED: 2
wenn vorher etwas anderes auf dem ESP war im zweifelsfall „Erase Flash: all flash contents“ wählen (Bei späteren updates nur die firmware überschreiben)
ESP01 auf den programmer stecken
Programmer an USB anstecken
ggf. mit sudo dmesg in der Konsole nachsehen welches USB-Device dazukam (/dev/ttyUSB0)
Port in arduino IDE einstellen

Sketch uploaden
Programmer abziehen und wieder anstecken

->Werkzeuge: ESP8266 Sketch Data Upload ausführen
(wenn man das vergisst hat der Webserver keine Webseite/index.html)

Programmer vom Usb abziehen und ESP01 auf ESP01 Adapter umstecken
5V anlegen und 15 Sekunden warten.
Wenn kein Wlan-device namens ESP3D auftaucht nochmal neu flashen

Wenn Wlan-device auftaucht mit diesem Verbinden und Erstkonfiguration durchführen. (Die hier eingegebenen Parameter kann man später noch ändern). Es ist sinnvoll den ESP ins eigene Wlan zu integrieren.
Der Wlan-schlüssel des inititalen Wlans ist 12345678
Es erfolgt dann eine Umleitung über captive portalseite zum ESP3D Webserver. (wenns funktioniert). Alternativ manuell http://192.168.0.1 öffnen (manchmal ist es ein anderer Adressbereich, dann z.b. mit Android und fffing app das Netzwerk scannen um die richtige IP herauszufinden, oder die eigene Adresszuweisung anzeigen und die Gatewayadresse verwenden)

Über die Einrichtungsseite kann das Wlan im ESP auf Clientmodus umgestellt werden, und der WPA-Schlüssel eingegeben werden. Nach einem Neustart wird der ESP dann Teilnehmer im Lokalen Wlan-Netzwerk.

Jetzt Firmware vom Drucker anpassen:
-> repetier fw
-> configuration.h
„define BLUETOOTH_SERIAL“ von -1 (aus) auf 2 ändern.
Baudrate setzen. ich empfehle 115200. 230400 hatte bei meinen Geräten nicht funktioniert, 250000 hat funktioniert. Schneller ist im Prinzip besser fürs hochladen von Gcode auf die SD-Karte über Wlan. In der Praxis macht es kleinen großen Unterschied.
Diese Baudrate ist nur für die Schnittstelle zum ESP und ändert nicht die Baudrate auf dem USB-Seriell-anschluss, da es sich dort um ein anderes UART im Atmega handelt.

Drucker-arduino neu flashen

Aux4 pin 18 und 17 und 1 und 2:
Pin 1: +5V
Pin 2: GND
Pin 17: TX-Leitung vom esp01-adapter
Pin 18: RX-Leitung vom esp01-adapter

Wenn hier der „smart adapter“ vom Display bereits aufsteckt, dann auf den den Adapter oben auf die 4 Lötstellen noch Pinleisten auflöten. (Bei angestecktem Display bitte erst mal bis zu Ende lesen)

esp3d
esp3d

Repetier host konfigurieren
->konfiguration->druckereinstellung

  • Vorhandenes Setup auswählen. neuen Namen eintragen, z.b. esp3d-drucker (speichert eine Kopie des aktuellen Druckerprofils unter neuem Namen)
  • Verbindungsart TCPIP wählen, ip-adresse des esp01 eintragen. (am besten feste ip im esp01 verwenden)
  • port: 8888
  • transferprotokoll: ASCII (!)
    repetier protokoll ist nicht plain ascii und wirft fehler bei der verbindung, weil esp3d zwar transparentes seriell macht, aber nur für plaintext. binärdaten werden nicht transparent übertragen.
  • empfänger cachegröße: 63 (!)

speichern->ok.

Mit Drucker über Wlan verbinden und freuen.
Es darf nur entweder Wlan ODER Usb verwendet werden, sonst gibts Verluste auf der Verbindung.

Nachtrag: der ESP8266 braucht Strom zum arbeiten. Das belastet die 5V Rail in der Druckerelektronik zusätzlich. Der originale AMS1117 ist eh schon überlastet wenn am RAMPS noch ein Smartcontroller angeschlossen ist. Sollte das Arduino mega2560 noch keine externe 5V versorgung bekommen haben, dann ist jetzt der richtige Zeitpunkt dazu.

was noch so schief ging:

    • die Arduino-IDE findet die eigenen Libs für den esp8266 unter Windows (xp) nicht, weil in der deutschen Lokalisierung die Pfadnamen zu lang sind „c:\Dokumente und Einstellungen\..“
    • der Esp01-adapter den ich zuerst verwendete war kaputt: auf der Leiterplatte fehlte eine Durchkontaktierung.
    • Die Doku des esp3d ist falsch, was den Anschluss am Ramps anbelangt. Auf den markierten Pins sitzt bereits der USB-anschluss und belegt die Schnittstelle. (Ja man kann da stumpf mit drauf gehen, und wenn der Seriell-pegelwandler niederohmiger ist als die Schutzwiderstände am Usb-seriell-wandler auf dem Arduino-mega-board, dann setzt er sich durch mit seinen Pegeln… nur weil das vielleicht funktioniert, ist es aber trotzdem scheiße)
    • Der Upload der GUI über die Web-upload-funktion auf dem leeren Webserver in form der index.html.gz datei schlug fehl (aktueller firefox) und der Webserver machte irgendwelchen Murks oder war dann gar nicht mehr erreichbar. Die hochgeladene 70 kbyte große Datei wurde zunächst direkt nach dem Upload als 2kb angezeigt und dann nach wenigen Sekunden gar nicht mehr. Ich habe dann in der Arduino-ide die Erweiterung „ESP8266 Sketch Data Upload“ installiert und es damit gleich beim programmieren mit aufgespielt. Das hat gut funktioniert.
    • Das auf einem extra dafür gekauften Programmer die brücke nicht vorhanden ist um den Esp in den Programmiermodus zu versetzen muss einem auch erst einmal erklärt werden.
    • ältere Versionen von ESP3D lassen sich in Arduino 1.8.3 mit esp2.2 oder 2.4 nicht bauen
    • richtige Datenblätter für den esp8266, wo z.b. auch mal steht wieviel Strom ein GPIO „sourcen oder sinken“ kann, sind nicht so leicht zu finden (ich hatte aufgegeben)
    • RAMPS verwendet die uart2-pins D16 und D17 nicht, leider stellt sich aber heraus das das fullgraphic-smartcontroller Display da zwei Leitungen drauf hat.
    • nach einem Update von repetier 0.92.8 auf 1.0(.1, .2, .3) ist das Uart 2 in der firmware kaputt. Ich habe im repetier-supportforum einen Bugreport dazu angelegt, aber nach Monaten noch keine Reaktion dazu bekommen.
      https://forum.repetier.com/discussion/5317/second-uart-for-bluetooth-isnt-working-after-upgrade-from-0-9-2-to-1-0-1

Nachtrag:
Fullgraphic Smartcontroller mit ESP3D am UART2 unter repetier fw 0.92 gemeinsam betreiben
Leiterbahnen D17 und D16 unterbrechen

esp3d

esp3d

Brücken zu D39 und D43 löten
esp3d

esp3d

Leider ist das Foto unscharf, der Zettel von vor Monaten war jetzt aber nicht mehr lokalisierbar.

repetier firmware 0.92.
Datei ui.h
abschnitt ramps
pins neu zuordnen. (pinnummern und Zeilennummern siehe auch im verlinkten bugreport)

 

Viel Erfolg!

2 Gedanken zu „Wlan für den 3D-Drucker: ESP3D mit ESP01 am RAMPS 1.4 mit Repetier Firmware“

  1. Hi,

    hast du das ganze noch im Einsatz – wie wäre dein Fazit?

    Was du bist jetzt rausgefunden hast klingt ja nicht so prickelnd

    LG,
    Joerg

  2. Servus,

    hab ebenfalls gerade mit dem UART Thema in der aktuelle V1.0.3 Version gekämpft.

    Um meinen Display Adapter nicht umbauen zu müssen verwende ich UART 1. D.h hier sind am RAMPS Board die Pins Z-Min(Tx) und Z-Max(Rx) für die Serielle Schnittstelle zu verwenden. Die enstprechenden Endstops müssen also umverkabelt werden. In meinem Fall habe ich den Anschluss X-Max für meinen Z-Min Endstop verwendet … der war noch frei.

    So wie du beschrieben hast gibts anscheinend einen Bug in der FW der den zusätzlichen UART nicht initilisiert.

    Mit folgender Zeile in Hal.h startet bei mir die zweite Schnittstelle korrekt:

    Hal.h:

    593 static inline void serialSetBaudrate(long baud)
    594 {
    595 RFSERIAL.begin(baud);
    596 RFSERIAL2.begin(baud); // start uart2
    597 }

    Vielleicht hilft das ja jemand bis Repetier das in seiner FW gefixt hat.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert