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
> 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.
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?
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).
>> 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.
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.
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
Ich bezweifle, dass der EEPROM groß genug sein wird für den gcode.
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.
Ε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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.