Forum: Mikrocontroller und Digitale Elektronik Grundsätzliche Frage zum ESP8266 und Dateitransfer


von Andreas F. (andgset)


Lesenswert?

Hallo liebes Forum

Problem:
Mein 3D Drucker bekommt seinen gcode mittels SD-Karte, wäre aber schön 
wenn wireless.

Idee:
Mittels µC oder ESP8266 Controller eine SD Karte simulieren und den 
gcode via WLAN an das ESP8266 senden, dort in den EEPROM schreiben und 
ihn anschließend als SD-Karte "getarnt" via SPI an den Druckercontroller 
senden.

Bevor ich mich ins ESP8266 einlese würde ich gerne wissen ob

a) der Ansatz zielführend ist und
b) das ESP8266 grundsätzlich für die Aufgabe geeignet ist.

Falls ja, wie bringe ich den gcode in den EEPROM? Per GET request? Ich 
kann zwar gut C und halbwegs Java und ein bischen HTML, aber Server und 
IP Geschichten sind Neuland, daher wäre ich dankbar für einen groben 
Fahrplan.

Mir ist klar dass es Wireless-SD-Karten gibt, aber ich habe bald 
Semesterferien und würde gerne ein bischen basteln.

Liebe Grüße, Andreas

von Stefan F. (Gast)


Lesenswert?

> Wie bringe ich den gcode in den EEPROM?

Das ist der einfache Teil. Mach Dir lieber mal Gedanken, wie dein ESP 
Chip eine SD Karte simulieren soll, während er gleichzeitig mit einem 
Flash Speicher verbunden ist.

Hast du eine grobe Vorstellung davon, wie eine SD Karte funktioniert? 
Wenn nicht, dann vergiss es besser.

von Andreas F. (andgset)


Lesenswert?

Stefan U. schrieb:
> Das ist der einfache Teil.

Bitte erleuchte mich.

Stefan U. schrieb:
> Hast du eine grobe Vorstellung davon, wie eine SD Karte funktioniert?

Wenn Du so frägst wahrscheinlich nicht. Ich war bisher der Meinung man 
könne die SD-Karte im SPI Mode als externen Flash betrachten. Demnach 
ist von Seiten des ESP Moduls ein SPI Interface zu implementieren, das 
für den Master aussieht wie eine SD-Karte?

von c-hater (Gast)


Lesenswert?

Andreas F. schrieb:

> Mittels µC oder ESP8266 Controller eine SD Karte simulieren

Das ist nicht einfach. Für Leute, die so fragen wie du, ist sogar 
ziemlich unmöglich.

Schuster, bleib bei deinen Leisten. Es ist dir ganz offensichtlich nicht 
gegeben, etwas anderes als Schuster zu sein.

Bleib' bei deinem Arduino-Scheiss (du hast ihn wohl absichtlich nicht 
erwähnt, sonst hätte ja jeder sofort erkannt, wo die Säge klemmt).

von Stefan F. (Gast)


Lesenswert?

>> Das ist der einfache Teil.
> Bitte erleuchte mich.

Der ESP8266 ist in erster Linie ein Mikrocontroller für WLAN 
Kommunikation. Das SDK des Herstellers enthält einen TCP-IP Stack. Im 
Arduino Framework (welches darauf aufbaut) findest du wiederum eine 
Klasse und Beispielprogramme für HTTP Server und andere 
Netzwerk-Protokolle.

Aber diese SD-Karten Simulation musst du vermutlich komplett selbst 
entwickeln, falls das überhaupt möglich ist. Ich habe da so meine 
Zweifel, denn SD Karten sind komplex Computer mit eigener CPU und 
geheimer Firmware und sie werden mit hohen Bitraten getaktet.

Die SDIO Schnittstelle überlappt sich mit der Schnittstelle für den 
Flash Speicher. Soweit ich weiß kann man nicht beides gleichzeitig 
anschließen. Also müsstest du eine SD-Karte durch Bit-Banging mit 
"normalen" GPIO Ports emulieren.

von Dirk D. (dicky_d)


Lesenswert?

Hast du dir schon Octoprint (evtl. in Form von Octopi) angeguckt?
Das läuft Stabil.

Wenn das keine Option für dich ist würde ich trotzdem nicht die SD-Karte 
Simulieren.
Stell dir vor was das für ein Drama wird wenn das gelegentlich nach 2 
Stunden Druck absäuft...

Es gibt da den Ansatz nen ESP als Wireless serielle Schnittelle zu 
nutzen.
Darüber direkt zu Drucken ist dann auch relativ Wackelig, aber je nach 
Firmware (Marlin oder Repetier laufen ja eigentlich überall) kannst du 
dann Das file auf die SD-Karte übertragen, das Dauert allerdings ein 
wenig.

von Timmo H. (masterfx)


Lesenswert?

Schau dir mal ESP3D an. Macht eigentlich genau das. Der Upload zur 
SD-Karte wird dann dann über Marlin gemacht. Ne WebUI gibts auch
https://github.com/luc-github/ESP3D

von Martin (Gast)


Lesenswert?

Ich bezweifle, dass der EEPROM groß genug sein wird für den gcode.

von Εrnst B. (ernst)


Lesenswert?

1. Idee:

Es gibt (für Foto gedacht) SD-Karten mit WLan. Da sitzt ein kompletter 
Linux-Rechner in der SD-Karte. Dem kannst du auch eigene Software 
verpassen.

2. Idee:

Nimm eine 08/15 - SD-Karte, verbinde die so mit deinem Drucker und dem 
ESP, dass du (per ESP-GPIO) "umschalten" kannst, wer die grad benutzen 
darf.

Dann kannst du per ESP "hochladen", auf Drucker umschalten, und er kann 
das File verarbeiten.
SD-Karte mit ESP beschreiben ist kein Problem, gibt libraries dafür.

von Andreas F. (andgset)


Angehängte Dateien:

Lesenswert?

Εrnst B. schrieb:
> 2. Idee:
>
> Nimm eine 08/15 - SD-Karte, verbinde die so mit deinem Drucker und dem
> ESP, dass du (per ESP-GPIO) "umschalten" kannst, wer die grad benutzen
> darf.
>
> Dann kannst du per ESP "hochladen", auf Drucker umschalten, und er kann
> das File verarbeiten.
> SD-Karte mit ESP beschreiben ist kein Problem, gibt libraries dafür.

Erstmal vielen Dank für die Antworten und Anregungen! Diese Idee gefällt 
mir sehr gut! Interessant wie man manchmal den Wald vor lauter Bäumen 
nicht sieht.

Dann wirds wohl auf obigen Aufbau rauslaufen, schön modular und 
wiederverwendbar.

Nun stellt sich mir noch die Frage "wie" man den gcode vom Rechner ins 
ESP bekommt. Wäre für ein, zwei Stichworte zum Thema sehr dankbar. 
Konkret verwirrt mich der Übergang von HTML zu C Code, wie komme ich im 
C Code des ESP an die Datei, die ich vermutlich mittels einer vom ESP 
gehosteten Website ans ESP sende? Meine unbeholfenen Ausführungen hierzu 
unterstreichen wohl die momentane Ansatzlosigkeit..

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Schau Dir das Kapitel 10 an:
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf

Und dann hier das Kapitel 13 und 13.1 (ab 13.2 wird's wieder Off-Topic):
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf

Falls du meine allgemeine Info Sammlung zu diesem ESP8266 noch nicht 
gefunden hast, guck auch dort mal rein:
http://stefanfrings.de/esp8266/index.html

Ich denke, diese Infos werden Dir helfen, erste Versuche zu unternehmen 
und dann konkretere Fragen zu stellen.

Für reine Datei-Uploads per Web Browser gibt es auch eine Spezifikation, 
aber die ist nicht einfach umzusetzen. Deswegen würde ich dazu raten, 
die Daten einfach 1:1 im HTTP Body zu senden. Irgendwie musst du noch 
überprüfen, ob sie vollständig empfangen wurden, denn 
Netzwerkverbindungen brechen gelegentlich vorzeitig ab.

von Pete K. (pete77)


Lesenswert?

Welcher Drucker? Welche Steuerung?

von Andreas F. (andgset)


Lesenswert?

Morgen zusammen,

die bisherigen Infos waren sehr hilfreich. Bis jetzt wurden eine 
Startseite zum konfortablen Einloggen ins lokale WiFi Netzwerk gebastelt 
und das Hochladen kleiner Dateien und anschließende Schreiben in die SD 
Karte funktionieren ganz gut. Hilfreich waren außerdem die Tutorials 
hier:

https://tttapa.github.io/ESP8266/Chap10%20-%20Simple%20Web%20Server.html

Neues Probelem: Nach bisherigem Ansatz werden die Dateien zuerst ins RAM 
des ESP geladen und von dort auf die SD Karte kopiert. Das wird nun 
spätestens zu Problemen führen wenn die Dateien größer als die RAM Größe 
werden. Soweit ich bis jetzt rausgefunden habe gibt es seit HTML 5 eine 
Standard API für files die mit der slice() Methode eine Möglichkeit zum 
clientseitigen zerhackstückeln der Dateien bietet.

Frage: Geht das einfacher?

Grüße, Andreas

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

vielleicht hilft es Dir etwas.
Im Anhang meine schon etwas ältere Webserver-Spielwiese.
in data/config.txt die WLAN-Daten eintragen oder in den Sketch eintragen 
und die config.txt erstmal löschen bzw. umbenennen.
Auf einen ESP8266-12 oder eine NodeMCU flashen und testen.
Es sind nur von mir genutzte Testseiten, Sensordaten sind natürlich hier 
Dummywerte.
In der config.html ist auch meine Dateiverwaltung incl. Upload.
Alle Daten des Webservers sind im SPIFFS. Bei Up- und Download sollte 
nur der Platz im SPIFFS begrenzen, bei den Webseiten mit 
Replace-Funktionen ist bei ca. 6kB Schluß, weil da die genutzten 
Stringfunktionen zuviel temporäre Buffer nutzen. Hat bei mir aber 
gereicht.

Wenn es hilft oder Fragen gibt, melde Dich einfach.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Dein ESP empfängt die Datei doch ohnehin in vielen kleinen Stücken 
(Ethernet Pakete). Niemand hindert dich daran, jedes Paket einzeln zu 
speichern. Die Datenübertragung wird automatisch langsamer, wenn nötig, 
dass ist ja der Sinn von TCP.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.